diff options
Diffstat (limited to 'tde-i18n-pt/docs/tdevelop')
40 files changed, 25819 insertions, 0 deletions
diff --git a/tde-i18n-pt/docs/tdevelop/Makefile.am b/tde-i18n-pt/docs/tdevelop/Makefile.am new file mode 100644 index 00000000000..6869837a64a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt/docs/tdevelop/Makefile.in b/tde-i18n-pt/docs/tdevelop/Makefile.in new file mode 100644 index 00000000000..4ec464e60a2 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdevelop +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kde_app_devel tdevelop kdearch +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdevelop/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @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 + +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: + +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 Makefile.am + +#>+ 2 +docs-am: + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.am b/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.am new file mode 100644 index 00000000000..6869837a64a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.in b/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.in new file mode 100644 index 00000000000..d61e5e3fc32 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kde_app_devel/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdevelop/kde_app_devel +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kde_app_devel/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @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 index.docbook ; 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 index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kde_app_devel/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.cache.bz2 b/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..3dafe98342b --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.cache.bz2 diff --git a/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.docbook b/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.docbook new file mode 100644 index 00000000000..9dfaa40eaff --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kde_app_devel/index.docbook @@ -0,0 +1,1878 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY tdevelop "<application +>KDevelop</application +>"> + <!ENTITY kappname "&tdevelop;"> + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Portuguese "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>O Manual de Programação do &tdevelop;</title> + +<date +>2002-12-05</date> +<releaseinfo +>2.0</releaseinfo> + +<authorgroup> +<author +><firstname +>Ralf</firstname +> <surname +>Nolden</surname +> <affiliation +><address +><email +>Ralf.Nolden@post.rwth-aachen.de</email +></address +></affiliation> +</author> +<author +><firstname +>Caleb</firstname +> <surname +>Tennis</surname +> <affiliation +><address +><email +>caleb@aei-tech.com</email +></address +></affiliation> +</author> +</authorgroup> + +<copyright> +<year +>1999</year> +<holder +>Ralf Nolden</holder> +</copyright> +<copyright> +<year +>2002</year> +<holder +>Caleb Tennis</holder> +</copyright> + +<!-- ROLES_OF_TRANSLATORS --> + +<legalnotice +>&FDLNotice;</legalnotice> + +<abstract> +<para +>O Guia de Utilizador para o Desenho de Aplicações em C++ para o Ambiente de Trabalho K (KDE) com o IDE &tdevelop;</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KDevelop</keyword> +<keyword +>IDE</keyword> +<keyword +>desenvolvimento</keyword> +<keyword +>programação</keyword> +</keywordset> + +</bookinfo> + +<chapter id="chapter1"> +<title +>Introdução</title> +<para +>À medida que os Sistemas Unix se tornam cada vez mais populares, até para principiantes no uso de computadores, devido às suas vantagens no que toca à estabilidade e funcionalidade, muitas pessoas ficam desiludidas, porque muita aplicações não tem uma aparência consistente e cada uma se comporta de uma forma diferente. Com o KDE, as equipas de desenvolvimento tem um modo quase perfeito de criar aplicações para estações de trabalho Unix, obtendo um maior comunidade de utilizadores meramente devido à qualidade das suas aplicações. Desta forma, o KDE tem-se tornado cada vez mais popular como base de programação, e os programadores querem tomar partido das possibilidades que o sistema tem para oferecer. </para> + +<sect1 id="c1s1"> +<title +>O que já deve saber</title> +<para +>Para utilizar este manual de programação da melhor forma possível, assumimos que já está familiarizado com a linguagem de programação C++; se não, deve aprendê-la primeiro. Informações acerca do C++ está disponível através de várias fontes, quem em formato impresso na sua livraria local, quer em tutoriais que pode encontrar na Internet. Não são necessário conhecimentos de desenho de Interfaces Gráficas de Utilizador, uma ver que este manual tenta cobrir o desenho de aplicações KDE, o que também incluí uma introdução ao Qt bem como às bibliotecas KDE e ao desenho de Interfaces de Utilizador. Também, deve aprender a utilizar o &tdevelop;, lendo o Manual de Utilizador do &tdevelop;, que contém uma descrição das funcionalidades do ambiente de programação. </para> +</sect1> + +<sect1 id="c1s2"> +<title +>Acerca deste Manual</title> +<para +>Esta manual foi escrito para dar ao programadores um introdução ao desenvolvimento de aplicações KDE utilizando o Ambiente Integrado de Desenvolvimento KDevelop. </para> +<para +>Os capítulos seguintes começam por uma introdução como criar projectos, explicam o código fonte já gerado e mostram como extender o código dado com barras de ferramentas, barras de menu e áreas de visualização. </para> +<para +>Em seguida o editor de diálogo é discutido em detalhe, explicando como os 'widgets' são criados e cobre a configuração das propriedades de 'widgets' em detalhe. </para> +<para +>Finalmente, você irá aprender sobre vários tópicos que irão completar o seu conhecimento no que respeita ao desenho de projectos e o ajudará a lidar com os tópicos adicionais para além da codificação, como a adição de documentação da API ou extender os manuais 'online'. </para> +<sect2 id="c1s2s1"> +<title +>No próximo capítulo</title> +<para +>Iremos dar uma vista de olhos nas bibliotecas do Qt e do KDE, mostrando os conceitos básicos e porque é que as coisas são assim. Também iremos discutir como criar as aplicações tutoriais que vêm com a plataforma do Qt, usando o &tdevelop;, para que os principiantes possam ver logo primeiros resultados com alguns passos, e deste modo aprender como tirar partido de algumas das melhores funcionalidades do &tdevelop;. </para> +</sect2> + +<sect2 id="c1s2s2"> +<title +>Nos capítulos seguintes</title> +<para +>Irá aprender a: <itemizedlist> +<listitem +><para +>criar uma aplicação com o KAppWizard</para +></listitem> +<listitem +><para +>O que o esqueleto do projecto já fornece</para +></listitem> +<listitem +><para +>O que o código já criado significa</para +></listitem> +<listitem +><para +>Como criar as suas próprias vistas</para +></listitem> +<listitem +><para +>Como expandir a funcionalidade da sua aplicação utilizador diálogos, barras de menu e barras de ferramentas</para +></listitem> +<listitem +><para +>Como tornar a sua aplicação fácil de utilizar criando funções de ajuda</para +></listitem> +<listitem +><para +>Como escrever documentação electrónica</para +></listitem> +</itemizedlist> +</para> +</sect2> + +</sect1> + +<sect1 id="c1s3"> +<title +>Dados Adicionais</title> +<para +>Mais informações acerca de programação em Qt/KDE está disponível em várias fontes: <itemizedlist> +<listitem +><para +>Programar com o Qt por Matthias Kalle Dalheimer</para +></listitem> +<listitem +><para +><ulink url="www.tdevelop.org" +>O Manual de Utilizador do KDevelop, fornecido com o IDE KDevelop</ulink +></para +></listitem> +<listitem +><para +><ulink url="doc.trolltech.com" +>A Referência Electrónica da biblioteca Qt</ulink +></para +></listitem> +<listitem +><para +><ulink url="developer.kde.org" +>A página web para Programadores do KDE</ulink +></para +></listitem> +</itemizedlist> +</para> +<para +>Adicionalmente, você deverá procurar alguma ajuda, subscrevendo-se nas várias listas de correio, cujos endereços estão disponíveis nos 'sites' Web acima mencionados, ou nos fóruns de discussão dedicados aos utilizadores do KDE e dos Sistemas UNIX, assim como sobre as linguagens de programação C e C++. </para> +<para +>Para obter ajuda sobre o IDE KDevelop, você deverá enviar pedidos para a nossa lista de correio em <email +>tdevelop@tdevelop.org</email +>. Lembre-se que a equipa do KDevelop está dedicada a fornecer os meios que lhe permitam programar aplicações e, por isso, não pretende ser uma equipa de suporte técnico para os casos em que as aplicações que você desenvolve não funcionam devido a erros de implementação ou más configurações do seu sistema operativo. Com isto, pedimos a todos os utilizadores para tirarem partido da lista de correio em qualquer caso em que tenham problemas com a utilização do próprio IDE, assim como para enviarem erros e sugestões para melhorarem a funcionalidade do ambiente de desenvolvimento. </para> +</sect1> + +</chapter> + +<chapter id="chapter2"> +<title +>As bibliotecas KDE e Qt</title> +<para +>A equipa norueguesa TrollTech (<ulink url="http://www.trolltech.com" +>http://www.trolltech.com</ulink +>) oferece uma plataforma GUI chamada Qt. GUI significa "Graphical User Interface" ou "Interface Gráfica de Utilizador" e, como tal, as aplicações baseadas em Qt representam-se a si próprias com botões, janelas, etc, permitindo a interacção com o utilizador através da visualização das funções que uma aplicação fornece. Uma plataforma deste género é necessária para desenvolver aplicações gráficas que funcionem na interface X-Windows dos sistemas Unix, dado que o X não contém uma interface de utilizador por si só. Ainda que existam outras plataformas disponíveis para criar Interfaces de Utilizador, o Qt oferece algumas vantagens técnicas que tornam o desenho de aplicações muito simples. Para além disso, a plataforma do Qt está também disponível para os sistemas Microsoft Windows, o que permite aos programadores fornecerem as suas aplicações para ambas as plataformas. </para> +<para +>A Equipa do KDE (<ulink url="http://www.kde.org" +>http://www.kde.org</ulink +>) juntou-se em conjunto com o objectivo de tornar os Sistemas Unix mais amigáveis e decidiu usar a plataforma do Qt para o desenvolvimento de um gestor de janelas no X-Windows, em conjunto com uma variedade de ferramentas incluídas nos pacotes do KDE. O Ambiente de Trabalho K contém, deste modo, o gestor de janelas 'twin', o gestor de ficheiros e navegador 'konqueror' e o painel 'kicker' como componentes principais, para além de um conjunto de utilitários e aplicações de primeira classe. Depois de o KDE ter saído, vários programadores começaram a olha para o novo ambiente e para o que ele tem para lhes oferecer. As bibliotecas do KDE estão a fornecer métodos e classes essenciais que tornam todas as aplicações desenhadas com eles similares e consistentes, de modo a que o utilizador tenha a grande vantagem de só ter de se acostumar com a utilização específica de uma aplicação e não com a utilização de janelas e botões. Da mesma forma, os programas do KDE integram-se no ambiente de trabalho e conseguem interagir com o gestor de ficheiros com 'Drag and Drop' (Arrastar e Largar', tendo também a gestão de sessões entre muitas outras coisas, se forem usadas as funcionalidades oferecidas pelas bibliotecas do KDE. Tanto a plataforma do Qt com as bibliotecas do KDE são implementadas na linguagem de programação C++; como tal, as aplicações que tiram partido destas bibliotecas são também feitos em grande medida em C++. No capítulo seguinte, iremos fazer uma breve viagem pelas bibliotecas para ver o que já é oferecido e como é que as aplicações do Qt e do KDE são criadas de um modo geral. </para> +<para +>Tanto a plataforma do Qt como as bibliotecas do KDE estão implementadas na linguagem de programação C++; como tal, as aplicações que tiram partido dessas bibliotecas também são em grande parte feitas em C++. No capítulo seguinte, iremos fazer uma viagem rápida pelas bibliotecas para ver o que já é fornecido e como é que as aplicações do Qt e do KDE são criadas, de um modo geral. </para> + +<sect1 id="c2s1"> +<title +>A Plataforma Gráfica Qt</title> +<para +>Como foi dito, a biblioteca Qt é uma ferramenta que oferece elementos gráficos usados para criar aplicações gráficas e que são necessários para programar no X-Windows. Para além disso, a plataforma oferece: <itemizedlist> +<listitem +><para +>Um conjunto completo de classes e métodos prontos a utilizar mesmo para programação não gráfica</para +></listitem> +<listitem +><para +>Um boa solução para a interacção com o utilizador através de métodos virtuais e o mecanismo signal/slot</para +></listitem> +<listitem +><para +>Um conjunto de elementos gráficos predefinidos, chamados "widgets", que podem ser utilizador para criar facilmente os elementos visíveis</para +></listitem> +<listitem +><para +>Para além disto diálogo completamente predefinidos são muito utilizados nas aplicações, tais como janelas de evolução e de ficheiros</para +></listitem> +</itemizedlist> +</para> +<para +>Por isso, conhecer as classes do Qt é bastante essencial, mesmo que só queira programar aplicações para o KDE. Para ter uma noção básica sobre como as aplicações gráficas são criadas e compiladas, iremos ver primeiro um exemplo de um programa só em Qt; depois, extendê-lo-emos para um programa do KDE. </para> + +<sect2 id="c2s1s1"> +<title +>A primeira aplicação Qt</title> +<para +>Como é normal, os programas em C++ têm de conter uma função <function +>main()</function +>, que é o ponto inicial da execução das aplicações. Como pretendemos que estas sejam visíveis graficamente como janelas e que ofereçam alguma interacção com o utilizador, teremos de saber como é que elas se apresentam ao utilizador. Por exemplo, iremos ver o primeiro tutorial incluído com a Documentação de Referência 'Online' do Qt e explicar os passos de execução básicos; também iremos explicar porque e como é que a janela da aplicação aparece: <programlisting +>#include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton ola( "Olá mundo!", 0 ); +ola.resize( 100, 30 ); + +a.setMainWidget( &ola ); +ola.show(); +return a.exec(); +} +</programlisting> +</para> +<para +>Esta aplicação apenas desenha uma janela com um botão com o texto "Olá mundo". Como para todas as aplicações baseadas em Qt, tem que primeiro criar uma instância da classe <classname +>QApplication</classname +>, representada pela variável a. </para> +<para +>Em seguida, o programa cria uma instância da classe <classname +>QPushButton</classname +> chamada hello, isto vai ser o botão. O construtor de hello recebe uma cadeia de caracteres como parâmetro, que é o conteúdo do widget, o texto do botão. </para> +<para +>Depois, o método <methodname +>resize()</methodname +> é chamado sobre o botão 'ola'. Isto irá mudar o tamanho por omissão que um item gráfico (neste caso, o <classname +>QPushButton</classname +>) tem quando é criado para uma largura de 100 pixels e uma altura de 30. Finalmente, o método <methodname +>setMainWidget()</methodname +> é chamado para o 'a' e o método <methodname +>show()</methodname +> para o 'ola'. A QApplication é finalmente posta em execução com o método <methodname +>a.exec()</methodname +>, que entra no ciclo de eventos principal e fica à espera, até que devolva um valor inteiro para o Sistema Operativo subjacente, assinalando que a aplicação terminou. </para> +</sect2> + +<sect2 id="c2s1s2"> +<title +>A Documentação de Referência do Qt</title> +<para +>Agora, vamos dar uma vista de olhos à documentação de referência da biblioteca Qt. Para o fazer, inicie o &tdevelop; e seleccione o "Qt" da árvore de documentação. O navegador de documentação abrir-se-é para mostrar a página inicial da referência do Qt. Este será o seu primeiro local para obter informações sobre o Qt, as suas classes e as funções disponíveis que ele oferece. Também, o programa acima é o primeiro que vem incluído na secção de tutoriais. Para ver as classes que pretendemos ver, a <classname +>QApplication</classname +> e a <classname +>QPushButton</classname +>, seleccione a "Lista Alfabética de Classes" e procure pelos nomes correspondentes. Siga qualquer um deles para dar uma vista de olhos na documentação da classe. </para> +<para +>Em alternativa, você poderá usar a documentação 'online' na Trolltech para o <ulink url="doc.trolltech.com" +>Qt</ulink +> </para> +<para +>Para o <classname +>QApplication</classname +>, você irá ver o construtor e todos os outros métodos que esta classe oferece. Se você seguir uma hiper-ligação, você irá obter mais informações sobre a utilização e o significado dos métodos, o que é bastante útil quando você não consegue às vezes detectar a utilização correcta ou quando quer arranjar um exemplo. Isto também conta para a documentação da biblioteca do KDE, a qual usa um tipo de documentação semelhante; como tal, isto é quase tudo o que você tem de saber para usar as referências das classes com o navegador da documentação. </para> +<sect3 id="c2s1s2s1"> +<title +>Interpretação do Exemplo</title> +<para +>Começando com a <classname +>QApplication</classname +>, irá encontrar todos os métodos utilizados no nosso primeiro exemplo: <itemizedlist> +<listitem +><para +>o construtor <methodname +>QApplication()</methodname +></para +></listitem> +<listitem +><para +>o método <methodname +>setMainWidget()</methodname +></para +></listitem> +<listitem +><para +>o método <methodname +>exec()</methodname +></para +></listitem> +</itemizedlist> +</para> +<para +>É simples interpretar porque utilizámos este métodos: <orderedlist> +<listitem +><para +>Cria uma instância da classe <classname +>QApplication</classname +> com o construtor, para que possamos utilizar os elementos gráficos fornecidos pelo Qt</para +></listitem> +<listitem +><para +>Cria um 'widget' que será o conteúdo da nossa janela de programa</para +></listitem> +<listitem +><para +>Configurar o 'widget' como o 'widget' principal para</para +></listitem> +<listitem +><para +>Executa a instância do <classname +>QApplication</classname +></para +></listitem> +</orderedlist +> +</para> +<para +>O segundo objecto do nosso programa é o botão, uma instância da classe <classname +>QPushButton</classname +>. A partir dos dois construtores fornecidos para criar uma instância, nós optámos pelo segundo: este aceita um texto, o qual é o conteúdo do texto do botão; neste caso, é o texto "Olá mundo!". Aí, chamou-se o método <methodname +>resize()</methodname +> para alterar as dimensões do botão de acordo com o seu conteúdo - o botão tem de ser maior para tornar o texto completamente visível. </para> +<para +>Mas e o método <methodname +>show()</methodname +>? Agora, você verá que, como a maioria dos outros itens, a classe <classname +>QPushButton</classname +> baseia-se numa herança simples ou, como diz a documentação, herda de <classname +>QButton</classname +>. Siga a referência à classe <classname +>QButton</classname +>. Isto mostra-lhe que bastantes outros itens herdados pela <classname +>QPushButton</classname +>, os quais iremos usar posteriormente para explicar o mecanismo de 'signals'/'slots' De qualquer forma, o método <methodname +>show()</methodname +> não aparece, como tal, deverá ser um método que é fornecido por herança, da mesma forma. A classe que a <classname +>QButton</classname +> herda é a <classname +>QWidget</classname +>. Siga de novo a ligação e você irá ver um conjunto enorme de classes que a <classname +>QWidget</classname +> oferece, incluindo o método <methodname +>show()</methodname +>. Agora dá para perceber o que foi feito no exemplo com o botão: <orderedlist> +<listitem +><para +>Cria uma instância de <classname +>QPushButton</classname +>, utiliza o segundo construtor para configurar o texto do botão</para +></listitem> +<listitem +><para +>Muda o tamanho do 'widget' de acordo com o seu conteúdo</para +></listitem> +<listitem +><para +>Escolhe o 'widget' como o 'widget' principal da instância do <classname +>QApplication</classname +> como</para +></listitem> +<listitem +><para +>Diz ao 'widget' para se mostrar no ecrã chamando <methodname +>show()</methodname +>, um método herdado de <classname +>QWidget</classname +></para +></listitem> +</orderedlist> +</para> +<para +>Depois de invocar o método <methodname +>exec()</methodname +>, a aplicação fica visível para o utilizador, mostrando uma janela com o botão a dizer "Olá mundo!". Nota: os programas gráficos comportam-se de forma ligeiramente diferente da das aplicações procedimentais. A questão principal aqui é que a aplicação entra num estado chamado de "ciclo de eventos principal". Isto significa que o programa tem de esperar pelas acções do utilizador e então reagir a elas e que, numa aplicação do Qt, o programa terá de entrar no ciclo de eventos principal para conseguir começar a tratá-los. A próxima secção diz-lhe em resumo o que isto significa para o programador e o que é que o Qt oferece para processar os eventos do utilizador. </para> +<note +><para +>Para os utilizadores já avançados: O botão não tem nenhuma janela-mãe declarada no construtor, o que significa que é um item gráfico de topo por si só e corre num ciclo de eventos local que não precisa de esperar pelo ciclo de eventos principal. Veja a documentação da classe QWidget e o Guia de Referência da Biblioteca do KDE</para> +</note +> + +</sect3> +</sect2> + +<sect2 id="c2s1s3"> +<title +>Interacção com o Utilizador</title> +<para +>Depois de ler as secções anteriores, já deverá saber: <itemizedlist> +<listitem +><para +>O que a biblioteca Qt fornece em termos de aplicações gráficas</para +></listitem> +<listitem +><para +>Como é criado um programa utilizando o Qt e</para +></listitem> +<listitem +><para +>Onde e como encontrar informações acerca das classes que deseja utilizar com o navegador de documentação</para +></listitem> +</itemizedlist +> +</para> +<para +>Agora vamos dar "vida" à aplicação, processando os eventos do utilizador. De um modo geral, o utilizador tem duas formas de interagir com um programa: o rato e o teclado. Para ambas as formas, uma interface gráfica tem de fornecer métodos que detectem as acções e métodos que façam algo em reacção a estas acções. </para +> +<para +>O sistema de janelas envia deste modo todos os eventos de interacção para a aplicação respectiva. A <classname +>QApplication</classname +> envia-os então para a janela activa como um <classname +>QEvent</classname +> e os próprios itens terão de decidir o que fazer com eles. Um item recebe o evento e processa o <methodname +>QWidget::event(QEvent*)</methodname +>, que decide então qual o evento que foi executado e como reagir; o <methodname +>event()</methodname +> é deste modo o tratador de eventos principal. Aí, o método <methodname +>event()</methodname +> passa o evento para os denominados de filtros de eventos que determinam o que se passou e o que fazer com o evento. Se nenhum filtro responder como responsável pelo evento, os tratadores de eventos especializados são invocados. Deste modo, pode-se optar entre: <itemizedlist> +<listitem +><para +>Eventos de teclados -- teclas TAB e Shift-TAB:</para> +<itemizedlist> +<listitem +><para +><methodname +>virtual void focusInEvent(QFocusEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void focusOutEvent(QFocusEvent *)</methodname +></para +></listitem> +</itemizedlist> +</listitem> + +<listitem +><para +>Todos a outra actividade de teclado:</para> +<itemizedlist> +<listitem +><para +><methodname +>virtual void keyPressEvent(QKeyEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void keyReleaseEvent(QKeyEvent *)</methodname +></para +></listitem> +</itemizedlist> +</listitem> + +<listitem +><para +>Movimentos do rato:</para> +<itemizedlist> +<listitem +><para +><methodname +>virtual void mouseMoveEvent(QMouseEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void enterEvent(QEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void leaveEvent(QEvent *)</methodname +></para +></listitem> +</itemizedlist> +</listitem> + +<listitem +><para +>Acções dos botões do rato</para> +<itemizedlist> +<listitem +><para +><methodname +>virtual void mousePressEvent(QMouseEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void mouseReleaseEvent(QMouseEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void mouseDoubleClickEvent(QMouseEvent *)</methodname +></para +></listitem> +</itemizedlist> +</listitem> + +<listitem +><para +>Eventos da janela que contém o 'widget'</para> +<itemizedlist> +<listitem +><para +><methodname +>virtual void moveEvent(QMoveEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void resizeEvent(QResizeEvent *)</methodname +></para +></listitem> +<listitem +><para +><methodname +>virtual void closeEvent(QCloseEvent *)</methodname +></para +></listitem> +</itemizedlist> +</listitem> + +</itemizedlist> +</para> +<para +>Lembre-se que todas as funções de eventos são virtuais e protegidas; como tal, você poderá reimplementar os eventos que necessitar nos seus próprios itens gráficos e indicar como é que o seu item terá de reagir. O <classname +>QWidget</classname +> contém também outros métodos virtuais que poderão ser úteis nos seus programas; de qualquer forma, é suficiente conhecer o <classname +>QWidget</classname +> bastante bem. </para> +</sect2> +<sect2 id="c1s2s4"> +<title +>Interacção de Objectos através de 'Signals' e 'Slots'</title> +<para +>Agora chegámos às vantagens mais óbvias da plataforma do Qt: o mecanismo de 'signals'/'slots'. Isto oferece uma solução bastante útil e fácil de os objectos interagirem entre si, o que normalmente é resolvido por funções de resposta ('callback') pelas bibliotecas do X-Window. Dado que esta documentação necessita de uma programação restrita e normalmente torna a criação de interface do utilizador muito complicada (como é referido pela documentação do Qt e é explicado no texto 'Programming with Qt' de K.Dalheimer), a Troll Tech inventou um novo sistema onde os objectos podem emitir sinais ('signals') que podem estar associados a métodos denominados por 'slots'. Para a parte de C++ do programador, ele só terá de conhecer algumas coisas sobre este mecanismo: <itemizedlist> +<listitem +><para +>a declaração de uma classe que utilize 'signals'/'slots' tem que ter a macro Q_OBJECT no início (sem ponto e vírgula); e tem que ser derivada da classe <classname +>QObject</classname +> </para +></listitem> +<listitem +><para +>um 'signal' pode ser emitido através da palavra chave 'emit', por exemplo, emit signal(parâmetros);, de qualquer método membro de uma classe que permite 'signals'/'slots' </para +></listitem> + +<listitem +><para +>todos os 'signals' utilizados pelas classes que não são herdados tem que ser adicionados à declaração da classe numa secção 'signals' </para +></listitem> +<listitem +><para +>todos os métodos que podem ser ligados com um 'signal' são declarados em secções com a palavra chama adicional 'slot', ou seja, public slot: na declaração da classe </para +></listitem> +<listitem +><para +>o compilador de meta-objectos 'moc' tem de correr sobre o ficheiro de inclusão para expandir as macros e para produzir a implementação (que é necessário conhecer). Os ficheiros de resultado do 'moc' são compilados também pelo compilador de C++. </para +></listitem> +</itemizedlist> +</para> +<para +>Outra forma de usar os 'signals' sem derivar da classe <classname +>QObject</classname +> é usar a classe <classname +>QSignal</classname +> - veja a documentação de referência para mais informações e para um exemplo de utilização. No seguinte, assume-se que você vai derivar de <classname +>QObject</classname +>. </para> +<para +>Desta forma, a sua classe é capaz de enviar 'signals' para todo o lado e consegue fornecer 'slots' aos quais os 'signals' se possam ligar. Usando os 'signals', você não terá de se preocupar com que os recebe - só tem de emitir os 'signals' e qual o 'slot' que lhe deseja ligar para reagir à emissão. Os 'slots' também podem ser usados como métodos normais durante a implementação. </para> +<para +>Agora, para ligar um 'signal' a um 'slot', você terá de usar os métodos <methodname +>connect()</methodname +> que são fornecidos pelo <classname +>QObject</classname +> ou, quando for possível, os métodos especiais que os objectos fornecem para definir a ligação a um dado 'signal'. </para> + +<sect3 id="c1s2s4s1"> +<title +>Exemplo de Utilização</title> +<para +>Para explicar a forma como configurar a interacção dos objectos, iremos usar o nosso primeiro exemplo e extendê-lo com uma simples ligação: <programlisting +>#include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton ola( "Olá mundo!", 0 ); +ola.resize( 100, 30 ); + +a.setMainWidget( &ola ); + +connect(&ola, SIGNAL( clicked() ), &a, SLOT( quit() )); + +ola.show(); +return a.exec(); +} +</programlisting> +</para> +<para +>Como vê, a única adição para dar ao botão mais interacção é usar um método <methodname +>connect() </methodname +>: o <methodname +>connect(&ola, SIGNAL( clicked() ), &a, SLOT( quit() ))</methodname +>; é tudo o que você tem para adicionar. Qual é o significado? A declaração da classe do QObject fala sobre o método <methodname +>connect()</methodname +>: </para> +<para +><methodname +>bool connect ( const QObject * emissor, const char * signal, const QObject * receptor, const char * membro ) </methodname +></para> +<para +>Isto significa que você terá de indicar um ponteiro para uma instância de um <classname +>QObject</classname +> que é o emissor do 'signal', o que significa que ele poderá emitir este 'signal' como primeiro parâmetro; depois, terá de indicar o 'signal' a que se deseja ligar. Os últimos dois parâmetros são o objecto receptor que contém um 'slot' seguido da função-membro que é, de facto, o 'slot' que será executado devido à emissão do 'signal'. </para> +<para +>Usando os 'signals' e 'slots', os objectos do seu programa podem interagir uns com os outros facilmente sem terem de explicitamente depender do tipo do objecto receptor. Você irá aprender mais sobre a utilização deste mecanismo para uma utilização produtiva posteriormente neste manual. Se quiser saber mais informações sobre o mecanismo de 'signals'/'slots' poderá ir ao <ulink url="developer.kde.org/documentation/library/libraryref.html" +>Guia de Referência da Biblioteca do KDE</ulink +> e à <ulink url="doc.trolltech.com" +>referência 'online' do Qt</ulink +>. </para> +</sect3> +</sect2> +</sect1> + +<sect1 id="c2s3"> +<title +>O que o KDE fornece</title> +<sect2 id="c2s3s1"> +<title +>As bibliotecas KDE 3.x</title> +<para +>As principais bibliotecas do KDE que irá utilizar para criar as suas aplicações KDE são: <itemizedlist> +<listitem +><para +>a biblioteca tdecore, contendo todas as classes com elementos não visíveis que fornecem funcionalidade às aplicações </para +></listitem> +<listitem +><para +>a biblioteca tdeui, que contém elementos de interface como barras de menu, barras de ferramentas, etc. </para +></listitem> +<listitem +><para +>a biblioteca kfile, que contém as janelas de selecção de ficheiros </para +></listitem> +</itemizedlist> +</para> +<para +>Adicionalmente, para soluções específicas o KDE oferece as seguintes bibliotecas: <itemizedlist> +<listitem +><para +>a biblioteca tdefx, contendo 'pixmaps', efeitos visuais e a extensão KStyle para o QStyle </para +></listitem> +<listitem +><para +>a biblioteca khtml, que contém o componente html do KDE </para +></listitem> +<listitem +><para +>a biblioteca kjs, que contém o suporte Javascript do KDE </para +></listitem> +<listitem +><para +>a biblioteca kio, que contém acesso de baixo nível a ficheiros de rede </para +></listitem> +<listitem +><para +>a biblioteca kparts, que contém suporte a aplicações extensíveis, embebidas e reutilizáveis </para +></listitem> +</itemizedlist> +</para> +<para +>De seguida vamos ver o que é necessário para transformar a nossa primeira aplicação Qt numa do KDE. </para> +</sect2> +<sect2 id="c2s3s2"> +<title +>Aplicação KDE Exemplo</title> +<para +>A seguir, você irá ver que a criação de uma aplicação do KDE não é muito mais difícil que uma aplicação do Qt. Para a utilização da funcionalidades do KDE, você apenas terá de usar algumas outras classes, e fica praticamente tudo feito. Como exemplo, iremos discutir a versão alterada do exemplo do Qt acima descrito: <programlisting +>#include <kapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +KApplication a( argc, argv ); + +QPushButton ola( "Olá mundo!", 0 ); +ola.resize( 100, 30 ); + +a.setTopWidget( &ola ); + +connect(&ola, SIGNAL( clicked() ), &a, SLOT( quit() )); + +ola.show(); +return a.exec(); +} +</programlisting> +</para +> +<para +>Você irá constatar que, primeiro, mudámos da <classname +>QApplication</classname +> para a <classname +>KApplication </classname +>. Para além disso, tivemos de mudar o método <methodname +>setMainWidget()</methodname +> para <methodname +>setTopWidget</methodname +>, o qual a classe <classname +>KApplication</classname +> usa para indicar qual o item principal. É tudo! A sua primeira aplicação do KDE está pronta - você só terá de indicar ao compilador a localização dos ficheiros de inclusão e ao editor de ligações para compilar com a biblioteca 'tdecore', através da opção'-ltdecore'. </para> +<para +>Dado que já sabe o que, pelo menos, a função <function +>main()</function +> necessita geralmente e como é que uma aplicação fica visível e permite a interacção com o utilizador e com os objectos, iremos agora para o próximo capítulo, onde a nossa primeira aplicação será criada com o &tdevelop;. Aí, você também poderá testar tudo o que foi mencionado antes e ver os efeitos. </para> +<para +>O que você deverá ter olhado adicionalmente até agora é a documentação de referência do Qt, especialmente a as classes <classname +>QApplication</classname +>, <classname +>QWidget</classname +> e <classname +>QObject </classname +>, assim como a documentação da biblioteca 'tdecore' para a classe <classname +>KApplication</classname +>. O <ulink url="developer.kde.org/documentation/library/libraryref.html" +>Manual de Referência da Biblioteca do KDE</ulink +> também cobre uma descrição completa da invocação dos construtores da <classname +>QApplication</classname +> e da <classname +>KApplication</classname +>, incluindo o processamento dos argumentos da linha de comandos. </para> +</sect2> +</sect1> + +</chapter> + +<chapter id="chapter3"> +<title +>Criar Novas Aplicações</title> + +<sect1 id="c3s1"> +<title +>O Assistente de Aplicações</title> +<para +>O Assistente de Aplicações do &tdevelop; pretende pô-lo a trabalhar em projectos novos no &tdevelop;. Como tal, todos os seus projectos são primeiro criados com o assistente, para que depois os possa construir e extender o que já é oferecido pelo esqueleto de código. Você poderá optar entre vários tipos de projectos, de acordo com os objectivos do seu projecto: <itemizedlist> +<listitem +><para +>Plataforma de Aplicações do KDE: inclui o código-fonte para uma estrutura básica para uma aplicação normal do KDE </para +></listitem> +<listitem +><para +>Projecto QMake: Cria uma estrutura de aplicação baseado no sistema de configuração qmake da Trolltech </para +></listitem> +<listitem +><para +>Programa simples de olá mundo: Cria um programa em C++ para terminais, sem suporte a interface gráficas </para +></listitem> +<listitem +><para +>Muitos outros esqueletos de programas </para +></listitem> +</itemizedlist> +</para> +<para +>Neste capítulo iremos ver como é que o Assistente de Aplicações poderá ser invocado e o que é que tem de ser feito para gerar um projecto de uma aplicação do KDE. Isto terá de ser o passo inicial da nossa cobertura, onde iremos criar a versão inicial de um projecto de exemplo. Para todos os outros tipos de projectos, os passos serão normalmente os mesmos, mas poderão não ter tantas opções disponíveis. </para> +</sect1> + +<sect1 id="c3s2"> +<title +>Invocar o Assistente de Aplicações e a Geração de Projectos</title> +<sect2 id="c3s2s1"> +<title +>Iniciar o Assistente de Aplicações e a Primeira Página</title> +<para +>Para iniciar a sua aplicação do KDE, abra o &tdevelop;. No menu Projecto, seleccione o Novo Projecto. O Assistente de Aplicações é iniciado e você verá a árvore de selecções na primeira página, contendo os vários tipos de projectos disponíveis que poderão ser criados. Escolha a sub-árvore de C++, depois o KDE e depois a Plataforma de Aplicações. </para> +<para +>Para o nosso projecto de exemplo, iremos criar a aplicação KScribble. Indique isso como nome da aplicação e altere as outras informações na parte inferior deste ecrã que possam necessitar de alterações. Depois, carregue em Seguinte. <screenshot +><mediaobject +><imageobject> +<imagedata fileref="appwizard.png" format="PNG"/> +</imageobject +><textobject +><phrase +>Assistente de Aplicações</phrase +></textobject> +</mediaobject +></screenshot> +</para> +</sect2> +<sect2 id="c3s2s2"> +<title +>Informações de controlo de versão</title> +<para +>Neste ecrã, você terá a possibilidade de decidir se o seu projecto irá usar um sistema de controlo de versões como o CVS. Para o nosso projecto de exemplo não iremos usar nenhum controlo de versões, por isso certifique-se que a opção de selecção diz Nenhum e escolha o Seguinte. </para> +</sect2> +<sect2 id="c3s2s3"> +<title +>Modelos de Cabeçalhos e Código Fonte</title> +<para +>As próximas duas páginas mostram os exemplos de cabeçalhos que irão para o topo de cada ficheiro de inclusão e de código que crie com o &tdevelop;. Por agora, deixe estes como os por omissão e seleccione Seguinte e depois Terminar. Se o botão Terminar não estiver activado, você não definiu todas as opções correctamente. Use o botão Anterior para voltar aos menus anteriores e corrigir os erros. </para> +</sect2> +<sect2 id="c3s2s4"> +<title +>Terminar</title> +<para +>Depois de completo, o Assistente de Aplicações deverá fechar-se e a janela de mensagens irá começar a mostrar informações sobre as tarefas que o &tdevelop; está a fazer de momento. No fim de todas as tarefas, você deverá ver **** Sucesso *****. Isto significa que a plataforma de aplicações foi carregada com sucesso. </para> +</sect2> +</sect1> + +<sect1 id="c3s3"> +<title +>A Primeira Compilação</title> +<para +>Depois de ter o projecto gerado, iremos dar uma vista de olhos pelo código-fonte para ter uma ideia geral de como é que a plataforma de aplicações fica. Isto não só ajudará o utilizador a aprender, mas também a saber onde alterar o quê nos próximos passos. </para> +<para +>Este capítulo assume que você compreende a navegação básica do &tdevelop;. Consulte o Manual de Utilizador do KDevelop se precisar de ajuda. </para> +<para +>O gestor de Automake mostra os ficheiros de projecto como se segue: <screenshot +><mediaobject +><imageobject> +<imagedata fileref="kscribblefiles.png" format="PNG"/> +</imageobject +><textobject +><phrase +>Ficheiro nos nosso projecto</phrase +></textobject> +</mediaobject +></screenshot> +</para> +<para +>Antes de se aprofundar no código, deixe que o &tdevelop; compile e execute a nova aplicação. Para o fazer, seleccione a opção Construir o Projecto no menu Construir ou carregue em F8. A janela do resultado irá abrir e mostrar as mensagens que vão aparecendo durante a fase de compilação. <programlisting +>1 cd /home/ze/kscribble && WANT_AUTOCONF_2_5=1 WANT_AUTOMAKE_1_6=1 gmake k +2 gmake all-recursive +3 gmake[1]: Entering directory `/home/ze/kscribble' +4 Making all in doc +5 gmake[2]: Entering directory `/home/ze/kscribble/doc' +6 Making all in . +7 gmake[3]: Entering directory `/home/ze/kscribble/doc' +8 gmake[3]: Nothing to be done for `all-am'. +9 gmake[3]: Leaving directory `/home/ze/kscribble/doc' +10 Making all in en +11 gmake[3]: Entering directory `/home/ze/kscribble/doc/en' +12 /usr/local/kde3/bin/meinproc --check --cache index.cache.bz2 /home/ze/kscribble/doc/en/index.docbook +13 gmake[3]: Leaving directory `/home/ze/kscribble/doc/en' +14 gmake[2]: Leaving directory `/home/ze/kscribble/doc' +15 Making all in po +16 gmake[2]: Entering directory `/home/ze/kscribble/po' +17 gmake[2]: Nothing to be done for `all'. +18 gmake[2]: Leaving directory `/home/ze/kscribble/po' +19 Making all in src +20 gmake[2]: Entering directory `/home/ze/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/ze/kscribble/admin/depcomp \ +24 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/kscribble/src/'`main.cpp +25 /usr/lib/qt/bin/moc /home/ze/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/ze/kscribble/admin/depcomp \ +29 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/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/ze/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/ze/kscribble/admin/depcomp \ +36 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/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/ze/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/ze/kscribble/admin/depcomp \ +46 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/kscribble/src/'`pref.cpp +47 /usr/local/kde3/bin/dcopidl /home/ze/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/ze/kscribble/admin/depcomp \ +52 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/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/ze/kscribble/admin/depcomp \ +57 g++ -DHAVE_CONFIG_H -I. -I/home/ze/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/ze/kscribble/src/'`kscribble_client.cpp +58 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef + -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 + -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble_client -R + /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib + -L/usr/local/kde3/lib kscribble_client.o -ltdecore +59 gmake[2]: Leaving directory `/home/ze/kscribble/src' +60 gmake[2]: Entering directory `/home/ze/kscribble' +61 gmake[2]: Nothing to be done for `all-am'. +62 gmake[2]: Leaving directory `/home/ze/kscribble' +63 gmake[1]: Leaving directory `/home/ze/kscribble' +64 *** Success *** +</programlisting> +</para> +<para +>Como pode ver, foram colocados números de linhas antes de cada linha, os quais não aparecem no resultado que irá obter mas tornará mais simples de descrever o que se está a passar durante a compilação. Primeiro que tudo, o 'gmake' funciona recursivamente. Isto significa que ele começa a partir da directoria em que é invocado e vai percorrendo as sub-pastas primeiro, uma de cada vez, e depois regressa à directoria em que foi invocado, processa-a e depois termina. </para> +<para +>A primeira linha de interesse é a 24. Repare nesta linha que o 'g++', que é o nosso compilador de C++, é chamado pelo 'make' para compilar o primeiro ficheiro de código do projecto - neste caso, o 'main.cpp'. São usadas também várias opções da linha de comandos com o compilador 'g++'; algumas das quais são predefinidas e outras podem ser configuradas através do &tdevelop;. </para> +<para +>Antes do próximo ficheiro ('kscribble.cpp', linha 29) ser compilado, o 'moc' (compilador de meta-objectos) é primeiro invocado sobre o 'kscribble.h' (linha 25). Isto é porque as classes do KScribble usam 'signals'/'slots', por isso a macro Q_OBJECT precisa de ser expandida, e o 'moc' faz isso por nós. O ficheiro resultante, o 'kscribble.moc', é usado pelo 'kscribble.cpp' através de um comando #include dentro do ficheiro. </para> +</sect1> + +<sect1 id="c3s4"> +<title +>O esqueleto do código-fonte</title> +<para +>Para conceber como é que uma aplicação do KDE funciona, iremos dar uma vista de olhos detalhada ao esqueleto de código que já é fornecido pelo Assistente de Aplicações. Como foi visto, já existe algum conjunto de ficheiros de código e de inclusão que compõem o código inicial da aplicação e a tornam pronta-a-usar. Como tal, a forma mais simples de explicar o código é seguir a implementação linha-a-linha á medida que é processada durante a execução do programa, até que entra no ciclo de eventos principal e fica pronta a ser controlada pelo utilizador. Aí, iremos ver a funcionalidade que permite a interacção com o utilizador e como é que certas coisas funcionam. Esta é provavelmente a melhor forma de explicar a plataforma e, dado que é semelhante a quase todas as aplicações do KDE, permitir-lhe-á ler o código-fonte de outros projectos de forma igualmente simples; para além disso, irá saber onde alterar uma dada parte do código para que as suas aplicações se comportem da forma como foram desenhadas. </para> + +<sect2 id="c3s4s1"> +<title +>A função main()</title> +<para +>À medida que a aplicação começa a sua execução ao entrar na função <function +>main()</function +>, esta será o início do exame de código. A função <function +>main()</function +> do KScribble está implementada no ficheiro 'main.cpp' e pode também ser acedida com o Navegador de Classes, seleccionando para tal a pasta de "Funções Globais". <programlisting +>1 int main(int argc, char **argv) +2 { +3 KAboutData about("kscribble", I18N_NOOP("KScribble"), version, description, +4 KAboutData::License_GPL, "(C) 2002 O Seu Nome", 0, 0, "voce@o-proprio.com"); +5 about.addAuthor( "O Seu Nome", 0, "voce@o-proprio.com" ); +6 KCmdLineArgs::init(argc, argv, &about); +7 KCmdLineArgs::addCmdLineOptions(options); +8 KApplication app; +9 +10 // registar-nos como um cliente dcop +11 app.dcopClient()->registerAs(app.name(), false); +12 +13 // ver se estamos a começar com gestão de sessão +14 if (app.isRestored()) +15 RESTORE(KScribble) +16 else +17 { +18 // sem sessão... começar normalmente +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 } +</programlisting> +</para +> +<para +>Agora, o que acontece primeiro é a criação normal de um objecto <classname +>KApplication</classname +>, mas foram adicionados alguns métodos do KDE que definem a informação do programa e da autoria desta aplicação. </para> +</sect2> +<sect2> +<title +>Início da Aplicação do Utilizador</title> + +<para +>... (ainda não escrito)</para> + +</sect2> +<sect2> +<title +>O Construtor</title> +<para +>Vamos agora olhar para o construtor e ver com esta instância é chamada <programlisting +>1 KScribble::KScribble() +2 : KMainWindow( 0, "KScribble" ), +3 m_view(new KScribbleView(this)), +4 m_printer(0) +5 { +6 // aceitar arrastar e largar +7 setAcceptDrops(true); +8 +9 // diz ao KMainWindow que este é o widget principal +10 setCentralWidget(m_view); +11 +12 // então, configuramos as nossas acções +13 setupActions(); +14 +15 // e uma barra de estado +16 statusBar()->show(); +17 +18 // permitir à vista mudar a barra de estado e o 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 } +</programlisting> +</para> +<para +>Repare que o <classname +>KScribble</classname +> herda da classe <classname +>KMainWindow</classname +> - uma classe de base usada normalmente pelas aplicações do KDE. É inicializada uma classe chamada <classname +>KScribbleView</classname +> como item gráfico central, é criada uma <classname +>KStatusBar</classname +> através do método <methodname +>statusBar()</methodname +> (na linha 16), e são ligados com o <methodname +>connect()</methodname +> alguns 'signals' e 'slots'. </para> +</sect2> +</sect1> +</chapter> + + +<chapter id="chapter4"> +<title +>Desenho da Vista da Aplicação</title> +<sect1 id="c4s1"> +<title +>Introdução</title> +<para +>Ao desenvolver uma aplicação com uma interface de utilizador gráfica, o trabalho principal toma lugar ao desenvolver uma "vista" da aplicação. Uma vista é normalmente uma janela que mostra os dados de um documento e que oferece métodos para manipular o conteúdo do documento. Isto pode ser feito pelo utilizador, através dos eventos que ele emite com o teclado ou com o rato; as operações mais complexas são normalmente processadas pelas barras de ferramentas ou pelos menus que interagem com a vista e com o documento. A barra de estado irá então mostrar informações sobre o estado do documento, da vista ou da aplicação. Por exemplo, iremos ver como é que um editor é construído e onde poderemos encontrar uma determinada componente. </para> +<para +>Um editor normalmente é suposto oferecer uma interface para ver e/ou alterar o conteúdo de um documento de texto para o utilizador. Se você iniciar o Kate, voce irá ver a interface visual da seguinte forma: <itemizedlist> +<listitem +><para +>A barra de menu: fornece operações complexas e também abre, grava e fecha ficheiros e termina a aplicação. </para +></listitem> +<listitem +><para +>A barra de ferramentas: oferece ícones que permitem um acesso mais rápido às funções mais necessárias, </para +></listitem> +<listitem +><para +>A barra de estado: mostra o estado da posição do cursor pela linha e coluna actual, </para +></listitem> +<listitem +><para +>A vista no centro da janela, a mostrar um documento e a apresentar um cursor associado ao teclado e ao rato para lidar com os dados. </para +></listitem> +</itemizedlist> +</para> +<para +>Agora é fácil de perceber que uma vista é a componente mais única da aplicação e que o desenho da vista decide a usabilidade e a capacidade de aceitação de uma aplicação. Isto significa que um dos primeiros passos da programação é determinar o objectivo da aplicação e perceber o desenho da vista que irá responder melhor às necessidades de um utilizador para lidar com a aplicação com o mínimo de trabalho de aprendizagem da interface que lhe é apresentada. </para> +<para +>Para alguns fins, como a edição de texto ou a apresentação de ficheiros HTML, as vistas são oferecidas pelas bibliotecas do Qt e do KDE; iremos discutir certos aspectos destes itens de alto-nível na próxima secção. Porém, para a maioria das aplicações, têm de ser desenhados e implementados novos itens gráficos. É o que torna um programador também um desenhador e onde são requisitadas as suas capacidades de criatividade. Todavia, você deverá ter em atenção primeiro a intuitividade. Lembre-se, bastantes utilizadores não irão aceitar uma aplicação que não seja: <itemizedlist> +<listitem +><para +>graficamente bonita. </para +></listitem> +<listitem +><para +>ofereça muitas funcionalidades </para +></listitem> +<listitem +><para +>seja fácil de manejar </para +></listitem> +<listitem +><para +>seja rápida de aprender a utilizar </para +></listitem> +</itemizedlist> +</para> +<para +>Escusado será dizer que a estabilidade é um grande objectivo de desenho. Ninguém poderá evitar os erros, mas poderemos obter um mínimo se tivermos objectivos de desenho inteligentes e um uso abrangente de desenho orientado por objectos. O C++ torna a programação uma alegria se você souber como explorar as suas capacidades - a herança, o isolamento de informação e a reutilização de código já existente. </para> +<para +>Ao criar um projecto do KDE ou do Qt, você terá de ter sempre uma vista que herde de QWidget, quer por herança directa, ou então porque o item da biblioteca que deseja usar herda do QWidget. Como tal, o Assistente de Aplicações já construiu uma vista que é uma instância de uma classe suaAplicacaoView, a qual já herda de QWidget. </para> +<para +>Este capítulo descreve, deste modo, como usar os itens das bibliotecas para criar vistas das aplicações do KDE e do QT que sejam geradas com o &tdevelop;, e iremos depois olhar para os tipos de vistas que já são oferecidas. </para> +</sect1> +<sect1 id="c4s2"> +<title +>Utilizar Vistas das Bibliotecas</title> +<para +>Quando o desenho da sua aplicação tiver sido definido, você deverá primeiro ver se existe código que possa tornar a sua vida muito mais simples. Uma parte desta pesquisa implica procurar por um elemento gráfico que posas ser usado como uma vista, ou pelo menos como parte dela; quer directamente quer por herança. As bibliotecas do KDE e do Qt já contêm um conjunto de elementos gráficos que podem ser usados para este fim. Para os usar, você tem duas opções: <orderedlist> +<listitem +><para +>Remova a classe da nova vista e cria uma instância de um 'widget' de biblioteca; escolha depois isto com a vista, </para +></listitem> +<listitem +><para +>Muda a herança da classe de vista fornecida para a classe do 'widget' da biblioteca a utilizar. </para +></listitem> +</orderedlist> +</para> +<para +>De qualquer forma, é importante saber que, se a plataforma aplicacional não estiver compilada com a biblioteca que contém o elemento gráfico, o editor de ligações irá falhar. Depois de optar por usar um determinado elemento gráfico, veja qual é a biblioteca que é necessária; depois abra a opção "Projecto"->"Opções" do menu do &tdevelop;. Mude para a página das "Opções do Editor de Ligações" e veja as opções referentes às bibliotecas que estão a ser usadas de momento. Se a biblioteca do seu elemento gráfico já está assinalada, você poderá deixar as opções do projecto tal-e-qual e começar a fazer as alterações necessárias à sua escolha. Caso contrário, e se as opções do editor de ligações dão a possibilidade de adicionar a biblioteca com uma opção de marcação, assinale essa opção e carregue em "OK" para sair da janela de opções do projecto de novo. Se não tiver nenhuma opção, adicione a biblioteca no campo de edição em baixo com a opção '-l'. Para as bibliotecas que a sua aplicação tem de procurar antes de preparar as Makefiles com o programa 'configure' na máquina do utilizador, adicione a seguinte macro de procura ao ficheiro 'configure.in' localizado na directoria de base do seu projecto e adicione a macro na linha de edição. Lembre-se que tem de correr o "Construir"->"Autoconf e automake" e "Build"->"Configure" antes de as Makefiles passarem a conter a expansão correcta da macro da biblioteca. </para> +<para +>Também, se os ficheiros de inclusão da biblioteca não estiver nas localizações normais (que poderão ser consultadas, vendo as opções '-I' na janela de resultado do "Make"), você terá de adicionar a sua localização na janela de Opções do Projecto - "Opções do Compilador", com a opção '-I' ou com a macro respectiva do 'automake' no campo de edição das "Opções Adicionais". </para> +<sect2 id="c4s3s1"> +<title +>Vista do Qt</title> +<para +>Olhando para a primeira página da documentação 'online' do Qt, você irá ver uma referência a "Widget Screenshots" (Imagens dos Elementos Gráficos), onde você poderá ver como é que o itens que o Qt contém irão ficar. Eles estão prontos a usar e podem ser combinados em conjunto para forma itens mais complexos, de modo a criar vistas de aplicações ou janelas. A seguir, iremos discutir alguns destes itens que são muito úteis para criar vistas de aplicações; tenha contudo em mente que as bibliotecas do KDE algumas vezes contêm outros itens para o mesmo fim; estes serão revistos na próxima secção. </para> +<para +>Aqui está um conjunto de sugestões sobre o fim para que você irá usar um determinado componente do Qt: <orderedlist> +<listitem +><para +>Se a área da sua janela não for grande o suficiente para mostrar todos os seus dados, o utilizador irá precisar de se deslocar pelo documento através de barras à esquerda e em baixo na janela. Para isso, o Qt oferece a classe <classname +>QScrollView</classname +>, que oferece uma área-filha que poderá ser posicionável. Como foi dito, você poderá herdar o seu próprio item de <classname +>QScrollView</classname +> ou usar uma instância para gerir o item da vista do seu documento. </para +></listitem +> +<listitem +><para +>Para criar você próprio uma ScrollView, herde o item da vista da classe <classname +>QWidget</classname +> e adicione <classname +>QScrollBars </classname +> verticais e horizontais. (Isto é feito pelo item KHTMLView do KDE). </para +></listitem +> +<listitem +><para +>Para processar texto, use a <classname +>QTextEdit</classname +>. Esta classe fornece um elemento gráfico de edição de texto completo que já é capaz de cortar, copiar e colar texto e é gerido por uma vista posicionável. </para +></listitem +> +<listitem +><para +>Use a <classname +>QTable</classname +> para mostrar dados organizados numa tabela. Dado que a <classname +>QTable</classname +> usa também barras de posicionamento, é uma boa solução para aplicações de cálculos de tabelas. </para +></listitem +> +<listitem +><para +>Para mostrar dois itens diferentes ou duas janelas ao mesmo tempo, use o <classname +>QSplitter </classname +>. Isto permite pôr lado-a-lado as vistas com divisões horizontais ou verticais. O KMail é um bom exemplo do que isto iria parecer - a área principal é separada na vertical por uma divisória e a área do lado direito é, por sua vez, dividida de novo na horizontal. </para +></listitem +> +<listitem +><para +>A <classname +>QListView</classname +> mostra informações numa lista e numa árvore. Isto é útil para criar árvores de ficheiros ou outra informação hierárquica qualquer com a qual deseja interagir. </para +></listitem +> +</orderedlist> +</para> +<para +>Você poderá ver que o Qt sozinho já oferece um conjunto completo de elementos gráficos prontos a usar, de modo que você não tem de inventar novas soluções se estas corresponderem às suas necessidades. O efeito colateral ao usar os elementos gráficos normais é que os utilizadores já sabem como lidar com eles e só terão de se concentrar nos dados apresentados. </para> +</sect2> +<sect2 id="c4s3s2"> +<title +>Vistas do KDE</title> +<para +>As bibliotecas do KDE foram inventadas para tornar o desenho de aplicações para o Ambiente de Trabalho K mais fácil e capaz de novas funcionalidades do que o Qt por si só oferece. A biblioteca 'tdeui' oferece: <orderedlist> +<listitem +><para +>KListView: uma versão mais poderosa do <classname +>QListView</classname +> </para +></listitem> +<listitem +><para +>KIconView: uma vista gráfica de ficheiros de ícones </para +></listitem> +</orderedlist> +</para> +<para +>A biblioteca 'khtml', por outro lado, oferece um elemento gráfico de interpretação de HTML completo e pronto a usar. Já é posicionável, por isso você não terá sequer de se preocupar com isso. Uma utilização possível seria integrá-lo como um item de antevisão para um editor HTML; é usado por aplicações como o Konqueror para mostrar ficheiros HTML. </para> +</sect2> +</sect1> +<sect1 id="c4s4"> +<title +>Criar as suas próprias Vistas</title> +<para +>Ainda não escrito </para> +</sect1> +</chapter> + +<chapter id="chapter5"> +<title +>Configurar as Barras de Menu e de Ferramentas</title> +<sect1 id="c5s1"> +<title +>Introdução</title> +<para +>As barras de menu e de ferramentas são uma das partes mais importantes de uma aplicação para fornecer métodos para lidar com uma estrutura de documentos. Como regra geral, você irá tornar todas as funções disponíveis pela barra de menu. Os itens que não devam estar disponíveis numa determinada etapa do processo da aplicação deverão estar desactivados. </para> +<para +>Para além disso, uma aplicação só poderá conter uma barra de menu, mas poderá conter várias barras de ferramentas. As barras de ferramentas, por outro lado, só deverão conter os comandos usados mais frequentemente pelos ícones das imagens ou deverão fornecer métodos de acesso rápido, como por exemplo listas, para seleccionar valores. </para> +</sect1> +<sect1 id="c5s2"> +<title +>Como é que funciona?</title> +<para +>A nossa aplicação herda da classe <classname +>KMainWindow</classname +>, que trata automaticamente da criação de um menu e de barras de ferramentas por nós. No método <methodname +>KScribble::setupActions()</methodname +> existe uma chamada ao método <methodname +>KMainWindow::createGUI()</methodname +>. Este método carrega um ficheiro de recursos, neste caso, o 'kscribbleui.rc', para inicializar os menus no arranque. Repare que o ficheiro 'kscribbleui.rc' está listado como um dos ficheiros do projecto no Gestor do Automake. Se abrir esse ficheiro, irá revelar o seguinte: <programlisting +>1 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> +2 <kpartgui name="kscribble" version="1"> +3 <MenuBar> +4 <Menu name="custom" +><text +>Pers&onalizado/text> +5 <Action name="custom_action" /> +6 </Menu> +7 </MenuBar> +8 </kpartgui +> +</programlisting> +</para> +<para +>Explicação... </para> +<para +>Outra forma de modificar o conteúdo do menu e das barras de ferramentas é manipulá-las directamente através dos métodos oferecidos pelas suas classes. Por exemplo, o método <methodname +>menuBar()</methodname +> devolve o elemento <classname +>KMenuBar</classname +> para a barra do menu do nosso programa. Se olhar para a documentação da <classname +>KMenuBar</classname +> e da classe herdada por ela, a <classname +>QMenuBar</classname +>, irá encontrar um grande conjunto de métodos <methodname +>insertItem()</methodname +> que lhe permitirão adicionar itens à barra do menu. </para> +<para +>Os métodos da classe <classname +>KMainWindow</classname +> que são o <methodname +>statusBar()</methodname +> e o <methodname +> toolBar()</methodname +> irão devolver-lhe também referências aos elementos também fornecidos ao utilizador da janela. </para> +</sect1> +<sect1 id="c5s3"> +<title +>Configuração de Aceleradores de Teclado</title> +<para +>Uma coisa muito profissional que você deverá sempre adicionar à sua aplicação são os aceleradores de teclado. Estes são principalmente usados pelos utilizadores experientes que gostam de trabalhar depressa com as suas aplicações e que estão dispostos a aprender atalhos. Para isso, as bibliotecas do KDE fornecem a classe <classname +> KAction</classname +>, que fornece as teclas de atalho do teclado e o acesso aos aceleradores-padrão de teclado, configurados a nível global. </para> +<para +>Por omissão, as aplicações gráficas geradas pelo &tdevelop; só usam os aceleradores de teclado normais, como o F1 para aceder à ajuda 'online', o Ctrl+N para Novo Ficheiro, etc. </para> +<para +>Se a sua aplicação contiver um conjunto de aceleradores, você deverá torná-los configuráveis num menu de opções; tanto poderão estar em conjunto com outras configurações da aplicação numa QWidget como usados isoladamente. A biblioteca do KDE já fornece uma classe <classname +>KKeyChooser</classname +> para ser usada em páginas de uma janela, enquanto que a <classname +>KKeyDialog</classname +> fornece uma janela de configuração de teclas pronta a usar. </para> + +</sect1> +</chapter> + +<!-- +<chapter id="chapter6"> +<title +>Other Features</title> +</chapter> + +<chapter id="chapter7"> +<title +>Printing Support</title> +</chapter> +--> +<chapter id="chapter8"> +<title +>Funções de Ajuda</title> +<sect1 id="c8s1"> +<title +>Introdução</title> +<para +>Uma parte muito importante do processo de desenvolvimento é fornecer as funcionalidades de ajuda ao utilizador, sempre que possível. A maioria dos programadores tendem a atrasar isto, mas você dever-se-á lembrar que um utilizador normal nem sempre é um perito em Unix. Ele poderá vir de outra escola de 'software', onde lhe é oferecido todo um conjunto de funções de auxílio para o pôr a utilizar uma aplicação sem sequer ter de tocar nos manuais. Como tal, as bibliotecas do Qt e do KDE oferecem todos os meios normalmente pensados para tornar uma aplicação profissional aos olhos de um utilizador, com funções de ajuda prontas a usar. Dentro da aplicação, estas são:</para> +<itemizedlist> +<listitem +><para +>Dicas</para +></listitem> +<listitem +><para +>Ajuda na barra de estado</para +></listitem> +<listitem +><para +>Botões 'O que é isto...?'</para +></listitem> +</itemizedlist> +<para +>Para além disso, a aplicação deverá oferecer meios de aceder a um manual 'online' baseado em HTML directamente, através da tecla de ajuda normal que é a F1. Este sistema de ajuda baseado no contexto é fornecido automaticamente através da classe <classname +>KMainWindow</classname +>, ainda que, como autor, você tenha de fornecer o conteúdo. </para> +<para +>Como o &tdevelop; também oferece todos os tipos de ajuda, assim como a plataforma do KDE gerada pelo assistente de aplicações também contém algum suporte, este capítulo ajudá-lo-á a encontrar onde deverá adicionar a sua funcionalidade de ajuda. </para> +<para +>Durante o desenvolvimento da sua aplicação, você deverá ser consistente com o que está a fazer; como tal, você deverá efectuar os passos necessários directamente, enquanto extende o código. Isto irá evitar que você se embrenhe no seu código e perca tempo a perceber o que a sua aplicação faz e o que você pretendia em determinadas partes do código. </para> +</sect1> + +<sect1 id="c8s2"> +<title +>Dicas</title> +<para +>Uma forma muito simples de fornecer ajuda são as dicas de ferramentas. Estas são pequenas mensagens de ajuda que aparecem quando o utilizador passa o rato por cima de um item, o qual mostra uma pequena explicação, e que desaparecem quando o cursor sai de cima do item. A utilização mais conhecida das dicas acontece nas barras de ferramentas, onde estas deverão ser mantidas o mais pequenas possível, dado que as barras de ferramentas podem ser configuradas para mostrar o seu conteúdo de várias formas: quer para mostrar o botão, o botão com o texto por baixo, ou apenas o texto. Esta possibilidade deverá ser configurável pelo utilizador, mas não é obrigatório. O texto é mostrado de qualquer forma como uma dica e uma barra de ferramentas normalmente consiste em botões e outros itens, como campos de edição e listas. Para uma referência completa, veja a referência da classe <classname +>KToolBar</classname +> localizada na biblioteca 'tdeui'. </para> +<para +>Neste exemplo, examinamos o botão "Novo Ficheiro" numa aplicação genérica: </para> +<para +>Aqui, a parte i18n("New File") irá mostrar uma mensagem. É rodeada pela macro i18n(), que é fornecida com o kapp.h para traduzir o texto da dica para a língua seleccionada no momento. </para> +<para +>As dicas poderão também ser adicionadas a qualquer item gráfico, se usar a classe <classname +>QToolTip</classname +> fornecida pelo Qt. Um exemplo seria: </para> +</sect1> +<sect1 id="c8s3"> +<title +>Extender a Barra de Estado</title> +<para +>Dado que as aplicações que herdam de <classname +>KMainWindow</classname +> também contêm uma barra de estado, esta classe também oferece já um conjunto de mensagens da barra de estado para todos os itens do menu e da barra de ferramentas. Uma mensagem da barra de estado é uma mensagem curta que extende o significado de uma dica de ferramentas, ou poderá ser vista como um substituto das dicas para os itens do menu e é (como o nome indica) mostrada na barra de estado, sempre que o utilizador abre um menu e selecciona um item deste. </para> +</sect1> +<sect1 id="c8s4"> +<title +>O Botão <guibutton +>O que é Isto...?</guibutton +></title> +<para +>O botão <guibutton +>O Que É Isto...?</guibutton +> fornece janelas de ajuda com a intenção de que o utilizador quer obter ajuda sobre um determinado elemento na área de trabalho ou sobre um item da barra de ferramentas. É colocado na barra de ferramentas e é activado logo que o utilizador carregue no botão. O cursor muda para uma seta com um ponto de interrogação semelhante ao que o botão tem. O utilizador então poderá carregar num item visível para obter uma janela de ajuda. Como exercício, você poderá tentar este comportamento com o botão <guibutton +>O que é isto...?</guibutton +> no &tdevelop;. </para> +<para +>Para adicionar a ajuda 'O Que É Isto...?' a um dos seus itens gráficos, use o método estático <methodname +>QWhatsThis::add(QWidget *item, const QString &texto)</methodname +> </para> +</sect1> +</chapter> + +<chapter id="chapter9"> +<title +>Documentação</title> +<sect1 id="c9s1"> +<title +>Introdução</title> +<para +>Devido ao facto de que os projectos normalmente não têm um conjunto completo de documentação do utilizador, todos os projectos do &tdevelop; contêm já um manual pré-elaborado que poderá ser facilmente adaptado; como tal, preenche outro objectivo do KDE: fornecer ajuda 'online' suficiente para suportar os utilizadores que não estejam familiarizados com uma aplicação. Assim, este capítulo irá introduzi-lo à extensão do modelo de documentação fornecido e ao que precisa de fazer para torná-lo disponível para o utilizador. </para> +</sect1> +<sect1 id="c9s2"> +<title +>Documentação para Utilizadores</title> +<para +>A documentação para o seu projecto fica normalmente em 'dir_projecto/doc/en', ou noutra directoria qualquer se o Inglês não for a sua língua nativa. Aí dentro existe um ficheiro, o 'index.docbook', no qual fica a documentação. O formato para editar este ficheiro é explicado no <ulink url="http://i18n.kde.org/doc/markup/" +>'site' Web de documentação do KDE</ulink +>. </para> +</sect1> +<sect1 id="c9s3"> +<title +>Documentação para Programadores</title> +<para +>Outra parte importante da documentação é incluir uma ajuda descritiva para as interfaces da sua classe. Isto permitir-lhe-á a si e aos outros programadores usarem as suas classes se lerem a documentação em HTML da classe, a qual poderá ser criada com o KDoc. O &tdevelop; suporta a utilização completa do KDoc para criar a documentação da biblioteca do KDE, estando também as suas plataformas aplicacionais já documentadas. Para você trabalhar também no código fornecido, seria uma boa ideia começar a ler a documentação 'online' incluída. O seguinte descreve como fazer para obter a documentação da API, onde o &tdevelop; ajudá-lo-á a adicioná-la e quais os tipos de marcas ('tags') que o KDoc oferece. </para> +</sect1> +</chapter> + +<chapter id="chapter10"> +<title +>Internacionalização</title> +<sect1 id="c10s1"> +<title +>Introdução</title> +<para +>O 'i18n' é um sistema de internacionalização que é usado para oferecer versões internacionalizadas de uma dada aplicação ou projecto. A dificuldade ao criar aplicações é que elas só suportam a língua para a qual foram criadas; visualmente isto poderá ser visto nas legendas, itens de menu, entre outros itens. O objectivo da internacionalização é oferecer às aplicações e às funções da biblioteca a língua do utilizador; como tal, permitindo aos utilizadores que não falem nativamente a língua original, que usem a funcionalidade oferecida e se sintam mais confortáveis. </para> +</sect1> +<!-- +<sect1 id="c10s2"> +<title +>How KDE support Internationalization</title> + +</sect1 +> --> +</chapter> +<!-- +<chapter id="chapter11"> +<title +>Finding Errors</title> +</chapter> + +<chapter id="chapter12"> +<title +>Licensing</title> +</chapter> + +<chapter id="chapter13"> +<title +>References</title> +</chapter> +--> +<chapter id="credits"> +<title +>Créditos</title> + +<para +>(... ainda não escrito ...) </para> + +<!--CREDITS_FOR_TRANSLATORS--> + +</chapter +> <!-- credits --> + +<appendix id="bibliography"> +<title +>Bibliografia</title> +<bibliography> + +<biblioentry> +<title +><ulink url="info://make/Top" +>GNU Make Manual</ulink +></title> +<authorgroup> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +<author +><firstname +>Roland</firstname +><surname +>McGrath</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://automake/Top" +>GNU Automake</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Tromey</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://autoconf/Top" +>GNU Autoconf</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Ben</firstname +><surname +>Elliston</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://gcc/Top" +>Using the GNU Compiler Collection</ulink +></title> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://libtool/Top" +>GNU Libtool</ulink +></title> +<authorgroup> +<author +><firstname +>Gordon</firstname +><surname +>Matzigkeit</surname +></author> +<author +><firstname +>Alexandre</firstname +><surname +>Oliva</surname +></author> +<author +><firstname +>Thomas</firstname +><surname +>Tanner</surname +></author> +<author +><firstname +>Gary V.</firstname +><surname +>Vaughan</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +>GNU Autoconf, Automake, and Libtool</title> +<edition +>1st edition</edition> +<pubdate +>October 2000</pubdate> +<authorgroup> +<author +><firstname +>Gary V.</firstname +><surname +>Vaughan</surname +></author> +<author +><firstname +>Ben</firstname +><surname +>Elliston</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Tromey</surname +></author> +<author +><firstname +>Ian Lance</firstname +><surname +>Taylor</surname +></author> +</authorgroup> +<publisher +><publishername +>New Riders Publishing</publishername +></publisher> +<isbn +>ISBN 1578701902</isbn> +</biblioentry> + + +<biblioentry> +<title +>Advanced Programming in the UNIX(R) Environment</title> +<edition +>1st edition</edition> +<pubdate +>June 1992</pubdate> +<author +><firstname +>W. Richard</firstname +><surname +>Stevens</surname +></author> +<publisher +><publishername +>Addison-Wesley Pub Co</publishername +></publisher> +<isbn +>ISBN 0201563177</isbn> +</biblioentry> + +<biblioentry> +<title +>Thinking in C++, Volume 1: Introduction to Standard C++</title> +<edition +>2nd Edition</edition> +<pubdate +>April 15, 2000</pubdate> +<author +><firstname +>Bruce</firstname +><surname +>Eckel</surname +></author> +<publisher +><publishername +>Prentice Hall</publishername +></publisher> +<isbn +>ISBN 0139798099</isbn> +</biblioentry> + +<biblioentry> +<title +>Open Source Development with CVS</title> +<edition +>2nd Edition</edition> +<pubdate +>October 12, 2001</pubdate> +<authorgroup> +<author +><firstname +>Karl</firstname +><surname +>Fogel</surname +></author> +<author +><firstname +>Moshe</firstname +><surname +>Bar</surname +></author> +</authorgroup> +<publisher +><publishername +>The Coriolis Group</publishername +></publisher> +<isbn +>ISBN 158880173X</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming PHP</title> +<edition +>1st edition</edition> +<pubdate +>March 2002</pubdate> +<authorgroup> +<author +><firstname +>Rasmus</firstname +><surname +>Lerdorf</surname +></author> +<author +><firstname +>Kevin</firstname +><surname +>Tatroe</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 1565926102</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming Python</title> +<edition +>2nd Edition</edition> +<pubdate +>March 2001</pubdate> +<author +><firstname +>Mark</firstname +><surname +>Lutz</surname +></author> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596000855</isbn> +</biblioentry> + +<biblioentry> +<title +>Gui Programming With Python : Using the Qt Toolkit</title> +<edition +>Bk&Cd-r edition</edition> +<pubdate +>January 2002</pubdate> +<author +><firstname +>Boudewijn</firstname +><surname +>Rempt</surname +></author> +<publisher +><publishername +>Opendocs Llc</publishername +></publisher> +<isbn +>ISBN 0970033044</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming Perl</title> +<subtitle +>The Camel book</subtitle> +<edition +>3rd Edition</edition> +<pubdate +>July 2000</pubdate> +<authorgroup> +<author +><firstname +>Larry</firstname +><surname +>Wall</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Christiansen</surname +></author> +<author +><firstname +>Jon</firstname +><surname +>Orwant</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596000278</isbn> +</biblioentry> + +<biblioentry> +<title +>Learning Perl</title> +<subtitle +>The Lama book</subtitle> +<edition +>3rd Edition</edition> +<pubdate +>July 15, 2001</pubdate> +<authorgroup> +<author +><firstname +>Randal L.</firstname +><surname +>Schwartz</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Phoenix</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596001320</isbn> +</biblioentry> + +</bibliography> + +&underFDL; + + +</appendix> + +</book> diff --git a/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.am b/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.am new file mode 100644 index 00000000000..6869837a64a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.in b/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.in new file mode 100644 index 00000000000..52e91d74e41 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kdearch/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdevelop/kdearch +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kdearch/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @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 index.docbook ; 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 index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kdearch/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt/docs/tdevelop/kdearch/index.cache.bz2 b/tde-i18n-pt/docs/tdevelop/kdearch/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..b6600faf9ff --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kdearch/index.cache.bz2 diff --git a/tde-i18n-pt/docs/tdevelop/kdearch/index.docbook b/tde-i18n-pt/docs/tdevelop/kdearch/index.docbook new file mode 100644 index 00000000000..bb526afcd02 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/kdearch/index.docbook @@ -0,0 +1,3711 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Portuguese "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Introdução à Arquitectura do KDE</title> + +<date +></date> +<releaseinfo +></releaseinfo> + +<authorgroup> +<author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +><address +><email +>bernd@tdevelop.org</email +></address +></affiliation> +</author> +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<holder +>Bernd Gehrmann</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<abstract> +<para +>Esta documentação dá uma ideia geral sobre a Plataforma de Desenvolvimento do KDE</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>arquitectura</keyword> +<keyword +>desenvolvimento</keyword> +<keyword +>programação</keyword> +</keywordset> + +</bookinfo> + +<chapter id="structure"> +<title +>Estrutura da biblioteca</title> + +<simplesect id="structure-byname"> +<title +>Bibliotecas por nome</title> + +<variablelist> + +<varlistentry> +<term +><ulink url="kdeapi:tdecore/index.html" +>tdecore</ulink +></term> +<listitem +><para +>A biblioteca 'tdecore' é a plataforma aplicacional básica para todos os programa baseados no KDE. Ela fornece o acesso ao sistema de configuração, ao tratamento da linha de comandos, o carregamento e manipulação de ícones, alguns itens básicos de comunicação entre processos, tratamento de ficheiros e muitos outros utilitários. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:tdeui/index.html" +>tdeui</ulink +></term> +<listitem +><para +>A biblioteca <literal +>tdeui</literal +> fornece vários elementos gráficos e janelas que o Qt não tem ou que tem mas com menos funcionalidades. Inclui também vários elementos itens que são sub-classes das versões do Qt e que se integram melhor com o ambiente do KDE no que respeita às preferências do utilizador. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kio/index.html" +>kio</ulink +></term> +<listitem +><para +>A biblioteca <literal +>kio</literal +> contém funcionalidades para E/S assíncronas e transparentes na rede, assim como o tratamento de tipos MIME. Também contém a janela de ficheiros do KDE e as suas classes auxiliares. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kjs/index.html" +>kjs</ulink +></term> +<listitem +><para +>A biblioteca <literal +>kjs</literal +> contém uma implementação de JavaScript. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:khtml/index.html" +>khtml</ulink +></term> +<listitem +><para +>A biblioteca <literal +>khtml</literal +> contém a componente KHTML, um elemento de navegação em HTML, com uma API e um processador de DOM e que inclui interfaces para Java e JavaScript. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="structure-grouped"> +<title +>Classes agrupadas</title> + +<para +>Esqueleto de uma aplicação básica - classes necessárias por quase todas as aplicações. </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:tdecore/KApplication" +>KApplication</ulink +></title> +<para +>Inicializa e controla uma aplicação do KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:tdecore/KUniqueApplication" +>KUniqueApplication</ulink +></title> +<para +>Certifica-se que só uma instância de uma determinada aplicação poderá correr em simultâneo. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KAboutData" +>KAboutData</ulink +></title> +<para +>Contém as informações da janela Acerca. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KCmdLineArgs" +>KCmdLineArgs</ulink +></title> +<para +>Processamento de argumentos da linha de comandos. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Gestão de configurações - acesso à base de dados hierárquica de configuração do KDE, as configurações globais e os recursos da aplicação. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KConfig" +>KConfig</ulink +></title> +<para +>Fornece o acesso à base de dados de configuração do KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KSimpleConfig" +>KSimpleConfig</ulink +></title> +<para +>Acesso a ficheiros de configuração simples, não hierárquicos. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KDesktopFile" +>KDesktopFile</ulink +></title> +<para +>Acesso a ficheiros <literal +>.desktop</literal +>. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KGlobalSettings" +>KGlobalSettings</ulink +></title> +<para +>Um acesso conveniente a configurações não-específicas de uma aplicação. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Tratamento de ficheiros e URLs - descodificação de URLs, ficheiros temporário, etc. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KURL" +>KURL</ulink +></title> +<para +>Representa e processa os URLs. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KTempFile" +>KTempFile</ulink +></title> +<para +>Cria ficheiros únicos para dados temporários. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KSaveFile" +>KSaveFile</ulink +></title> +<para +>Permite gravar os ficheiros de forma atómica. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Comunicação inter-processos - classes auxiliares de DCOP e invocação de sub-processos. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KProcess" +>KProcess</ulink +></title> +<para +>Invoca e controla os processos-filhos. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KShellProcess" +>KShellProcess</ulink +></title> +<para +>Invoca os processos-filhos através de uma linha de comandos. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdesu/PtyProcess" +>PtyProcess</ulink +></title> +<para +>Comunicação com os processos-filhos através de um pseudo-terminal. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KIPC" +>KIPC</ulink +></title> +<para +>Mecanismo simples de IPC com ClientMessages do X11. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:dcop/DCOPClient" +>DCOPClient</ulink +></title> +<para +>Troca de mensagens DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KDCOPPropertyProxy" +>KDCOPPropertyProxy</ulink +></title> +<para +>Uma classe 'proxy' que publica as propriedades do Qt através do DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KDCOPActionProxy" +>KDCOPActionProxy</ulink +></title> +<para +>Uma classe 'proxy' que publica uma interface de DCOP para as acções. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Classes utilitárias - gestão de memória, expressões regulares, manipulação de cadeias de caracteres, números aleatórios </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KRegExp" +>KRegExp</ulink +></title> +<para +>Expressões regulares POSIX. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KStringHandler" +>KStringHandler</ulink +></title> +<para +>Uma interface extravagante para manipular cadeias de caracteres. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KZoneAllocator" +>KZoneAllocator</ulink +></title> +<para +>Um alocador de memória eficiente para grandes grupos de objectos pequenos. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KRandomSequence" +>KRandomSequence</ulink +></title> +<para +>Um gerador de números pseudo-aleatórios. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Aceleradores de teclado - classes que ajudam a estabelecer associações de teclas consistentes em todo o ambiente de trabalho. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KAccel" +>KAccel</ulink +></title> +<para +>Uma colecção de atalhos de teclado. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KStdAccel" +>KStdAccel</ulink +></title> +<para +>Um acesso fácil aos atalhos de teclado comuns. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KGlobalAccel" +></ulink +></title> +<para +>Uma colecção de atalhos de teclado ao nível do sistema. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Processamento de imagens - leitura e manipulação de ícones. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KIconLoader" +>KIconLoader</ulink +></title> +<para +>Carrega os ícones de uma forma dependente do tema. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KIconTheme" +>KIconTheme</ulink +></title> +<para +>Classes auxiliares para o KIconLoader. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KPixmap" +>KPixmap</ulink +></title> +<para +>Uma classe de imagens com capacidades de gestão de tons extendidas. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KPixmapEffect" +>KPixmapEffect</ulink +></title> +<para +>Efeitos de imagens como gradientes e padrões. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KPixmapIO" +>KPixmapIO</ulink +></title> +<para +>Uma conversão rápida de <classname +>QImage</classname +> para <classname +>QPixmap</classname +>. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>'Drag and Drop' - arrastar objectos de cores e URLs. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KURLDrag" +>KURLDrag</ulink +></title> +<para +>Um objecto de arrastamento de URLs. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KColorDrag" +>KColorDrag</ulink +></title> +<para +>Um objecto de arrastamento para cores. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KMultipleDrag" +>KMultipleDrag</ulink +></title> +<para +>Permite construir objectos de arrastamento a partir de vários outros objectos. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Completação Automática </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KCompletion" +>KCompletion</ulink +></title> +<para +>Auto-completação genérica de cadeias de caracteres. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KURLCompletion" +>KURLCompletion</ulink +></title> +<para +>Completação automática de URLs. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KShellCompletion" +>KShellCompletion</ulink +></title> +<para +>Completação automática de executáveis. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Elementos gráficos - classes de listas, réguas, selecção de cores, etc. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KListView" +>KListView</ulink +></title> +<para +>Uma variante da <classname +>QListView</classname +> que usa as configurações de sistema do KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KListView" +>KListBox</ulink +></title> +<para +>Uma variante da <classname +>QListBox</classname +> que usa as configurações de sistema do KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KListView" +>KIconView</ulink +></title> +<para +>Uma variante da <classname +>QIconView</classname +> que usa as configurações de sistema do KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KListView" +>KLineEdit</ulink +></title> +<para +>Uma variante da <classname +>QLineEdit</classname +> com o suporte de completação. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KComboBox" +>KComboBox</ulink +></title> +<para +>Uma variante da <classname +>QComboBox</classname +> com o suporte de completação. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KFontCombo" +>KFontCombo</ulink +></title> +<para +>Uma lista para seleccionar tipos de letra. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KColorCombo" +>KColorCombo</ulink +></title> +<para +>Uma lista para seleccionar cores. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KColorButton" +>KColorButton</ulink +></title> +<para +>Um botão para seleccionar cores. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KURLCombo" +>KURLCombo</ulink +></title> +<para +>Uma lista para seleccionar nomes de ficheiros e URLs. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequester" +>KURLRequester</ulink +></title> +<para +>Um campo de texto para seleccionar nomes e URLs de ficheiros. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KRuler" +>KRuler</ulink +></title> +<para +>Uma régua. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink +url="kdeapi:tdeui/KAnimWidget" +>KAnimWidget</ulink +></title> +<para +>animações. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KNumInput" +>KNumInput</ulink +></title> +<para +>Um item para introduzir números. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KPasswordEdit" +>KPasswordEdit</ulink +></title> +<para +>Um item para introduzir senhas. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Janelas - janelas completas para seleccionar ficheiros, cores e tipos de letra. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KFileDialog" +>KFileDialog</ulink +></title> +<para +>Uma janela de selecção de ficheiros. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KColorDialog" +>KColorDialog</ulink +></title> +<para +>Uma janela de selecção de cores. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KFontDialog" +>KFontDialog</ulink +></title> +<para +>Uma janela de selecção de tipos de letra. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KIconDialog" +>KIconDialog</ulink +></title> +<para +>Uma janela de selecção de ícones. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KKeyDialog" +>KKeyDialog</ulink +></title> +<para +>Uma janela para editar combinações de teclas. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KEditToolBar" +>KEditToolBar</ulink +></title> +<para +>Um diálogo para editar barras de ferramentas. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KTipDialog" +>KTipDialog</ulink +></title> +<para +>Uma janela de Dica-do-Dia. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KAboutDialog" +>KAboutDialog</ulink +></title> +<para +>Uma janela Acerca. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KLineEditDlg" +>KLineEditDlg</ulink +></title> +<para +>Uma janela simples para introduzir texto. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequesterDlg" +>KURLRequesterDlg</ulink +></title> +<para +>Uma janela simples para introduzir URLs. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KMessageBox" +>KMessageBox</ulink +></title> +<para +>Uma janela para assinalar erros e avisos. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KPasswordDialog" +>KPasswordDialog</ulink +></title> +<para +>Uma janela para introduzir senhas. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Acções e GUI em XML </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KAction" +>KAction</ulink +></title> +<para +>Uma abstracção de uma acção que poderá ser associada a menus e barras de ferramentas. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KActionCollection" +>KActionCollection</ulink +></title> +<para +>Um conjunto de acções. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdeui/KXMLGUIClient" +>KXMLGUIClient</ulink +></title> +<para +>Um fragmento gráfico que consiste numa colecção de acções e uma árvore de DOM que representa a posição delas na GUI. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kparts/KPartManager" +>KPartManager</ulink +></title> +<para +>Faz a gestão da activação dos clientes XMLGUI. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>'Plugins' e Componentes </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KLibrary" +>KLibrary</ulink +></title> +<para +>Representa uma biblioteca carregada dinamicamente. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KLibrary" +>KLibLoader</ulink +></title> +<para +>Carregamento de bibliotecas dinâmicas. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:tdecore/KLibFactory" +>KLibFactory</ulink +></title> +<para +>Uma fábrica de objectos para 'plugins'. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceType" +>KServiceType</ulink +></title> +<para +>Representa um tipo de serviço. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KService" +>KService</ulink +></title> +<para +>Representa um serviço. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KMimeType" +>KMimeType</ulink +></title> +<para +>Representa um tipo MIME. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KServiceTypeProfile</ulink +></title> +<para +>Preferências do utilizador para os mapeamentos dos tipos MIME. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KTrader</ulink +></title> +<para +>Pesquisa de serviços. </para> +</formalpara +></listitem> + +</itemizedlist> + +</simplesect> + +</chapter> + + + +<chapter id="graphics"> +<title +>Gráficos</title> + +<sect1 id="graphics-qpainter"> +<title +>Gráficos de baixo nível com o QPainter</title> + +<simplesect id="qpainter-rendering"> +<title +>Desenhar no QPainter</title> + +<para +>O modelo de imagens de baixo nível do Qt é baseado nas capacidades oferecidas pelo X11 e por outros sistemas de janelas para os quais o Qt foi implementado. Mas também as extende, implementando funcionalidades adicionais como as transformações arbitrárias por afinidade para texto e imagens. </para> + +<para +>A classe gráfica central para o desenho 2D com o Qt é a <ulink url="kdeapi:qt/QPainter" +>QPainter</ulink +>. Ela poderá desenhar num <ulink url="kdeapi:qt/QPaintDevice" +>QPaintDevice</ulink +>. Existem três dispositivos de pintura implementados: um é o <ulink url="kdeapi:qt/QWidget" +>QWidget</ulink +> que representa um elemento gráfico no ecrã. A outra é o <ulink url="kdeapi:qt/QPrinter" +>QPrinter</ulink +> que representa uma impressora e que produz o resultado em &PostScript;. A terceira é a <ulink url="kdeapi:qt/QPicture" +>QPicture</ulink +> que guarda os comandos de desenho e que poderá gravá-los em disco e reproduzi-los depois. Uma formato possível para os comandos de desenho é a norma SVG da W3C. </para> + +<para +>Como tal, é possível reaproveitar o código de desenho que você usa para mostrar num item gráfico ou para imprimir, usando as mesmas funcionalidades suportadas. Claro que, na prática, o código é usado num contexto ligeiramente diferente. Desenhar num item gráfico é quase exclusivamente feito no método <methodname +>paintEvent()</methodname +> da classe de um elemento gráfico. </para> + +<programlisting +>void ElementoXPTO::paintEvent() +{ + QPainter p(this); + // Configurar o pintor + // Usar o pintor +} +</programlisting> + +<para +>Ao desenhar numa impressora, você terá de se certificar que usa o <methodname +>QPrinter::newPage()</methodname +> para terminar uma página e começar uma nova - algo que naturalmente não é relevante ao desenhar elementos gráficos. Também, durante a impressão, você poderá querer usar a classe de <ulink url="kdeapi:qt/QPaintDeviceMetrics" +>métricas do dispositivo</ulink +> para poder calcular as coordenadas. </para> + +</simplesect> + + +<simplesect id="qpainter-transformations"> +<title +>Transformações</title> + +<para +>Por omissão, ao usar o QPainter, ele desenha no sistema de coordenadas natural do dispositivo usado. Isto significa que, se você desenhar uma linha horizontal no eixo horizontal com um tamanho de 10 unidades, ele será pintado ao longo do ecrã com um tamanho de 10 pixels. Contudo, o QPainter pode aplicar várias transformações antes de desenhar propriamente as formas e as curvas. Uma transformação por afinidade mapeia as coordenadas X e Y linearmente em X' e Y' de acordo com </para> + +<mediaobject> +<imageobject +><imagedata fileref="affine-general.png"/></imageobject> +</mediaobject> + +<para +>A matriz 3x3 desta equação poderá ser configurada com o método <methodname +>QPainter::setWorldMatrix()</methodname +> e é do tipo <ulink url="kdeapi:qt/QWMatrix" +>QWMatrix</ulink +>. Normalmente, esta é a matriz identidade, isto é, o m11 e o m22 are one, e os outros parâmetros são zero. Existem basicamente três grupos diferentes de transformações: </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +>Translações</title> +<para +>Estas movem todos os pontos de um objecto de uma determinada quantidade numa dada direcção. A matriz de translação poderá ser obtida, invocando o método 'm.translate(dx, dy)' para uma QWMatrix. Isto corresponde à matriz </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-translate.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Redimensionamento</title> +<para +>Esta matriz aumenta ou encolhe as coordenadas de um objecto, tornando-o maior ou menor sem o distorcer. Uma transformação de escala poderá ser aplicada a uma QWMatrix se invocar o m.scale(sx, sy). Isto corresponde à matriz </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-scale.png"/></imageobject> +</mediaobject> + +<para +>Configurando um dos parâmetros como negativo, uma pessoa poderá obter um espelho do sistema de coordenadas. </para> + +</listitem> + +<listitem +><formalpara> +<title +>Inclinação</title> +<para +>Uma distorção do sistema de coordenadas com dois parâmetros. Uma transformação por inclinação poderá ser aplicada se chamar m.shear(sh, sv), correspondendo à matriz </para> +</formalpara> + +<mediaobject> + <imageobject +><imagedata fileref="affine-shear.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Rotação</title> +<para +>Isto roda um objecto. Uma transformação por rotação poderá ser aplicada se chamar m.rotate(alfa). Lembre-se que o ângulo tem de ser dado em graus, não como um ângulo matemático! A matriz correspondente é </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-rotate.png"/></imageobject> +</mediaobject> + +<para +>Repare que uma rotação é equivalente a uma combinação de uma escala com uma inclinação. </para> + +</listitem> + +</itemizedlist> + +<para +>Aqui estão algumas imagens que mostram o efeito das transformações elementares à nossa mascote: </para> + +<informaltable frame="none"> +<tgroup cols="3"> +<tbody> +<row> +<entry +><mediaobject> + <imageobject +><imagedata fileref="konqi-normal.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="konqi-rotated.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="konqi-sheared.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="konqi-mirrored.png"/></imageobject> +</mediaobject +></entry> +</row> +<row> +<entry +>a) Normal</entry> +<entry +>b) Rodado em 30 graus</entry> +<entry +>c) inclinado em 0,4</entry> +<entry +>d) Espelhado</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>As transformações podem ser combinadas, multiplicando as matrizes elementares. Repare que as operações com matrizes não comutativas de um modo geral, como tal o efeito combinado de uma concatenação depende da ordem pela qual as matrizes são multiplicadas. </para> + +</simplesect> + + +<simplesect id="qpainter-strokeattributes"> +<title +>Definir os atributos dos traços</title> + +<para +>O desenho das linhas, curvas e contornos dos polígonos pode ser modificado se aplicar um traço especial com o QPainter::setPen(). O argumento desta função é um objecto <ulink url="kdeapi:qt/QPen" +>QPen</ulink +>. As propriedades gravadas nele são o estilo, a cor, o estilo da junção e o estilo dos extremos. </para> + +<para +>O estilo do traço é um membro do tipo enumerado <ulink url="kdeapi:qt/Qt#PenStyle-enum" +>Qt::PenStyle</ulink +> e poderá ter um dos seguintes valores: </para> + +<mediaobject> + <imageobject +><imagedata fileref="penstyles.png"/></imageobject> +</mediaobject> + +<para +>O estilo da junção é um membro do tipo enumerado <ulink url="kdeapi:qt/Qt#PenJoinStyle-enum" +>Qt::PenJoinStyle</ulink +>. Ele indica como é que a junção entre várias linhas anexadas umas às outras é desenhada. Ela poderá ter um dos seguintes valores: </para> + +<informaltable frame="none"> +<tgroup cols="3"> +<tbody> +<row> +<entry +><mediaobject> + <imageobject +><imagedata fileref="joinmiter.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="joinbevel.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="joinround.png"/></imageobject> +</mediaobject +></entry> +</row> +<row> +<entry +>a) MiterJoin</entry> +<entry +>c) BevelJoin</entry> +<entry +>b) RoundJoin</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>O estilo dos extremos é um membro do tipo enumerado <ulink url="kdeapi:qt/Qt#PenCapStyle-enum" +>Qt::PenCapStyle</ulink +> e corresponde à forma como os extremos das linhas são desenhados. Poderá ser igual a um dos valores da seguinte tabela: </para> + +<informaltable frame="none"> +<tgroup cols="3"> +<tbody> +<row> +<entry +><mediaobject> + <imageobject +><imagedata fileref="capflat.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="capsquare.png"/></imageobject> +</mediaobject +></entry> +<entry +><mediaobject> + <imageobject +><imagedata fileref="capround.png"/></imageobject> +</mediaobject +></entry> +</row> +<row> +<entry +>a) FlatCap</entry> +<entry +>b) SquareCap</entry> +<entry +>c) RoundCap</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</simplesect> + + +<simplesect id="qpainter-fillattributes"> +<title +>Definir os atributos do preenchimento</title> + +<para +>O estilo de preenchimento dos polígonos, dos círculos e dos rectângulo poderá ser modificado se definir um pincel especial com o QPainter::setBrush(). Esta função recebe um objecto <ulink url="kdeapi:qt/QBrush" +>QBrush</ulink +> como argumento. Os pincéis podem ser construídos de quatro formas diferentes: </para> + +<itemizedlist> +<listitem> +<para +>QBrush::QBrush() - Isto cria um pincel que não preenche as formas geométricas.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(BrushStyle) - Isto cria um pincel preto com um dos padrões predefinidos que são mostrados em baixo.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, BrushStyle) - Isto cria um pincel colorido com um dos seguinte padrões mostrados em baixo.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, const QPixmap) - Isto cria um pincel colorido com o padrão personalizado que você passar como segundo parâmetro.</para> +</listitem> +</itemizedlist> + +<para +>Um estilo de pincel predefinido pertence ao tipo enumerado <ulink url="kdeapi:qt/Qt#BrushStyle-enum" +>Qt::BrushStyle</ulink +>. Aqui está uma imagem com todos os padrões predefinidos: </para> + +<mediaobject> + <imageobject +><imagedata fileref="brushstyles.png"/></imageobject> +</mediaobject> + +<para +>Uma outra forma de personalizar o comportamento do pincel é usando a função <methodname +>QPainter::setBrushOrigin()</methodname +>. </para> + +</simplesect> + + +<simplesect id="qpainter-color"> +<title +>Cor</title> + +<para +>As cores têm um papel activo, quer a traçar as curvas, quer a preencher as formas geométricas. No Qt, as cores são representadas pela classe <ulink url="kdeapi:qt/QColor" +>QColor</ulink +>. O Qt não suporta as funcionalidades gráficas avançadas, como os perfis de cores ICC e a correcção de cores. As cores são normalmente definidas, indicando os valores das componentes vermelha, verde e azul, dado que o modelo RGB é a forma como os pixels são compostos num monitor. </para> + +<para +>É também possível usar o matiz, a saturação e o valor. Esta representação HSV é a que você usa na janela de cores do Gtk, p.ex. no GIMP. Aí, o matiz corresponde ao ângulo na roda de cores, enquanto a saturação corresponde à distância ao centro do círculo. O valor pode ser escolhido com uma barra em separado. </para> + +</simplesect> + + +<simplesect id="qpainter-paintsettings"> +<title +>Outras configurações</title> + +<para +>Normalmente, quando você desenha num dispositivo de pintura, os pixels que você desenho substituem os que lá estavam anteriormente. Isto significa que, se você pintar uma dada região com uma cor vermelho e pintar a mesma região com uma cor azul depois, só a cor azul ficará visível. O modelo de imagens do Qt não suporta a transparência, i.e., uma forma de misturar o fundo preenchido e os desenhos. Contudo, existe uma forma simples de combinar o desenho e o fundo com operadores booleanos. O método QPainter::setRasterOp() define o operador usado, que vem do tipo enumerado <ulink url="kdeapi:qt/Qt#RasterOp-enum" +>RasterOp</ulink +>. </para> + +<para +>O valor por omissão é o CopyROP que ignora o fundo. Outra escolha normal é a XorROP. Se você pintar uma linha a preto com este operador numa imagem colorida, então a área coberta será invertida. Este efeito é usado, por exemplo, para criar as selecções tracejadas dos programas de manipulação de imagens que são conhecidas por "formigas a marchar". </para> + +</simplesect> + + +<simplesect id="qpainter-primitives"> +<title +>Desenhar primitivas gráficas</title> + +<para +>Na secção seguinte iremos listar os elementos gráficos primitivos suportados pelo QPainter. A maioria deles existem em várias versões alternativas que recebem um conjunto diferente de argumentos. Por exemplo, os métodos que lidam com rectângulos normalmente recebem um <ulink url="kdeapi:qt/QRect" +>QRect</ulink +> como argumento, ou então um conjunto de quatro inteiros. </para> + +<itemizedlist> +<listitem> +<para +>Desenhar um único ponto - drawPoint().</para> +</listitem> +<listitem> +<para +>Desenhar linhas - drawLine(), drawLineSegments() e drawPolyLine().</para> +</listitem> +<listitem> +<para +>Desenhar e preencher rectângulos - drawRect(), drawRoundRect(), fillRect() e eraseRect().</para> +</listitem> +<listitem> +<para +>Desenhar e preencher círculos, elipses ou partes deles - drawEllipse(), drawArc(), drawPie e drawChord().</para> +</listitem> +<listitem> +<para +>Desenhar e preencher polígonos gerais - drawPolygon().</para> +</listitem> +<listitem> +<para +>Desenhar curvas Bezier - drawQuadBezier() [drawCubicBezier no Qt 3.0].</para> +</listitem> +</itemizedlist> + +</simplesect> + + +<simplesect id="qpainter-pixmaps"> +<title +>Desenhar imagens</title> + +<para +>O Qt oferece duas classes muito diferentes para representar as imagens. </para> + +<para +>A <ulink url="kdeapi:qt/QPixmap" +>QPixmap</ulink +> corresponde directamente aos objectos das imagens no X11. As imagens são objectos do lado do servidor e podem - numa placa gráfica moderna - até mesmo ser gravadas directamente na memória da placa. Isto torna <emphasis +>bastante</emphasis +> eficiente a transferência de imagens para o ecrã. As imagens também funcionam como um equivalente, fora do ecrã , dos elementos gráficos - a classe QPixmap é uma subclasse da QPaintDevice, por isso você poderá desenhar nela com um QPainter. As operações elementares de desenho são normalmente aceleradas pelos dispositivos gráficos modernos. Daí, um padrão de uso normal é usar as imagens para fazer duplo-'buffering'. Isto significa que, em vez de desenhar directamente num elemento gráfico, você desenha num objecto temporário de imagem e usa a função <ulink url="kdeapi:qt/QPaintDevice#bitBlt-1" +>bitBlt</ulink +> para transferir a imagem para o elemento gráfico. Para os desenhos complexos, isto ajuda a evitar intermitências. </para> + +<para +>Em contraste, os objectos <ulink url="kdeapi:qt/QImage" +>QImage</ulink +> residem do lado do cliente. A sua ênfase é na fornecer um acesso directo aos pixels da imagem. Isso torna-os úteis para manipular imagens e para coisas como a leitura e gravação em disco (o método load() da QPixmap recebe uma QImage como passo intermédio). Por outro lado, desenhar uma imagem num elemento gráfico é uma operação relativamente dispendiosa, dado que implica uma transferência para o servidor X, o que ainda poderá levar algum tempo, especialmente para imagens grandes e para servidores remotos. Dependendo da profundidade de cor, a conversão de uma QImage para uma QPixmap pode necessitar de ajuste de cores. </para> + +</simplesect> + + +<simplesect id="qpainter-drawingtext"> +<title +>Desenhar texto</title> + +<para +>O texto poderá ser desenhado com uma das variantes do método QPainter::drawText(). Estas desenham uma QString quer num dado ponto, quer num dado rectângulo, usando o tipo de letra definido pelo QPainter::setFont(). Existe também um parâmetro que recebe uma combinação do tipo OU de algumas opções dos tipos enumerados <ulink url="kdeapi:qt/Qt#AlignmentFlags-enum" +>Qt::AlignmentFlags</ulink +> e <ulink url="kdeapi:qt/Qt#TextFlags-enum" +>Qt::TextFlags</ulink +> </para> + +<para +>A partir da versão 3.0, o Qt toma conta da disposição completa do texto, mesmo para as línguas escritas da direita para a esquerda. </para> + +<para +>Uma forma mais avançada de mostrar o texto marcado é usando a classe <ulink url="kdeapi:qt/QSimpleRichText" +>QSimpleRichText</ulink +>. Os objectos desta classe podem ser construídos com um pedaço de texto que usa um sub-conjunto das marcas de HTML, o qual é bastante rico e até fornece tabelas. O estilo do texto pode ser personalizado com uma <ulink url="kdeapi/qt/QStyleSheet" +>QStyleSheet</ulink +> (a documentação das marcas pode também ser encontrada aqui). Logo que o objecto de texto formatado tenha sido construído, pode ser desenhado num elemento gráfico ou noutro dispositivo de pintura com o método QSimpleRichText::draw(). </para> + +</simplesect> + +</sect1> + + +<sect1 id="graphics-qcanvas"> +<title +>Imagens estruturadas com o QCanvas</title> + +<para +>A QPainter oferece um modelo de imagens poderosos para desenhar em elementos gráficos e imagens. Contudo, também poderá ser complicadíssimo de usar. De cada vez que o seu elemento gráfico recebe um evento de desenho, ele terá de analisar o QPaintEvent::region() ou o QPaintEvent::rect() que tem de ser desenhado de novo. Aí, ele terá de configurar um QPainter e desenhar todos os objectos que se sobrepõem com essa região. Por exemplo, imagine um programa de gráficos vectoriais que permita arrastar objectos como polígonos, círculos e grupos de outros objectos. De cada vez que esses objectos se movem um pouco, o tratador para os eventos do rato do elemento gráfico irá despoletar um evento para a área toda coberta pelos objectos na sua posição antiga e na sua posição nova. Descobrir quais são as actualizações necessárias e fazê-las de forma eficiente poderá ser difícil e poderá também entrar em conflito com a estrutura orientada por objectos do código-fonte do programa. </para> + +<para +>Como alternativa, o Qt contém a classe <ulink url="kdeapi:qt/QCanvas" +>QCanvas</ulink +>, na qual você coloca os objectos gráficos, como os polígonos, o texto e as imagens. Você também poderá também fornecer itens adicionais se criar uma subclasse de <ulink url="kdeapi:qt/QCanvasItem" +>QCanvasItem</ulink +> ou uma das suas subclasses especializadas. Uma área de desenho ('canvas') poderá ser mostrada no ecrã por um ou mais elementos gráficos da classe <ulink url="kdeapi:qt/QCanvas" +>QCanvasView</ulink +>, a qual você terá de criar uma subclasse para tratar das interacções com o utilizador. O Qt tratará de todas as actualizações do desenho dos objectos na área visível, quer sejam provocadas pela exposição da janela, quer pela criação ou modificação dos objectos ou ainda por qualquer outra razão. Usando o duplo-'buffering', isto poderá ser feito de uma forma eficiente e livre de intermitências. </para> + +<para +>Os itens da área de desenho podem-se sobrepor uns aos outros. Neste caso, o visível depende da ordem do 'z' que pode ser atribuída pelo QCanvasItem::setZ(). Os itens podem também ser tornados visíveis ou invisíveis. Você pode também indicar um fundo a ser desenhado "por detrás" de todos os itens e uma imagem de primeiro plano. Para associar os eventos do rato com os objectos na área de desenho, existe o método QCanvas::collisions() que devolve uma lista dos itens que se sobrepõem em qualquer ponto. Aqui mostramos uma imagem de uma vista sobre a área de desenho em acção: </para> + +<mediaobject> +<imageobject +><imagedata fileref="canvas.png"/></imageobject> +</mediaobject> + +<para +>Aqui, a malha é desenhada no fundo. Para além disso, existe um item QCanvasText item e um QCanvasPolygon violeta. A borboleta é um QCanvasPixmap. Ele tem áreas transparentes, por isso é possível ver os itens de baixo através dele. </para> + +<para +>Um tutorial sobre a utilização do QCanvas para criar jogos baseados em imagens poderá ser encontrado <ulink url="http://zez.org/article/articleview/2/1/" +>aqui</ulink +>. </para> + +</sect1> + + +<sect1 id="graphics-qglwidget"> +<title +>Gráficos 3D com o OpenGL</title> + +<simplesect id="qglwidget-lowlevel"> +<title +>Interface de baixo nível</title> + +<para +>A norma de facto para desenhar gráficos 3D hoje em dia é o <ulink url="http://www.opengl.org" +>OpenGL</ulink +>. As implementações desta especificação vêm com o Microsoft Windows, o Mac OS X e o XFree86 e muitas vezes suportam as funcionalidades de aceleração por 'hardware' oferecidas pelas placas gráficas modernas. O OpenGL em si só lida com o desenho de uma determinada área do ecrã através de um <emphasis +>contexto GL</emphasis +> e não tem nenhuma interacção com a plataforma do ambiente </para> + +<para +>O Qt fornece o item <ulink url="kdeapi:qt/QGLWidget" +>QGLWidget</ulink +> que encapsula uma janela com um contexto GL associado. Basicamente, você poderá utilizá-la se criar uma sub-classe dela e implementar de novo alguns métodos. </para> + +<itemizedlist> + +<listitem +><para +>Em vez de reimplementar o <methodname +>paintEvent()</methodname +> e usar o QPainter para desenhar o conteúdo do elemento, você irá sobrepor o <methodname +>paintGL()</methodname +> e usar os comandos do GL para desenhar uma cena. A <classname +>QLWidget</classname +> irá tomar conta de tornar o seu contexto GL o actual antes de invocar o <methodname +>paintGL()</methodname +> e irá remeter tudo no fim. </para +></listitem> + +<listitem +><para +>O método virtual <methodname +>initializeGL()</methodname +> é invocado logo da primeira vez em que o <methodname +>resizeGL()</methodname +> ou o <methodname +>paintGL()</methodname +> são chamados. Isto pode ser usado para construir listas de visualização para os objectos e para fazer as várias inicializações. </para +></listitem> + +<listitem +><para +>Em vez de reimplementar o <methodname +>resizeEvent()</methodname +>, você irá sobrepor o <methodname +>resizeGL()</methodname +>. Este poderá ser usado para definir apropriadamente o porto de visualização. </para +></listitem> + +<listitem +><para +>Em vez de invocar o <methodname +>update()</methodname +> sempre que o estado da cena é mudado - por exemplo, quando você o anima com um temporizador -, você deverá invocar o <methodname +>updateGL()</methodname +>. Isto irá despoletar uma actualização. </para +></listitem> + +</itemizedlist> + +<para +>De um modo geral, o QGLWidget comporta-se como outro item gráfico, i.e., por exemplo, você poderá processar os eventos normais do rato como de costume, redimensionar a janela e combiná-la com outras numa dada disposição. </para> + +<mediaobject> +<imageobject +><imagedata fileref="opengl.png"/></imageobject> +</mediaobject> + +<para +>O Qt contém alguns exemplos de utilização do QGLWidget no seu exemplo <literal +>demo</literal +>. Pode-se encontrar uma colecção de tutoriais <ulink url="http://www.libsdl.org/opengl/intro.html" +>aqui</ulink +>, assim como mais informações e uma referência ao OpenGL, na <ulink url="http://www.opengl.org" +>página pessoal do OpenGL</ulink +>. </para> + +</simplesect> + + +<simplesect id="qglwidget-highlevel"> +<title +>Interfaces de alto-nível</title> + +<para +>O OpenGL é uma interface de relativo baixo nível para gráficos 3D. Da mesma forma que o QCanvas dá ao programador uma interface de maior nível com detalhes para os objectos e as suas propriedades, existem também interfaces de alto nível para os gráficos 3D. Uma das mais conhecidas é o Open Inventor. Sendo originalmente uma tecnologia desenvolvida pela SGI, existe hoje em dia também a implementação 'open-source' que é a <ulink url="http://www.coin3d.org" +>Coin</ulink +>, complementada por uma interface para a plataforma e para o Qt chamada SoQt. </para> + +<para +>O conceito básico do Open Inventor é o de uma <emphasis +>cena</emphasis +>. Uma cena poderá ser carregada a partir do disco e gravada num formato ligeiramente relacionado com o <ulink url="http://www.vrml.org" +>VRML</ulink +>. Uma cena consiste numa colecção de objectos chamados <emphasis +>nós</emphasis +>. O Inventor já contém uma rica colecção de nós reutilizáveis, como cubos, cilindros e malhas, complementados por fontes de luz, materiais, câmaras, etc. Os nós são representados por classes de C++ e podem ser combinados e herdados. </para> + +<para +>Pode-se encontrar uma introdução ao Inventor <ulink url="http://www.motifzone.com/tmd/articles/OpenInventor/OpenInventor.html" +>aqui</ulink +> (de um modo geral, você poderá substituir todas as menções ao SoXt por SoQt neste artigo). </para> + +</simplesect> + +</sect1> + +</chapter> + + + +<chapter id="userinterface"> +<title +>Interface do utilizador</title> + +<sect1 id="userinterface-actionpattern"> +<title +>O padrão de acções</title> + +<para +></para> + +</sect1> + + +<sect1 id="userinterface-xmlgui"> +<title +>Definir os menus e as barras de ferramentas em XML</title> + +<simplesect id="xmlgui-intro"> +<title +>Introdução</title> + +<para +>Embora o <link linkend="userinterface-actionpattern" +>padrão de acções</link +> permita encapsular as acções despoletadas pelo utilizador num objecto que possa estar "ligado" noutro sítio qualquer nos menus ou nas barras de ferramentas, ele não resolve por si só o problema de construir os próprios menus. Em particular, você terá de criar todos os menus em código de C++ e inserir explicitamente as acções por uma determinada ordem, segundo as considerações dos guias de estilo para as acções normais. Isto torna bastante difícil para os utilizadores poderem personalizar os menus ou alterar os menus ou os atalhos de teclado de acordo com as suas necessidades, sem ter de alterar o código-fonte. </para> + +<para +>Este problema é resolvido através de um conjunto de classes chamado <literal +>XMLGUI</literal +>. Basicamente, isto separa as acções (codificadas em C++) da sua aparência nas barras de menu e de ferramentas (codificadas em XML). Sem modificar nenhum código-fonte, os menus podem simplesmente ser personalizados, ajustando um ficheiro de XML. Para além disso, ajuda a garantir que as acções normais (como o <menuchoice +><guimenu +>Ficheiro</guimenu +><guimenuitem +>Abrir</guimenuitem +></menuchoice +> ou o <menuchoice +><guimenu +>Ajuda</guimenu +><guimenuitem +>Acerca</guimenuitem +></menuchoice +>) aparecem nas localizações indicadas pelos guias de estilo. O XMLGUI é especialmente importante para os programas modulares, em que os itens que aparecem no menu podem resultar de vários 'plugins' ou componentes diferentes. </para> + +<para +>A classe do KDE para as janelas de topo, a <ulink url="kdeapi:tdeui/KMainWindow.html" +>KMainWindow</ulink +>, herda de <ulink url="kdeapi:tdeui/KXMLGUIClient.html" +>KXMLGUIClient</ulink +> e, por isso, suporta a XMLGUI logo de raiz. Todas as acções criadas dentro dela terão de ter a <literal +>actionCollection()</literal +> do cliente como 'pai'. Uma chamada ao <literal +>createGUI()</literal +> irá então criar o conjunto completo de barras de menu e de ferramentas definidas no ficheiro XML da aplicação (que tem, convencionalmente, o sufixo <literal +>ui.rc</literal +>). </para> + +</simplesect> + + +<simplesect id="xmlgui-kviewexample"> +<title +>Um exemplo: Menu do KView</title> + +<para +>No seguinte exemplo, iremos ver o visualizador de imagens <application +>KView</application +> do KDE. Ele tem um ficheiro <literal +>ui.rc</literal +> chamado <filename +>kviewui.rc</filename +> que é instalado com o código em <filename +>Makefile.am</filename +> </para> + +<programlisting +>rcdir = $(kde_datadir)/kview +rc_DATA = kviewui.rc +</programlisting> + +<para +>Aqui está um excerto do ficheiro <filename +>kviewui.rc</filename +>. Por questões de simplicidade, mostramos apenas a definição no menu <guimenu +>View</guimenu +> (Ver). </para> + +<programlisting +><!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> +</programlisting> + +<para +>A componente correspondente da configuração em C++ é: </para> + +<programlisting +>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" ); +</programlisting> + +<para +>O menu <guimenu +>View</guimenu +> (Ver), resultante desta definição da interface, fica então semelhante ao que aparece nesta imagem: </para> + +<mediaobject> +<imageobject +><imagedata fileref="kview-menu.png"/></imageobject> +</mediaobject> + +<para +>O ficheiro XML começa com uma declaração do tipo de documento. O DTD do 'kpartgui' pode ser encontrado no código-fonte do 'tdelibs' em <filename +>tdeui/kpartgui.dtd</filename +>. O elemento exterior do ficheiro contém o nome da instância da aplicação como atributo. Poderá também conter um número de versão no formato "version=2". Isto é útil quando você lança novas versões de uma aplicação com uma estrutura de menus alterada, p.ex., com mais funcionalidades. Se você fornecer o número da versão no ficheiro <literal +>ui.rc</literal +>, o KDE certifica-se que qualquer versão personalizada do ficheiro é eliminada e passa a ser usado o novo ficheiro em alternativa. </para> + +<para +>A próxima linha, a <literal +><MenuBar></literal +>, contém a declaração de um menu. Você poderá também introduzir uma quantidade qualquer de declarações de <literal +><ToolBar></literal +> para criar algumas barras de ferramentas. O menu contém um submenu com o nome "view" (ver). Este nome já está predefinido e, por isso, irá ver a versão traduzida de "View" (no caso do português, "Ver") na imagem. Se você declarar os seus próprios submenus, você terá de adicionar explicitamente o título. Por exemplo, o <application +>KView</application +> tem um submenu com o título "Image" (Imagem) que é declarado da seguinte forma: </para> + +<programlisting +><Menu name="image" > + <text>&amp;Image</text> + ... +</Menu> +</programlisting> + +<para +>Na plataforma do 'automake' do KDE, esses títulos são automaticamente extraídos e colocados no ficheiro <ulink url="tde-i18n-howto.html" +><literal +>.po</literal +></ulink +> da aplicação, para que seja usados pelos tradutores. Lembre-se que você tem de representar o marcador de aceleradores "&" na forma compatível com o XML "&amp;". </para> + +<para +>Voltando ao exemplo do <application +>KView</application +>, o seu menu <guimenu +>View</guimenu +> contém um conjunto de acções personalizadas: <literal +>zoom50</literal +>, <literal +>zoom100</literal +>, <literal +>zoom200</literal +>, <literal +>zoomMaxpect</literal +> e <literal +>fullscreen</literal +>, declaradas com um elemento <literal +><Action></literal +>. O separador nas imagens corresponde ao elemento <literal +><Separator></literal +>. </para> + +<para +>Você irá reparar que alguns itens do menu não têm um elemento correspondente no ficheiro XML. Estes são as <emphasis +>acções-padrão</emphasis +>. As acções-padrão são criadas pela classe <ulink url="kdeapi:tdeui/KStdAction.html" +>KStdAction</ulink +>. Quando você cria essas acções na sua aplicação (como no exemplo em C++ acima), elas serão automaticamente introduzidas numa posição prescrita, e possivelmente com uma tecla de atalho. Você poderá procurar essas localizações no ficheiro <filename +>tdeui/ui_standards.rc</filename +> no código-fonte do 'tdelibs'. </para> + +</simplesect> + + +<simplesect id="xmlgui-konqexample"> +<title +>Um exemplo: Barras de Ferramentas no Konqueror</title> + +<para +>Para a discussão das barras de ferramentas, o foco será agora a definição da GUI do <application +>Konqueror</application +>. Este excerto define a barra de localização, que contém o campo de introdução de URLs. </para> + +<programlisting +><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> +</programlisting> + +<para +>A primeira coisa que salta à vista é que existem muitos mais atributos que nos menus. Estes incluem: </para> + +<itemizedlist> + +<listitem +><para +><literal +>fullWidth</literal +>: Diz ao XMLGUI que a barra de ferramentas tem a mesma largura que a janela de topo. Dado que este está igual a "false" (falso), a barra de ferramentas só ocupa o espaço necessário e poderão ser colocadas mais barras de ferramentas na mesma linha. </para +></listitem> + +<listitem +><para +><literal +>newline</literal +>: Este está relacionado com a opção acima. Se for igual a "true" (verdadeiro), a barra de ferramentas inicia uma nova linha. Caso contrário, poderá ser colocada na mesma linha que a barra anterior. </para +></listitem> + +<listitem +><para +><literal +>noEdit</literal +>: Normalmente as barras de ferramentas podem ser personalizadas pelo utilizador, p.ex. na opção <menuchoice +><guimenu +>Configuração</guimenu +><guimenuitem +>Configurar as Barras de Ferramentas</guimenuitem +></menuchoice +> do <application +>Konqueror</application +>. Se esta opção for igual a "true" (verdadeiro), a barra de ferramentas em questão não fica editável. Isto é importante para as barras de ferramentas que são carregadas com itens na altura da execução, como por exemplo a barra de Favoritos do <application +>Konqueror</application +>. </para +></listitem> + +<listitem +><para +><literal +>iconText</literal +>: Diz ao XMLGUI para mostrar o texto da acção ao lado do ícone. Normalmente, o texto só é mostrado como uma dica quando o cursor do rato se mantiver em cima do ícone durante algum tempo. Os valores possíveis para este atributo são o "icononly" (mostra só o ícone), "textonly" (mostra só o texto), "icontextright" (mostra o texto do lado direito do ícone) e "icontextbottom" (mostra o texto por baixo do ícone). </para +></listitem> + + +<listitem +><para +><literal +>hidden</literal +>: Se este valor for "true" (verdadeiro), a barra de ferramentas não fica visível inicialmente e deverá ser activada por um item de menu qualquer. </para +></listitem> + + +<listitem +><para +><literal +>position</literal +>: O valor por omissão para este atributo é o "top", que significa que a barra de ferramentas fica por baixo do menu. Para os programas com várias ferramentas, como os programas gráficos, poderá ser interessante substituir isto por "left" (esquerda), "right" (direita) ou "bottom" (baixo). </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="xmlgui-dynamical"> +<title +>Menus dinâmicos</title> + +<para +>Obviamente, um ficheiro XML só poderá conter uma descrição estática da interface do utilizador. Normalmente, existem menus que mudam durante a execução. Por exemplo, o menu do <application +>Konqueror</application +> <guimenu +>Localização</guimenu +> contém um conjunto de itens <guimenuitem +>Abrir com XPTO</guimenuitem +> com as aplicações que são capazes de abrir um dado ficheiro com um dado tipo MIME. De cada vez que o documento apresentado muda, a lista de itens do menu muda. O XMLGUI está preparado para lidar com estes casos, usando a noção de <emphasis +>listas de acções</emphasis +>. Uma lista de acções é declarada como um itm no ficheiro XML, mas de facto consiste em várias acções que são associadas ao menu durante a execução. O exemplo acima está implementado com a seguinte declaração no ficheiro XML do <application +>Konqueror</application +>: </para> + +<programlisting +><Menu name="file"> + <text>&amp;Location</text> + ... + <ActionList name="openwith"> + ... +</Menu> +</programlisting> + +<para +>A função <function +>KXMLGUIClient::plugActionList()</function +> é então usada para adicionar as acções a mostrar, enquanto que a função <function +>KXMLGuiClient::unplugActionList()</function +> remove todas as acções ligadas. A rotina responsável pela actualização é semelhante à seguinte: </para> + +<programlisting +>void JanelaPrincipal::actualizarAccoesAbrirCom() +{ + unplugActionList("openwith"); // Nome declarado no ficheiro XML + accoesAbrirCom.clear(); + for ( /* iterar pelos serviços relevantes */ ) { + KAction *accao = new KAction( ...); + accoesAbrirCom.append(accao); + } + plugActionList("openwith", accoesAbrirCom); +} +</programlisting> + +<para +>Lembre-se que, em contraste com as acções estáticas, as que aqui são criadas <emphasis +>não</emphasis +> têm a colecção de acções como 'mãe', como tal você é responsável por removê-las você mesmo. A forma mais simples de o fazer é usando o método <literal +>accoesAbrirCom.setAutoDelete(true)</literal +> no exemplo acima. </para> + +</simplesect> + + +<simplesect id="xmlgui-contextmenus"> +<title +>Menus de contexto</title> + +<para +>Os exemplos acima só continham casos em que as barras de menu e de ferramentas de uma janela principal eram criados. Existem os casos em que os processos de criação destes repositórios estão completamente escondidos do programador por detrás da chamada do <function +>createGUI()</function +> (excepto se você tiver repositórios personalizados). Contudo, existem casos em que você deseja construir outros repositórios e preenchê-los com definições da GUI a partir do ficheiro XML. Um desses exemplos são os menus de contexto. Para obter uma referência a um menu de contexto, você terá de pedir ao criador ('factory') do cliente essa referência: </para> + +<programlisting +>void JanelaPrincipal::menuPedido() +{ + QWidget *m = factory()->container("menu_contexto", this); + QPopupMenu *menu = static_cast<QPopupMenu *>(m); + menu->exec(QCursor::pos()); +} +</programlisting> + +<para +>O método <function +>KXMLGUIFactory::container()</function +> usado acima procura onde encontrar um repositório no ficheiro XML com o nome indicado. Nesse caso, uma definição possível poderia ser semelhante à seguinte: </para> + +<programlisting +>... +<Menu name="menu_contexto"> + <Action name="ficheiro_adicionar"/> + <Action name="ficheiro_remover"/> +</Menu> +... +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="help"> +<title +>Fornecer ajuda 'online'</title> + +<para +>Tornar um programa intuitivo e fácil de usar envolve um conjunto de funcionalidades que são chamadas normalmente de ajuda 'online'. A ajuda 'online' tem vários objectivos, alguns deles em conflito: por um lado, deverá dar ao utilizador respostas à pergunta "Como é que faço uma determinada tarefa?"; por outro lado, deverá ajudar o utilizador a explorar a aplicação e a encontrar funcionalidades que ainda não conhece. É importante reconhecer que isto só poderá ser conseguido se oferecer vários níveis de ajuda: </para> + +<itemizedlist> + +<listitem +><para +>As dicas de ferramentas são pequenas legendas que aparecem por cima dos elementos da interface gráfica, sempre que o cursor do rato fica algum tempo sobre eles. Elas são especialmente importantes para as barras de ferramentas, onde os ícones nem sempre são suficientes para explicar o intuito de um botão. </para +></listitem> + +<listitem +><para +>A ajuda o "O que é isto?" é normalmente uma explicação mais extensa e mais rica sobre um elemento gráfico ou um item do menu. É também mais complicada de usar: nas janelas, pode ser invocadas de duas formas: quer carregando em <keycombo +><keycap +>Shift</keycap +><keycap +>F1</keycap +></keycombo +> ou carregando no ponto de interrogação na barra de título (onde o suporte para a última depende do gestor de janelas). O cursor do rato irá então mudar para uma seta com um ponto de interrogação, onde a janela de ajuda aparece sempre que um elemento da interface for pressionado. A ajuda "o que é isto?" para os itens do menu é normalmente activada por um botão na barra de ferramentas que contém uma seta e um ponto de interrogação. </para +></listitem> + +<listitem +><para +>O problema com esta abordagem é que o utilizador não consegue ver se um elemento contém ajudas ou não. Quando o utilizador activa o botão do ponto de interrogação e não obtém nenhuma janela de ajuda quando carregar num elemento da interface do utilizador, ele irá ficar frustrado muito depressa. </para> + +<para +>A vantagem das janelas de ajuda "O Que É Isto?" oferecidas pelo Qt e pelo KDE é que elas poderão conter <ulink url="kdeapi:qt/QStyleSheet" +>texto formatado</ulink +>, i.e. poderão conter vários tipos de letra, texto em negrito e itálico, ou mesmo imagens e tabelas. </para> + +<para +>Um exemplo de uma ajuda "O Que É Isto?": </para> + +<mediaobject> +<imageobject +><imagedata fileref="whatsthis.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><para +>Finalmente, todos os programas deverão ter um manual. Um manual é normalmente visto no <application +>KHelpCenter</application +>, activando o menu <guimenu +>Ajuda</guimenu +>. Isto significa, que uma aplicação adicional completa aparece e distrai o utilizador do seu trabalho. Por consequência, a consulta do manual só deverá ser necessária se as outras funcionalidades como as dicas e a ajuda "o que é isto?" não forem suficientes. Obviamente, um manual tem a vantagem que não explica apenas aspectos únicos e isolados da interface do utilizador. Em vez disso, ele poderá explicar aspectos da aplicação num contexto mais amplo. Os manuais para o KDE são escritos usando a linguagem de formatação <ulink url="http://i18n.kde.org" +>DocBook</ulink +>. </para +></listitem> + +</itemizedlist> + +<para +>Do ponto de vista do programador, o Qt oferece uma API fácil de usar para a ajuda 'online'. Para atribuir uma dica a um dado elemento gráfico, use a classe <ulink url="kdeapi:qt/QToolTip" +>QToolTip</ulink +>. </para> + +<programlisting +>QToolTip::add(e, i18n("Este elemento faz uma dada tarefa.")) +</programlisting> + +<para +>Se as barras de menu e as barras de ferramentas forem criadas com o <ulink url="actionpattern.html" +>padrão de acções</ulink +>, o texto usado como dica deriva do primeiro argumento do construtor da <ulink url="kdeapi:tdeui/KAction.html" +>KAction</ulink +>: </para> + +<programlisting +>accao = new KAction(i18n("&Remover"), "editdelete", + SHIFT+Key_Delete, actionCollection(), "del") +</programlisting> + +<para +>Aqui também é possível atribuir um dado texto que é apresentado na barra de estado quando o item do menu respectivo é seleccionado: </para> + +<programlisting +>action->setStatusText(i18n("Apaga o texto marcado")) +</programlisting> + +<para +>A API da ajuda "O que é isto?' é bastante parecido. Nas janelas, use o seguinte código: </para> + +<programlisting +>QWhatsThis::add(e, i18n("<qt>Isto demonstra o motor" + " do <b>Qt</b> para" + " o texto formatado.<ul>" + "<li>Um</li>" + "<li>Dois</li>" + "</ul></qt>")) +</programlisting> + +<para +>Para os itens do menu, use </para> + +<programlisting +>accao->setWhatsThis(i18n("Apaga o ficheiro marcado")) +</programlisting> + +<para +>A invocação do <application +>KHelpCenter</application +> está encapsulada na classe <ulink url="kdeapi:tdecore/KApplication" +>KApplication</ulink +>. Para mostrar o manual da sua aplicação, basta usar </para> + +<programlisting +>kapp->invokeHelp() +</programlisting> + +<para +>Isto mostra a primeira página com o índice analítico. Quando você quer mostrar apenas uma dada secção do manual, você poderá dar um argumento adicional ao <function +>invokeHelp()</function +> que indica a 'âncora' para a qual o navegador irá saltar. </para> + +</sect1> + +</chapter> + + + +<chapter id="components"> +<title +>Componentes e serviços</title> + +<sect1 id="components-services"> +<title +>Serviços do KDE</title> + +<simplesect id="services-whatarekdeservices"> +<title +>O que são os serviços do KDE?</title> + +<para +>A noção de um <emphasis +>serviço</emphasis +> é um conceito central da arquitectura modular do KDE. Não existe nenhuma implementação técnica restrita associada a este termo - os serviço podem ser 'plugins' sob a forma de bibliotecas dinâmicas ou podem ser programas controlados através de <ulink url="dcop.html" +>DCOP</ulink +>. Quando alegar ter um determinado <emphasis +>tipo de serviço</emphasis +>, um serviço promete implementar certas APIs ou funcionalidades. Em termos de C++, pode-se pensar num tipo de serviço como uma classe abstracta e num serviço como uma implementação dessa interface. </para> + +<para +>A vantagem desta separação é clara: Uma aplicação que use um tipo de serviço não tem de conhecer as possíveis implementações od mesmo. Só usa as APIs associadas ao tipo de serviço. Desta forma, o serviço usado pode ser alterado sem afectar a aplicação. Da mesma forma, o utilizador pode configurar os serviços que ele prefere para certas funcionalidades. </para> + +<para +>Alguns exemplos: </para> + +<itemizedlist> + +<listitem +><para +>O motor de desenho de HTML no <application +>Konqueror</application +> é uma componente embebida que implementa os tipos de serviços <literal +>KParts/ReadOnlyPart</literal +> e <literal +>Browser/View</literal +>. </para +></listitem> +<listitem +><para +>No HEAD do <application +>KDevelop</application +>, a maioria da funcionalidade está incorporada em 'plugins' com o tipo de serviço <literal +>KDevelop/Part</literal +>. No arranque, todos os serviços deste tipo são carregados, de modo a que você possa extender o IDE de uma forma muito flexível. </para +></listitem> +<listitem +><para +>Na vista em ícones, o <application +>Konqueror</application +> mostra - se estiver activo - as miniaturas das imagens, páginas HTML, PDF e ficheiros de texto. Esta capacidade pode ser extendida. Se você quiser que ela mostre imagens de antevisão dos seus próprios ficheiros de dados com algum tipo MIME, você poderá implementar um serviço do tipo <classname +>ThumbCreator</classname +>. </para +></listitem> + +</itemizedlist> + +<para +>Obviamente, um serviço não é só caracterizado pelos tipos de serviços que implementa, mas também em algumas <emphasis +>propriedades</emphasis +>. Por exemplo, um ThumbCreator não só alega que implementa a classe de C++ com o tipo <classname +>ThumbCreator</classname +>, mas também tem uma lista de tipos MIME pelos quais é responsável. De forma semelhante, as componentes do KDevelop têm a a linguagem de programação que suportam como uma propriedades. Quando uma aplicação pede um tipo de serviço, pode também listar as restrições nas propriedades do serviço. No exemplo acima, quando o KDevelop carrega os 'plugins' de um projecto Java, ele só pede os 'plugins' que tenham o Java como propriedade da linguagem de programação. Para esse fim, o KDE contém um <emphasis +>trader</emphasis +> (mediador) semelhante ao do CORBA com uma linguagem de pesquisa complexa. </para> + +</simplesect> + + +<simplesect id="services-definingservicetypes"> +<title +>Definir tipos de serviço</title> + +<para +>Os novos tipos de serviços são adicionados ao instalar uma descrição dos mesmos em <filename +>KDEDIR/share/servicetypes</filename +>. Na plataforma do 'automake', isto pode ser feito com este excerto do <filename +>Makefile.am</filename +>: </para> + +<programlisting +>kde_servicetypesdir_DATA = tdeveloppart.desktop +EXTRA_DIST = $(kde_servicetypesdir_DATA) +</programlisting> + +<para +>A definição <filename +>tdeveloppart.desktop</filename +> de uma componente do <application +>KDevelop</application +> assemelha-se ao seguinte: </para> + +<programlisting +>[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/Part +Name=KDevelop Part + +[PropertyDef::X-KDevelop-Scope] +Type=QString + +[PropertyDef::X-KDevelop-ProgrammingLanguages] +Type=QStringList + +[PropertyDef::X-KDevelop-Args] +Type=QString +</programlisting> + +<para +>Para além dos itens normais, este exemplo demonstra como é que você declara que um serviço tem determinadas propriedades. Cada definição de propriedades corresponde a um grupo <literal +>[PropertyDef::name]</literal +> no ficheiro de configuração. Neste grupo, o item <literal +>Type</literal +> define o tipo da propriedades. Os tipos possíveis são todos os que conseguem ser registados num <ulink url="kdeapi:qt/QVariant" +>QVariant</ulink +>. </para> + +</simplesect> + + +<simplesect id="services-defininglibraryservices"> +<title +>Definir os serviços das bibliotecas dinâmicas</title> + +<para +>As definições dos serviços são gravadas na directoria <filename +>KDEDIR/share/services</filename +>: </para> + +<programlisting +>kde_servicesdir_DATA = kdevdoxygen.desktop +EXTRA_DIST = $(kde_servicesdir_DATA) +</programlisting> + +<para +>O conteúdo do seguinte ficheiro de exemplo <filename +>kdevdoxygen.desktop</filename +> define o 'plugin' do <literal +>KDevDoxygen</literal +> com o tipo de serviço <literal +>KDevelop/Part</literal +>: </para> + +<programlisting +>[Desktop Entry] +Type=Service +Comment=Doxygen +Name=KDevDoxygen +ServiceTypes=KDevelop/Part +X-KDE-Library=libkdevdoxygen +X-KDevelop-ProgrammingLanguages=C,C++,Java +X-KDevelop-Scope=Project +</programlisting> + +<para +>Para além das declarações normais, um item importante é o <literal +>X-KDE-Library</literal +>. Este contém o nome da biblioteca do 'libtool' (sem a extensão <literal +>.la</literal +>). Também corrige (com o prefixo <literal +>init_</literal +> anexado) o nome do símbolo exportado na biblioteca que devolve uma 'factory' (fábrica) de objectos. Para o exemplo acima, a biblioteca deve conter a seguinte função: </para> + +<programlisting +>extern "C" { + void *init_libkdevdoxygen() + { + return new DoxygenFactory; + } +}; +</programlisting> + +<para +>O tipo da classe da 'factory' <classname +>DoxygenFactory</classname +> depende do tipo de serviço específico que este serviço implementa. No nosso exemplo de um 'plugin' do KDevelop, a 'factory' deverá ser uma <classname +>KDevFactory</classname +> (que herda de <classname +>KLibFactory</classname +>). Os exemplos mais comuns são a <ulink url="kdeapi:kparts/KParts::Factory" +>KParts::Factory</ulink +> que é suposto produzir objectos <ulink url="kdeapi:kparts/KParts::ReadOnlyPart" +>KParts::ReadOnlyPart</ulink +> ou, na maioria dos casos, a <ulink url="kdeapi:tdecore/KLibFactory" +>KLibFactory</ulink +> genérica. </para> + +</simplesect> + + +<simplesect id="services-usinglibraryservices"> +<title +>Usar os serviços das bibliotecas dinâmicas</title> + +<para +>Para usar um serviço de uma biblioteca dinâmica numa aplicação, você precisa de obter um objecto <ulink url="kdeapi:kio/KService.html" +>KService</ulink +> que a represente. Isto é discutido na <ulink url="mime.html" +>secção sobre os tipos MIME</ulink +> (e numa secção sobre o mediador, a ser escrita :-) </para> + +<para +>Com o objecto <classname +>KService</classname +> acessível, você poderá simplesmente carregar a biblioteca e obter uma referência para o objecto da sua 'factory': </para> + +<programlisting +>KService *servico = ... +QString nomeBiblioteca = QFile::encodeName(servico->library()); +KLibFactory *fabrica = KLibLoader::self()->factory(nomeBiblioteca); +if (!fabrica) { + QString nome = servico->name(); + QString mensagemErro = KLibLoader::self()->lastErrorMessage(); + KMessageBox::error(0, i18n("Ocorreu um erro ao carregar o serviço %1.\n" + "O diagnóstico da libtool é:\n%2") + .arg(nome).arg(mensagemErro); +} +</programlisting> + +<para +>A partir deste ponto, o procedimento posterior depende de novo do tipo de serviço. Para os 'plugins' genéricos, você cria objectos com o método <ulink url="kdeapi:tdecore/KLibFactory.html#ref3" +>KLibFactory::create()</ulink +>. Para as KParts, você precisa de converter o ponteiro da 'factory' para a classe mais específica KParts::Factory e usar o seu método create(): </para> + +<programlisting +>if (fabrica->inherits("KParts::Factory")) { + KParts::Factory *fabricaComponentes = static_cast<KParts::Factory*>(fabrica); + QObject *objecto = fabricaComponentes->createPart(janelaMae, nomeJanela, + mae, nome, "KParts::ReadOnlyPart"); + ... +} else { + cout << "O serviço na implementa a fábrica correcta" << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="services-definingdcopservices"> +<title +>Definir serviços de DCOP</title> + +<para +>Um serviço de DCOP é normalmente implementado como um programa que é iniciado sempre que é necessário. Ele entra então em ciclo e fica à espera de ligações do DCOP. O programa poderá ser interactivo, mas também poderá correr completamente, ou durante parte do seu tempo de vida, como um servidor em segundo plano, sem que o utilizador repare nele. Um exemplo destes servidores é o <literal +>kio_uiserver</literal +>, que implementa a interacção com o utilizador, como a janela de progresso para a biblioteca KIO. A vantagem de um servidor centralizado deste no contexto em questão é que p.ex., pode-se mostrar o progresso da transferência para vários ficheiros diferentes numa só uma janela, mesmo que estas transferências tenham sido iniciadas a partir de aplicações diferentes. </para> + +<para +>Um serviço de DCOP é definido de forma diferente de um serviço de uma biblioteca dinâmica. Obviamente, não diz respeito a uma biblioteca, mas sim a um executável. Para além disso, os serviços de DCOP não indicam uma linha ServiceType, porque normalmente eles são iniciados pelo nomes deles. Como propriedades adicionais, contêm duas linhas: </para> + +<para +>O <literal +>X-DCOP-ServiceType</literal +> define a forma como o serviço é iniciado. O valor <literal +>Unique</literal +> diz que o serviço não poderá ser iniciado mais do que uma vez. Isto significa que, se você tentar iniciar este serviço (p.ex., através do <ulink url="kdeapi:tdecore/KApplication.html#startServiceByName" +> KApplication::startServiceByName()</ulink +>, o KDE irá descobrir se já está registado no DCOP e usa o serviço em execução. Se ainda não estiver registado, o KDE irá iniciá-lo e esperar até que esteja registado. Desta forma, você poderá enviar imediatamente chamadas de DCOP para o serviço. Nesse caso, o serviço deverá ser implementado como uma <ulink url="kdeapi:tdecore/KUniqueApplication.html" +>KUniqueApplication</ulink +>. </para> + +<para +>O valor <literal +>Multi</literal +> para o <literal +>X-DCOP-ServiceType</literal +> diz que poderão coexistir várias instâncias do serviço, por isso todas as tentativas de iniciar o serviço irão criar outro processo. Como última possibilidade, o valor <literal +>None</literal +> poderá ser usado. Neste caso, o arranque do serviço não irá esperar até ter sido registado com o DCOP. </para> + +<para +>O <literal +>X-KDE-StartupNotify</literal +> deverá normalmente ser igual a 'false' (falso). Caso contrário, quando o programa for iniciado, a barra de tarefas irá mostrar uma notificação de arranque ou, dependo da configuração do utilizador, o cursor irá mudar. </para> + +<para +>Aqui está a definição do <literal +>kio_uiserver</literal +>: </para> + +<programlisting +>[Desktop Entry] +Type=Service +Name=kio_uiserver +Exec=kio_uiserver +X-DCOP-ServiceType=Unique +X-KDE-StartupNotify=false +</programlisting> + +</simplesect> + + +<simplesect id="services-usingdcopservices"> +<title +>Usar os serviços de DCOP</title> + +<para +>Um serviço de DCOP é iniciado com um de vários métodos na classe KApplication: </para> + +<programlisting +>DCOPClient *cliente = kapp->dcopClient(); +cliente->attach(); +if (!cliente->isApplicationRegistered("kio_uiserver")) { + QString erro; + if (KApplication::startServiceByName("kio_uiserver", QStringList(), &erro)) + cout << "O início do kioserver falhou com a mensagem " << erro << endl; +} +... +QByteArray dados, dadosResposta; +QCString tipoResposta; +QDataStream arg(dados, IO_WriteOnly); +arg << true; +if (!client->call("kio_uiserver", "UIServer", "setListMode(bool)", + dados, tipoResposta, dadosResposta)) + cout << "A chamada do kio_uiserver falhou" << endl; +... +</programlisting> + +<para +>Repare que o exemplo de uma chamada de DCOP indicado aqui utiliza a codificação explícita dos argumentos. Nornalmente, você iria usar um 'stub' (uma classe de adaptação) gerado pelo 'dcopidl2cpp', por ser muito mais simples e menos sujeito a erros. </para> + +<para +>No exemplo aqui dado, o serviço foi iniciado "por nome", i.e., o primeiro argumento do <function +>KApplication::startServiceByName()</function +> é o nome que aparece na linha <literal +>Name</literal +> do ficheiro 'desktop'. Uma alternativa é usar o <function +>KApplication::startServiceByDesktopName()</function +>, que recebe o nome do ficheiro 'desktop' como argumento, i.e., neste caso, seria igual a <literal +>"kio_uiserver.desktop"</literal +>. </para> + +<para +>Todas estas chamadas recebem uma lista de URLs como segundo argumento, o qual é dado ao serviço na linha de comandos. O terceiro argumento é um ponteiro para uma <classname +>QString</classname +>. Se o início do serviço falhar, este argumento fica igual à mensagem de erro traduzida. </para> + +</simplesect> + +</sect1> + + +<sect1 id="components-mime"> +<title +>Tipos MIME</title> + +<simplesect id="mime-whataremimetypes"> +<title +>O que são tipos MIME?</title> + +<para +>Os tipos MIME são usados para descrever o tipo de conteúdo dos ficheiros ou dos blocos de dados. Originalmente, foram introduzidos para permitir o envio de imagens, ficheiros de som, etc., por e-mail (o MIME significa "Multipurpose Internet Mail Extensions" - Extensões Multi-Uso de Correio pela Internet). Depois, este sistema foi também usado pelos navegadores Web para saber como apresentar os dados enviados por um servidor Web para o utilizador. Por exemplo, uma página de HTML tem um tipo MIME "text/html", um ficheiro PostScript tem o tipo "application/postscript". No KDE, este conceito é usado em vários sítios: </para> + +<itemizedlist> + +<listitem +><para +>Na vista em ícones do <application +>Konqueror</application +>, os ficheiros são representados por ícones. Cada tipo MIME tem um dado ícone associado, que é aqui apresentado. </para +></listitem> + +<listitem +><para +>Quando você carrega no ícone de um ficheiro ou no seu nome no <application +>Konqueror</application +>, o ficheiro tanto pode ser aberto num visualizador incorporado como numa aplicação associada ao tipo de ficheiro. </para +></listitem> + +<listitem +><para +>Quando você arrasta e larga alguns dados de uma aplicação noutra (ou dentro da mesma aplicação), o destino dos dados pode optar por aceitar apenas alguns tipos de dados. Para além disso, ele irá lidar com os dados de imagens de forma diferente dos dados textuais. </para +></listitem> + +<listitem +><para +>Os dados na área de transferência têm um tipo MIME. Tradicionalmente, os programas do X só lidam com imagens ou texto, mas com o Qt, não existem restrições ao tipo de dados. </para +></listitem> + +</itemizedlist> + +<para +>Nos exemplos acima, é óbvio que o tratamento do MIME é uma questão complexa. Primeiro, é necessário estabelecer um mapeamento dos nomes dos ficheiros para os tipos MIME. O KDE vai mais além, permitindo até que o conteúdo dos ficheiros seja mapeado em tipos MIME, para os casos em que o nome do ficheiro não está disponível. Segundo, é necessário mapear os tipos MIME nas aplicações ou nas bibliotecas que podem ver ou editar os ficheiros de um determinado tipo ou ainda criar uma imagem em miniatura deles. </para> + +<para +>Existe uma variedade de APIs para descobrir o tipo MIME dos dados ou ficheiros. De um modo geral, existe um certo compromisso de velocidade/fiabilidade que terá de fazer. Você poderá descobrir o tipo de um ficheiro, examinando apenas o nome do seu ficheiro (i.e., na maioria dos casos, pela sua extensão). Por exemplo, um ficheiro <filename +>xpto.jpg</filename +> é normalmente um "image/jpeg". Nos casos em que a extensão não existe, isto não é seguro, e você terá de ver o conteúdo do ficheiro. Isto é obviamente mais lento, em particular para os ficheiros que terão de ser obtidos via HTTP em primeiro lugar. O método baseado no conteúdo baseia-se no ficheiro <filename +>KDEDIR/share/mimelnk/magic</filename +> e, como tal, poderá ser difícil de extender. Mas, de um modo geral, a informação do tipo MIME poderá ser disponibilizada de forma simples ao sistema se instalar um ficheiro <literal +>.desktop</literal +>, e está disponível de forma eficiente e conveniente através das bibliotecas do KDE. </para> + +</simplesect> + + +<simplesect id="mime-definingmimetypes"> +<title +>Definir os tipos MIME</title> + +<para +>Vamos então definir um tipo <literal +>"application/x-xpto"</literal +> para o nosso programa <application +>programaXpto</application +>. Para tal, você terá de criar um ficheiro <filename +>xpto.desktop</filename +> e instalá-lo em <filename +>KDEDIR/share/mimelnk/application</filename +>. (Esta é a localização normal, mas poderá variar entre distribuições). Isto pode ser feito se adicionar o seguinte ao <filename +>Makefile.am</filename +>: </para> + +<programlisting +>mimedir = $(kde_mimedir)/application +mime_DATA = xpto.desktop +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>O ficheiro <filename +>xpto.desktop</filename +> deverá ser parecido com o seguinte: </para> + +<programlisting +>[Desktop Entry] +Type=MimeType +MimeType=application/x-xpto +Icon=icone_xpto +Patterns=*.xpto; +DefaultApp=programaXpto +Comment=XPTO Data File +Comment[pt]=Dados em XPTO +</programlisting> + +<para +>O item <literal +>"Comment"</literal +> é suposto ser traduzido. Dado que o ficheiro <filename +>.desktop</filename +> refere um ícone, você deverá também instalar um ícone <filename +>icone_xpto.png</filename +>, que representa o ficheiro p.ex. no <application +>Konqueror</application +>. </para> + +<para +>Nas bibliotecas do KDE, a definição de um tipo destes é mapeada numa instância da classe <ulink url="kdeapi:kio/KMimeType.html" +>KMimeType</ulink +>. Use esta como é mostrado no exemplo a seguir: </para> + +<programlisting +>KMimeType::Ptr tipo = KMimeType::mimeType("application/x-xpto"); +cout << "Tipo: " << tipo->name() < endl; +cout << "Ícone: " << tipo->icon() < endl; +cout << "Comentário: " << tipo->icon() < endl; +QStringList padroes = tipo->patterns(); +QStringList::ConstIterator it; +for (it = padroes.begin(); it != padroes.end(); ++it) + cout << "Padrão: " << (*it) << endl; +</programlisting> + +</simplesect> + + +<simplesect id="mime-determiningmimetypes"> +<title +>Determinar o tipo MIME dos dados</title> + +<para +>O método mais rápido para determinar o tipo de um ficheiro é o <function +>KMimeType::findByURL()</function +>. Isto procura pelo texto no URL e, na maioria dos casos, determina o tipo a partir da extensão. Para certos protocolos (p.ex., 'http', 'man', 'info'), este mecanismo não é usado. Por exemplos, os 'scripts' CGI nos servidores Web escritos em Perl normalmente têm a extensão <literal +>.pl</literal +>, o que iria corresponder a um tipo <literal +>"text/x-perl"</literal +>. Todavia, o ficheiro devolvido pelo servidor é o resultado deste 'script', que é normalmente HTML. Para esse caso, o <function +>KMimeType::findByURL()</function +> devolve o tipo MIME <literal +>"application/octet-stream"</literal +> (disponível através do <function +>KMimeType::defaultMimeType()</function +>), que indica uma falha da descoberta do tipo. </para> + +<programlisting +>KMimeType::Ptr tipo = KMimeType::findByURL("/home/ze/xpto.jpg"); +if (tipo->name() == KMimeType::defaultMimeType()) + cout << "Não foi possível descobrir o tipo" << endl; +else + cout << "Tipo: " << tipo->name() << endl; +</programlisting> + +<para +>(este método tem mais alguns argumentos, mas estes não estão documentados, por isso esqueça-os). </para> + +<para +>Você poderá querer determinar o tipo MIME a partir do conteúdo do ficheiro em vez de ser pelo seu nome. Isto é mais fiável, mas também é mais lento, dado que implica ler uma parte do ficheiro. Isto é feito com a classe <ulink url="kdeapi:kio/KMimeMagic.html" +>KMimeMagic</ulink +>, que tem tratamentos de erros diferentes: </para> + +<programlisting +>KMimeMagicResult *resultado = KMimeMagic::self()->findFileType("/home/ze/xpto.jpg"); +if (!resultado || !resultado->isValid()) + cout << "Não foi possível descobrir o tipo" << endl; +else + cout << "Tipo: " << resultado->mimeType() << endl; +</programlisting> + +<para +>Como variante desta função, você também poderá determinar o tipo de um dado bloco de memória. Isto é p.ex. usado no <application +>Kate</application +> para descobrir o modo de realce: </para> + +<programlisting +>QByteArray dados; +... +KMimeMagicResult *resultado = KMimeMagic::self()->findBufferType(dados); +if (!resultado || !resultado->isValid()) + cout << "Não foi possível descobrir o tipo" << endl; +else + cout << "Tipo: " << resultado->mimeType() << endl; +</programlisting> + +<para +>Obviamente, até mesmo o KMimeMagic só é capaz de determinar o tipo do ficheiro para o conteúdo de um ficheiro local. Para os ficheiros remotos, existe uma outra possibilidade: </para> + +<programlisting +>KURL url("http://developer.kde.org/favicon.ico"); +QString tipo = KIO::NetAccess::mimetype(url); +if (tipo == KMimeType::defaultMimeType()) + cout << "Não foi possível descobrir o tipo" << endl; +else + cout << "Tipo: " << tipo << endl; +</programlisting> + +<para +>Isto inicia uma tarefa do KIO para obter uma parte do ficheiro e analisá-la. Lembre-se que esta função é talvez bastante lenta e bloqueia o programa. Normalmente, você só irá querer usar isto se o <function +>KMimeType::findByURL()</function +> devolveu <literal +>"application/octet-stream"</literal +>. </para> + +<para +>Por outro lado, se você não quiser bloquear a sua aplicação, você poderá iniciar explicitamente a tarefa do KIO e ligar-se a um dos seus 'signals': </para> + +<programlisting +>void ClasseXpto::descobrirTipo() +{ + KURL url("http://developer.kde.org/favicon.ico"); + KIO::MimetypeJob *tarefa = KIO::mimetype(url); + connect( tarefa, SIGNAL(result(KIO::Job*)), + this, SLOT(mimeResult(KIO::Job*)) ); +} + +void ClasseXpto::resultadoMime(KIO::Job *tarefa) +{ + if (tarefa->error()) + tarefa->showErrorDialog(); + else + cout << "Tipo MIME: " << ((KIO::MimetypeJob *)tarefa)->mimetype() << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="mime-mappingmimetypes"> +<title +>Mapear um tipo MIME a uma aplicação ou serviço</title> + +<para +>Quando uma aplicação é instalada, ela coloca um ficheiro <literal +>.desktop</literal +> que contém uma lista dos tipos MIME que esta aplicação pode carregar. De forma semelhante, os componentes como as KParts disponibilizam esta informação através dos ficheiros <literal +>.desktop</literal +> dos serviços. Por isso, de um modo geral, existem vários programas e componentes que podem processar um dado tipo MIME. Você poderá obter uma dessas listas a partir da classe <classname +>KServiceTypeProfile</classname +>: </para> + +<programlisting +>KService::OfferList ofertas = KServiceTypeProfile::offers("text/html", "Application"); +KService::OfferList::ConstIterator it; +for (it = ofertas.begin(); it != ofertas.end(); ++it) { + KService::Ptr servico = (*it); + cout << "Nome: " << servico->name() << endl; +} +</programlisting> + +<para +>O valor devolvido por esta função é uma lista de ofertas de serviços. Um objecto <classname +>KServiceOffer</classname +> contém um KService::Ptr em conjunto com um número de preferência. A lista devolvida pelo <function +>KServiceTypeProfile::offers()</function +> vem ordenada de acordo com a preferência do utilizador. O utilizador poderá alterar isto com o comando <command +>"keditfiletype text/html"</command +> ou escolhendo <guimenuitem +>Editar o Tipo de Ficheiro</guimenuitem +> no menu de contexto do <application +>Konqueror</application +> num ficheiro HTML. </para> + +<para +>No exemplo acima, foi pedida uma lista de ofertas de aplicações que suportem o <literal +>text/html</literal +>. Isto irá - entre outros - conter os editores de HTML como o <application +>Quanta Plus</application +>. Você poderá também substituir o segundo argumento <literal +>"Application"</literal +> por <literal +>"KParts::ReadOnlyPart"</literal +>. Nesse caso, você irá obter uma lista dos componentes incorporados para apresentar conteúdos em HTML, como por exemplo o KHTML. </para> + +<para +>Na maioria dos casos, você não está interessado na lista de todas as ofertas de serviços para uma dada combinação de tipo MIME e tipo de serviço. Existe uma função de conveniência que lhe dá apenas a oferta de serviço com a maior preferência: </para> + +<programlisting +>KService::Ptr oferta = KServiceTypeProfile::preferredService("text/html", "Application"); +if (oferta) + cout << "Nome: " << oferta->name() << endl; +else + cout << "Não foi encontrado nenhum serviço apropriado" << endl; +</programlisting> + +<para +>Para as pesquisas ainda mais complexas, existe um <ulink url="kdeapi:kio/KTrader.html" +>mediador</ulink +> completo e semelhante ao do CORBA. </para> + +<para +>Para poder executar um serviço de aplicação com alguns URLs, use o <ulink url="kdeapi:kio/KRun.html" +>KRun</ulink +>: </para> + +<programlisting +>KURL::List listaUrls; +listaUrls << "http://www.ietf.org/rfc/rfc1341.txt?number=1341"; +listaUrls << "http://www.ietf.org/rfc/rfc2046.txt?number=2046"; +KRun::run(ofertas.service(), listaUrls); +</programlisting> + +</simplesect> + + +<simplesect id="mime-misc"> +<title +>Diversos</title> + +<para +>Nesta secção, nós queremos listar algumas APIs que estão de certo modo relacionadas com a discussão anterior. </para> + +<para +>Obter um ícone para um dado URL. Isto procura o tipo do URL e devolve o ícone associado. </para> + +<programlisting +>KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c"); +QString icone = KMimeType::iconForURL(url); +</programlisting> + +<para +>Executar um URL. Isto procura pelo tipo do URL e inicia o programa preferido do utilizador associado a este tipo. </para> + +<programlisting +>KURL url("http://dot.kde.org"); +new KRun(url); +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="nettransparency"> +<title +>Transparência na rede</title> + +<simplesect id="nettransparency-intro"> +<title +>Introdução</title> + +<para +>Na era na World Wide Web, é de uma importância essencial que as aplicações possam aceder aos recursos na Internet: elas deverão ser capazes de obter os ficheiros a partir de um servidor Web, gravar os ficheiros num servidor FTP ou ler as mensagens de e-mail de um servidor Web. Normalmente, a capacidade de aceder aos ficheiros, independentemente da sua localização é chamada de <emphasis +>transparência na rede</emphasis +>. </para> + +<para +>No passado, foram implementadas aproximações diferentes para estes objectivos. O sistema de ficheiros antigo NFS é uma tentativa de implementar a transparência de rede ao nível da API do POSIX. Embora esta aproximação funcione bastante bem nas redes locais e próximas, não é escalável para os recursos cujo acesso não seja fiável ou seja lento. Aqui, a <emphasis +>assincronização</emphasis +> é importante. Enquanto você está à espera do seu navegador Web para transferir uma página, a interface do utilizador não deverá bloquear. Da mesma forma, o início do desenho da página não deverá começar somente quando a página estiver disponível por completo mas sim actualizar-se regulamente à medida que os dados vão chegando. </para> + +<para +>Nas bibliotecas do KDE, a transparência da rede está implementada na API do KIO. O conceito central desta arquitectura é a <emphasis +>tarefa</emphasis +> de E/S. Uma tarefa pode copiar ou remover ficheiros, entre outras coisas. Logo que uma tarefa seja inicia, ela fica em segundo plano e não bloqueia a aplicação. Todas as comunicações da tarefa para a aplicação - como a entrega dos dados ou a informação de progresso - é feita de forma integrada com o ciclo de eventos do Qt. </para> + +<para +>A operação em segundo-plano é conseguida com o arranque de <emphasis +>ioslaves</emphasis +> para efectuar certas tarefas. Os 'ioslaves' são iniciados como processos separados e comunicam através de 'sockets' do domínio UNIX. Desta forma, não é necessário nenhum suporte de multi-tarefa e os 'slaves' instáveis não poderão estoirar as aplicações que os usam. </para> + +<para +>As localizações dos ficheiros são indicadas pelos URLs que são usados em grande escala. Mas, no KDE, os URLs não só se expandem à gama de ficheiros endereçáveis para além do sistema de ficheiros local. Também funciona na direcção oposta - p.ex. você poderá navegar nos pacotes TAR. Isto é conseguido com os URLs aninhados. Por exemplo, um ficheiro num pacote TAR num servidor HTTP poderá ter o URL </para> + +<programlisting +>http://www.xpto.pt/~ze/artigo.tgz#tar:/documento.tex +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-usingkio"> +<title +>Usar o KIO</title> + +<para +>Na maioria dos casos, as tarefas são criadas ao invocar as funções no espaço de nomes do KIO. Estas funções recebem um ou dois URLs como argumentos e possivelmente outros parâmetros necessários. Quando a tarefa terminar, ela emite o 'signal' <literal +>result(KIO::Job*)</literal +>. Depois de este 'signal' ter sido emitido, a tarefa elimina-se a si própria. Deste modo, um caso de uso típico poderia ser semelhante ao seguinte: </para> + +<programlisting +>void ClasseXpto::criarDirectoria() +{ + SimpleJob *tarefa = KIO::mkdir(KURL("file:/home/ze/dir_kio")); + connect( tarefa, SIGNAL(result(KIO::Job*)), + this, SLOT(resultadoMkdir(KIO::Job*)) ); +} + +void ClasseXpto::resultadoMkdir(KIO::Job *tarefa) +{ + if (tarefa->error()) + tarefa->showErrorDialog(); + else + cout << "o 'mkdir' correu bem" << endl; +} +</programlisting> + +<para +>Dependendo do tipo de tarefa, você poder-se-á também ligar a outros 'signals'. </para> + +<para +>Aqui está uma ideia geral das funções possíveis: </para> + +<variablelist> + +<varlistentry +><term +>KIO::mkdir(const KURL &url, int permissao)</term> +<listitem +><para +>Criar uma directoria, com algumas permissões opcionais. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rmdir(const KURL &url)</term> +<listitem +><para +>Remove uma directoria. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::chmod(const KURL &url, int permissoes)</term> +<listitem +><para +>Muda as permissões de um ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rename(const KURL &origem, const KURL &destino, bool sobrepor)</term> +<listitem +><para +>Muda o nome de um ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::symlink(const QString &alvo, const KURL &destino, bool sobrepor, bool mostrarProgresso)</term> +<listitem +><para +>Cria uma ligação simbólica. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::stat(const KURL &url, bool mostrarProgresso)</term> +<listitem +><para +>Descobre certas informações sobre o ficheiro, como o tamanho, a data de modificação e as permissões. A informação pode ser obtida a partir do KIO::StatJob::statResult() depois de a tarefa terminar. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::get(const KURL &url, bool reler, bool mostrarProgresso)</term> +<listitem +><para +>Transfere os dados de um dado URL. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::put(const KURL &url, int permissoes, bool sobrepor, bool continuar, bool mostrarProgresso)</term> +<listitem +><para +>Transfere os dados para um dado URL. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::http_post(const KURL &url, const QByteArray &dados, bool mostrarProgresso)</term> +<listitem +><para +>Envia os dados. É específico do HTTP. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::mimetype(const KURL &url, bool mostrarProgresso)</term> +<listitem +><para +>Tenta descobrir o tipo MIME do URL. O tipo poderá ser obtido a partir do KIO::MimetypeJob::mimetype() depois de a tarefa terminar. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_copy(const KURL &origem, const KURL &destino, int permissoes, bool sobrepor, bool continuar, bool mostrarProgresso)</term> +<listitem +><para +>Copia um único ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_move(const KURL &origem, const KURL &destino, int permissoes, bool sobrepor, bool continuar, bool mostrarProgresso)</term> +<listitem +><para +>Muda o nome ou move um único ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_delete(const KURL &url, bool mostrarProgresso)</term> +<listitem +><para +>Apaga um único ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listDir(const KURL &url, bool mostrarProgresso)</term> +<listitem +><para +>Lista o conteúdo de uma dada directoria. De cada vez que alguns itens passam a ser conhecidos, o 'signal' KIO::ListJob::entries() é emitido. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listRecursive(const KURL &url, bool mostrarProgresso)</term> +<listitem +><para +>Semelhante à função listDir(), só que esta função é recursiva. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::copy(const KURL &origem, const KURL &destino, bool mostrarProgresso)</term> +<listitem +><para +>Copia um ficheiro ou directoria. As directorias são copiadas de forma recursiva. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::move(const KURL &origem, const KURL &destino, bool mostrarProgresso)</term> +<listitem +><para +>Move ou muda o nome de um ficheiro ou directoria. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::del(const KURL &src, bool shred, bool showProgressInfo)</term> +<listitem +><para +>Apaga um ficheiro ou directoria. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="nettransparency-direntries"> +<title +>Itens da directoria</title> + +<para +>Tanto as tarefas KIO::stat() como a KIO::listDir() devolvem os seus resultados como um tipo UDSEntry e UDSEntryList respectivamente. A última está definida como sendo um QValueList<UDSEntry>. O acrónimo UDS significa "Universal directory service" (serviço de directório universal). O princípio está em que o item da directoria só contém a informação que um 'ioslave' poderá fornecer, nada mais. Por exemplo, o 'slave' de HTTP não fornece nenhuma informação sobre as permissões de acesso ou os donos dos ficheiros. Em vez disso, uma UDSEntry é uma lista de UDSAtoms. Cada átomo contém um item informativo específico. Ele consiste num tipo armazenado no 'm_uds' e num valor inteiro no 'm_long' ou um valor de texto no 'm_str', dependendo do tipo. </para> + +<para +>Os seguintes tipos estão actualmente definidos: </para> + +<itemizedlist> + +<listitem +><para +>UDS_SIZE (inteiro) - O tamanho do ficheiro. </para +></listitem> + +<listitem +><para +>UDS_USER (texto) - O utilizador que possui o ficheiro. </para +></listitem> + +<listitem +><para +>UDS_GROUP (texto) - O grupo que possui o ficheiro. </para +></listitem> + +<listitem +><para +>UDS_NAME (texto) - O nome do ficheiro. </para +></listitem> + +<listitem +><para +>UDS_ACCESS (inteiro) - As permissões sobre o ficheiro, como é guardado p.ex. pela função da 'libc' stat() no campo 'st_mode'. </para +></listitem> + +<listitem +><para +>UDS_FILE_TYPE (inteiro) - O tipo do ficheiro, tal como é, p.ex., registado pelo stat() no campo 'st_mode'. Como tal, você poderá usar as macros normais da 'libc' como a S_ISDIR para testar este valor .Repare que os dados fornecidos pelos 'ioslaves' correspondem ao stat(), não ao lstat(), i.e., no caso das ligações simbólicas, o tipo aqui mencionado é o tipo do ficheiro apontado pela ligação, não a ligação em si. </para +></listitem> + +<listitem +><para +>UDS_LINK_DEST (texto) - No caso de uma ligação simbólica, o nome do ficheiro para onde esta ligação aponta. </para +></listitem> + +<listitem +><para +>UDS_MODIFICATION_TIME (inteiro) - A hora (como no tipo 'time_t') em que o ficheiro foi modificado da última vez, como é p.ex. registado pelo stat() no campo 'st_mtime'. </para +></listitem> + +<listitem +><para +>UDS_ACCESS_TIME (inteiro) - A hora (como no tipo 'time_t') em que o ficheiro foi acedido da última vez, como é p.ex. registado pelo stat() no campo 'st_atime'. </para +></listitem> + +<listitem +><para +>UDS_CREATION_TIME (inteiro) - A hora (como no tipo 'time_t') em que o ficheiro foi criado, como é p.ex. registado pelo stat() no campo 'st_ctime'. </para +></listitem> + +<listitem +><para +>UDS_URL (texto) - Fornece um URL do ficheiro, se não for simplesmente a concatenação do URL da directoria e o nome do ficheiro. </para +></listitem> + +<listitem +><para +>UDS_MIME_TYPE (texto) - tipo MIME do ficheiro </para +></listitem> + +<listitem +><para +>UDS_GUESSED_MIME_TYPE (texto) - o tipo MIME do ficheiro, tal como é determinado pelo 'slave'. A diferença em relação ao tipo anterior é que o que é fornecido aqui não deverá ser considerado fiável (porque determiná-lo de forma fiável será demasiado dispendioso). Por exemplo, a classe KRun verifica explicitamente o tipo MIME se não tiver nenhuma informação fiável. </para +></listitem> + +</itemizedlist> + +<para +>Ainda que a forma de armazenar as informações sobre os ficheiros num <classname +>UDSEntry</classname +> seja flexível e prático do ponto de vista dos 'ioslaves', é uma confusão para ser usado pelo programador da aplicação. Por exemplo, para saber qual é o tipo MIME do ficheiro, você teria de iterar por todos os átomos e testar se o <literal +>m_uds</literal +> era o <literal +>UDS_MIME_TYPE</literal +>. Felizmente, existe uma API que é bastante mais simples de usar: a classe <classname +>KFileItem</classname +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-syncuse"> +<title +>Utilização síncrona</title> + +<para +>Normalmente, a API síncrona do KIO é demasiado complexa de usar e, como tal, a implementação de uma assincronização completa não é uma prioridade. Por exemplo, num programa que só consiga lidar com um ficheiro de cada vez, não há muito a fazer enquanto o programa está a transferir um ficheiro, de qualquer forma. Para esses casos simples, existe uma API muito mais simples sob a forma de funções estáticas no KIO::NetAccess. Por exemplo, para poder copiar um ficheiro, use </para> + +<programlisting +>KURL origem, destino; +source = ...; +target = ... +KIO::NetAccess::copy(origem, destino); +</programlisting> + +<para +>A função irá regressar depois de o processo de cópia ter terminado por completo. De qualquer forma, este método fornece uma janela de progresso e certifica-se que os processos da aplicação actualizam os eventos. </para> + +<para +>Uma combinação particularmente interessante de funções é a <function +>download()</function +> em conjunto com a <function +>removeTempFile()</function +>. A primeira obtém um ficheiro a partir de um dado URL e guarda-o num ficheiro temporário com um nome único. O nome é guardado no segundo argumento. <emphasis +>Se</emphasis +> o URL for local, o ficheiro não é transferido e, em vez disso, o segundo argumento passa a ser o nome do ficheiro local. A função <function +>removeTempFile()</function +> apaga o ficheiro indicado pelo seu argumento, se o ficheiro for o resultado de uma transferência anterior. Se não for o caso, não faz nada. Desta forma, uma forma muito simples de carregar os ficheiros, independentemente da sua localização é o pedaço de código a seguir: </para> + +<programlisting +>KURL url; +url = ...; +QString ficheiroTemporario; +if (KIO::NetAccess::download(url, ficheiroTemporario) { + // carregar o ficheiro com o nome 'ficheiroTemporario' + KIO::NetAccess::removeTempFile(ficheiroTemporario); +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-metadata"> +<title +>Meta-dados</title> + +<para +>Como pode ser visto em cima, a interface para as tarefas de E/S é bastante abstracta e não considera nenhuma troca de informação entre a aplicação e o 'IO slave', o qual é específico do protocolo. Isto nem sempre é apropriado. Por exemplo, você poderá querer dar certos parâmetros ao 'slave' de HTTP para controlar o comportamento da sua 'cache' ou para enviar um conjunto de 'cookies' com o pedido. Para esse fim, o conceito de meta-dados foi introduzido. Quando for criada uma tarefa, você poderá configurá-la se lhe adicionar meta-dados. Cada item de meta-dados consiste num par chave/valor. Por exemplo, para evitar que o 'slave' de HTTP carregue a página Web da sua 'cache', você pode usar: </para> + +<programlisting +>void ClasseXpto::relerPagina() +{ + KURL url("http://www.tdevelop.org/index.html"); + KIO::TransferJob *tarefa = KIO::get(url, true, false); + tarefa->addMetaData("cache", "reload"); + ... +} +</programlisting> + +<para +>A mesma técnica é usada na outra direcção, i.e., para a comunicação do 'slave' para a aplicação. O método <function +>Job::queryMetaData()</function +> pede o valor de uma certa chave indicada pelo 'slave'. Para o 'slave' de HTTP, um desses exemplos é a chave <literal +>"modified"</literal +> (modificado), que contém uma (representação em texto da) data em que a página Web foi modificada da última vez. Um exemplo de como você pode usar isto é o seguinte: </para> + +<programlisting +>void ClasseXpto::mostrarDataModificacao() +{ + KURL url("http://developer.kde.org/documentation/kde2arch/index.html"); + KIO::TransferJob *tarefa = KIO::get(url, true, false); + connect( tarefa, SIGNAL(result(KIO::Job*)), + this, SLOT(transferirResultado(KIO::Job*)) ); +} + +void ClasseXpto::transferirResultado(KIO::Job *tarefa) +{ + QString tipoMime; + if (tarefa->error()) + tarefa->showErrorDialog(); + else { + KIO::TransferJob *tarefaTransferencia = (KIO::TransferJob*) tarefa; + QString modificado = tarefaTransferencia->queryMetaData("modified"); + cout << "Última modificação: " << modificado << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-scheduling"> +<title +>Escalonamento</title> + +<para +>Ao usar a API do KIO, você normalmente não tem de lidar com os detalhes de arranque dos 'IO slaves' e da comunicação com eles. O caso de uso normal é iniciar uma tarefa e, com alguns parâmetros, tratar os 'signals' que esta emite. </para> + +<para +>Nos bastidores, o cenário é bastante mais complicado. Quando você cria uma tarefa, esta é posta numa fila. Quando a aplicação regressa ao ciclo de eventos, o KIO reserva processos de 'slaves' para as tarefas na fila. Para as primeiras tarefas que sejam iniciadas, isto é trivial: um 'IO slave' para o protocolo corresponde é iniciado. Contudo, depois de a tarefa (como a transferência de um servidor de HTTP) ter terminado, não é imediatamente morta. Em vez disso, é colocada num grupo de 'slaves' inactivos e é morta ao fim de um dado período de inactividade (normalmente 3 minutos). Se surgir um novo pedido para o mesmo protocolo e máquina, o 'slave' é reutilizado. A vantagem óbvia é que, para uma série de tarefas para a mesma máquina, o custo da criação de novos processos e da passagem por um processo de autenticação é poupado. </para> + +<para +>Claro que a reutilização só é possível quando o 'slave' existente já tiver terminado a sua tarefa anterior. Sempre que chega um novo pedido enquanto um 'slave' existente está ainda a correr, é iniciado um novo processo para ser utilizado. Na utilização da API nos exemplos acima, não existe nenhuma limitação para criar novos processos de 'slaves': se você iniciar uma série consecutiva de transferências para 20 ficheiros, então o KIO irá iniciar 20 processos de 'slaves'. Este esquema de atribuição de 'slaves' a tarefas é chamado de <emphasis +>directo</emphasis +>. Não é sempre o esquema mais apropriado, dado que poderá necessitar de bastante memória e poderá colocar uma carga elevada tanto no cliente como no servidor. </para> + +<para +>Por isso, existe uma forma diferente. Você poderá <emphasis +>escalonar</emphasis +> as tarefas. Se o fizer, somente um número limitado (de momento 3) de processos de 'slaves' para um dado protocolo serão criados. Se você criar mais tarefas que isso, elas serão colocadas numa fila e são processadas quando um processo de um 'slave' ficar inactivo. Isto é feito da seguinte forma: </para> + +<programlisting +>KURL url("http://developer.kde.org/documentation/kde2arch/index.html"); +KIO::TransferJob *tarefa = KIO::get(url, true, false); +KIO::Scheduler::scheduleJob(tarefa); +</programlisting> + +<para +>Uma terceira possibilidade é <emphasis +>orientar à ligação</emphasis +>. Por exemplo, no caso do 'slave' de IMAP, não faz nenhum sentido lançar vários processos para o mesmo servidor. Só uma ligação de IMAP de cada vez é que deverá ser permitida. Neste caso, a aplicação deverá lidar explicitamente com a noção de um 'slave'. Terá de libertar um 'slave' para uma determinada ligação e então atribuir todas as tarefas que deverão ir pela mesma ligação ao mesmo 'slave'. Isto poderá ser conseguido facilmente com a utilização do KIO::Scheduler: </para> + +<programlisting +>KURL urlBase("imap://bernd@albert.physik.hu-berlin.de"); +KIO::Slave *slave = KIO::Scheduler::getConnectedSlave(urlBase); + +KIO::TransferJob *tarefa1 = KIO::get(KURL(urlBase, "/INBOX;UID=79374")); +KIO::Scheduler::assignJobToSlave(slave, tarefa1); + +KIO::TransferJob *tarefa2 = KIO::get(KURL(urlBase, "/INBOX;UID=86793")); +KIO::Scheduler::assignJobToSlave(slave, tarefa2); + +... + +KIO::Scheduler::disconnectSlave(slave); +</programlisting> + +<para +>Você só poderá desligar o 'slave' depois de todas as tarefas atribuídas a ela terem terminado de forma garantida. </para> + +</simplesect> + + +<simplesect id="nettransparency-definingslaves"> +<title +>Definir um 'ioslave'</title> + +<para +>Na parte seguinte iremos discutir como é que você poderá adicionar um novo 'ioslave' ao sistema. Em analogia aos serviços, os 'ioslaves' novos são publicados no sistema, instalando para tal um pequeno ficheiro de configuração. O seguinte excerto do Makefile.am instala o protocolo FTP: </para> + +<programlisting +>protocoldir = $(kde_servicesdir) +protocol_DATA = ftp.protocol +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>O conteúdo do ficheiro 'ftp.protocol' é o seguinte: </para> + +<programlisting +>[Protocol] +exec=kio_ftp +protocol=ftp +input=none +output=filesystem +listing=Name,Type,Size,Date,Access,Owner,Group,Link, +reading=true +writing=true +makedir=true +deleting=true +Icon=ftp +</programlisting> + +<para +>O item <literal +>"protocol"</literal +> define qual o protocolo pelo qual este 'slave' é responsável. O <literal +>"exec"</literal +> é (ao contrário do que estaria à espera) o nome da biblioteca que implementa o 'slave'. Quando o 'slave' for suposto arrancar, o executável <command +>"tdeinit"</command +> é iniciado, o qual por sua vez arranca esta biblioteca no seu espaço de endereçamento. Por isso, na prática, você poderá pensar no 'slave' em execução como um processo separado, ainda que seja implementado como uma biblioteca. A vantagem deste mecanismo é que poupa bastante memória e reduz o tempo necessário pelo editor de ligações durante a execução. </para> + +<para +>As linhas "input" e "output" não são usadas de momento. </para> + +<para +>As linhas restantes do ficheiro <literal +>.protocol</literal +> definem quais as capacidades que o 'slave' tem. De um modo geral, as funcionalidades que um 'slave' tem de implementar são muito mais simples do que as funcionalidades que a API do KIO oferece à aplicação. A razão para tal é que as tarefas complexas são escalonadas para um conjunto de sub-tarefas. Por exemplo, para poder listar uma directoria recursivamente, terá de ser iniciada uma tarefa para a directoria de topo. Depois, para cada subdirectoria indicada, são criadas novas sub-tarefas. Um escalonador no KIO certifica-se que não estão demasiadas tarefas activas ao mesmo tempo. De forma semelhante, para poder copiar um ficheiro num protocolo que não suporte a cópia directa (como o protocolo <literal +>ftp:</literal +>), o KIO poderá ler o ficheiro de origem e então escrever os dados para o ficheiro de destino. Para isto funcionar, o <literal +>.protocol</literal +> precisa de publicar as acções que o seu 'slave' suporta. </para> + +<para +>Dado que os 'slaves' são carregados como bibliotecas dinâmicas, mas constituem em si programas autónomos, a sua plataforma de código parece ligeiramente diferente dos 'plugins' normais das bibliotecas dinâmicas. A função que é invocada para iniciar o 'slave' chama-se <function +>kdemain()</function +>. Esta função faz algumas inicializações e vai então para o ciclo de eventos, onde fica à espera de pedidos da aplicação que a usa. Isto parece-se com o seguinte: </para> + +<programlisting +>extern "C" { int kdemain(int argc, char **argv); } + +int kdemain(int argc, char **argv) +{ + KLocale::setMainCatalogue("tdelibs"); + KInstance instance("kio_ftp"); + (void) KGlobal::locale(); + + if (argc != 4) { + fprintf(stderr, "Utilização: kio_ftp protocolo " + "socket1-dominio socket2-dominio\n"); + exit(-1); + } + + FtpSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + return 0; +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-implementingslaves"> +<title +>Implementar um 'ioslave'</title> + +<para +>Os 'slaves' são implementados como sub-classes da <classname +>KIO::SlaveBase</classname +> (a FtpSlave no exemplo acima). Como tal, as acções listadas no ficheiro <literal +>.protocol</literal +> correspondem a certas funções virtuais no <classname +>KIO::SlaveBase</classname +> que a implementação do 'slave' precisa de reimplementar. Aqui está uma lista das acções possíveis e das funções virtuais correspondentes: </para> + +<variablelist> + +<varlistentry +><term +>leitura - Lê os dados de um URL</term> +<listitem +><para +>void get(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>escrita - Escreve os dados num URL e cria o ficheiro se ainda não existir nenhum.</term> +<listitem +><para +>void put(const KURL &url, int permissoes, bool sobrepor, bool continuar)</para +></listitem +></varlistentry> + +<varlistentry +><term +>mudança de nome - Muda o nome de um ficheiro.</term> +<listitem +><para +>void rename(const KURL &origem, const KURL &destino, bool sobrepor)</para +></listitem +></varlistentry> + +<varlistentry +><term +>remoção - Remove um ficheiro ou directoria.</term> +<listitem +><para +>void del(const KURL &url, bool eUmFicheiro)</para +></listitem +></varlistentry> + +<varlistentry +><term +>listagem - Mostra o conteúdo de uma directoria.</term> +<listitem +><para +>void listDir(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>makedir - Cria uma directoria.</term> +<listitem +><para +>void mkdir(const KURL &url, int permissoes)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>Adicionalmente, existem funções que podem ser implementadas de novo e que não estão listadas no ficheiro <literal +>.protocol</literal +>. Para essas operações, o KIO determina automaticamente se elas são suportadas ou não (i.e., se a implementação por omissão devolve um erro). </para> + +<variablelist> + +<varlistentry +><term +>Fornece dados sobre um ficheiro, de forma semelhante à função do C stat().</term> +<listitem +><para +>void stat(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Muda as permissões de acesso de um ficheiro.</term> +<listitem +><para +>void chmod(const KURL &url, int permissoes)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Determina o tipo MIME de um ficheiro.</term> +<listitem +><para +>void mimetype(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Copia um ficheiro.</term> +<listitem +><para +>copy(const KURL &url, const KURL &destino, int permissoes, bool sobrepor)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Cria uma ligação simbólica.</term> +<listitem +><para +>void symlink(const QString &alvo, const KURL &destino, bool sobrepor)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>Todas estas implementações deverão terminar com uma de duas chamadas: Se a operação foi bem sucedida, deverão invocar o <literal +>finished()</literal +>. Se ocorreu um erro, o <literal +>error()</literal +> deverá ser invocado com um código de erro como primeiro argumento e um texto no segundo. Os códigos de erro possíveis estão listados no tipo enumerado <type +>KIO::Error</type +>. O segundo argumento é normalmente o URL em questão. É usado, p.ex., no <function +>KIO::Job::showErrorDialog()</function +> para parametrizar a mensagem de erro para o utilizador. </para> + +<para +>Para os 'slaves' que correspondem aos protocolos de rede, poderá ser interessante reimplementar o método <function +>SlaveBase::setHost()</function +>. Isto é chamado para indicar ao processo do 'slave' qual a máquina e o porto, assim como o utilizador e a senha a usar. De um modo geral, os meta-dados definidos pela aplicação poderão ser questionados pelo <function +>SlaveBase::metaData()</function +>. Você poderá verificar a existência de meta-dados de uma determinada chave com o <function +>SlaveBase::hasMetaData()</function +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-communication"> +<title +>Comunicar de volta à aplicação</title> + +<para +>As várias acções implementadas num 'slave' precisam de uma forma qualquer para comunicar de volta para a aplicação, usando o processo do 'slave': </para> + +<itemizedlist> + +<listitem +><para +>O <function +>get()</function +> envia blocos de dados. Isto é feito com o <function +>data()</function +>, que recebe um <classname +>QByteArray</classname +> como argumento. Claro que não precisa de enviar todos os dados de uma vez. Se enviar um ficheiro grande, invoque o <function +>data()</function +> com blocos de dados mais pequenos, de modo a que a aplicação os processe. Invoque o <function +>finished()</function +> quando a transferência terminar. </para +></listitem> + +<listitem +><para +>O <function +>listDir()</function +> devolve informações sobre os itens de uma directoria. Para esse fim, chame o <function +>listEntries()</function +> com um <classname +>KIO::UDSEntryList</classname +> como argumento. De forma análoga à do <function +>data()</function +>, você poderá invocá-lo várias vezes. Quando terminar, invoque o <function +>listEntry()</function +> com o segundo parâmetro igual a 'true' (verdadeiro). Você poderá também chamar o <function +>totalSize()</function +> para indicar o número total de itens da directoria, se forem conhecidos. </para +></listitem> + +<listitem +><para +>O <function +>stat()</function +> devolve informações acerca de um ficheiro como o seu tamanho, o tipo MIME, etc. Essa informação está contida num <classname +>KIO::UDSEntry</classname +>, o qual será discutido em baixo. Use o <function +>statEntry()</function +> para enviar um desses itens para a aplicação. </para +></listitem> + +<listitem +><para +>O <function +>mimetype()</function +> chama o <function +>mimeType()</function +> com um argumento de texto. </para +></listitem> + +<listitem +><para +>O <function +>get()</function +> e o <function +>copy()</function +> podem querer fornecer informações de progresso. Isto é feito com os métodos <function +>totalSize()</function +>, <function +>processedSize()</function +>, <function +>speed()</function +>. O tamanho total e o tamanho processado são indicados em 'bytes', enquanto que a velocidade é dada em 'bytes' por segundo. </para +></listitem> + +<listitem +><para +>Você poderá enviar pares arbitrários de chaves/valores de meta-dados com o <function +>setMetaData()</function +>. </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="nettransparency-interacting"> +<title +>Interagir com o utilizador</title> + +<para +>Algumas das vezes, um 'slave' precisa de interagir com o utilizador. Os exemplos incluem as mensagens de informações, as janela de autenticação e as janelas de confirmação, sempre que um ficheiro está prestes a ser sobreposto. </para> + +<itemizedlist> + +<listitem +><para +><function +>infoMessage()</function +> - Isto é para fins de informação, como a mensagem "A obter dados de <máquina>" do 'slave' de HTTP, o qual é mostrado normalmente na barra de estado do programa. Do lado da aplicação, este método corresponde ao 'signal' <function +>KIO::Job::infoMessage()</function +>. </para +></listitem> + +<listitem +><para +><function +>warning()</function +> - Mostra um aviso numa janela com o <function +>KMessageBox::information()</function +>. Se ainda estiver aberta uma mensagem de uma invocação anterior do warning() do mesmo processo-filho, nada acontece. </para +></listitem> + +<listitem +><para +><function +>messageBox()</function +> - Este é mais rico que o método anterior. Permite-lhe abrir uma mensagem com um texto e um título, assim como alguns botões. Veja o tipo enumerado <type +>SlaveBase::MessageBoxType</type +> para mais referências. </para +></listitem> + +<listitem +><para +><function +>openPassDlg()</function +> - Abre uma janela onde se poderá indicar o nome do utilizador e a sua senha. </para +></listitem> + +</itemizedlist> + +</simplesect> + +</sect1> + +</chapter> + + + +<appendix id="misc"> +<title +>Licença</title> + +&underFDL; +&underGPL; + +</appendix> + +</book> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.am b/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.am new file mode 100644 index 00000000000..6869837a64a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.in b/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.in new file mode 100644 index 00000000000..cd9855c99cf --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdevelop/tdevelop +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/tdevelop/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-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=unixdev.docbook tdevelop-install.docbook app-files.docbook file-browsers.docbook index.docbook applicationwizard.docbook getting-started.docbook plugin-tools.docbook project-management.docbook tdevelop-scripting.docbook cvs.docbook setup.docbook credits.docbook documentation.docbook commands.docbook app-uimodes-examples.docbook index.cache.bz2 app-menu.docbook survey-manual.docbook editing.docbook app-misc-info.docbook app-changelog.docbook nutshell.docbook project-advanced.docbook adv-build-management.docbook Makefile.in class-browsers.docbook tdevelop-survey.docbook debugger.docbook Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook tdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook tdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook + @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)/tdevelop + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop + @for base in app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook tdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook tdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\ + done + +uninstall-nls: + for base in app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook tdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook tdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook tdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook tdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/tdevelop/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/adv-build-management.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/adv-build-management.docbook new file mode 100644 index 00000000000..ba79d515f9a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/adv-build-management.docbook @@ -0,0 +1,174 @@ +<chapter id="adv-build-management"> +<title +>Gestão de Compilações Avançada</title> +<indexterm zone="adv-build-management" +><primary +>&automake;</primary +></indexterm> + +<sect1 id="buildconfigurations"> +<title +>Configurações de Compilação Múltiplas</title> +<indexterm zone="buildconfigurations" +><primary +>configurações da criação</primary +><secondary +>múltiplas</secondary +></indexterm> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- buildconfigurations --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="crosscompiling"> +<title +>Compilação Cruzada</title> +<indexterm zone="crosscompiling" +><primary +>compilação cruzada</primary +></indexterm> +<indexterm zone="crosscompiling" +><primary +>compilação</primary +><secondary +>cruzada</secondary +></indexterm> +<indexterm zone="crosscompiling" +><primary +><option +>--host</option +></primary +></indexterm> + +<para +>Quando tiver compiladores cruzados disponíveis, poderá compilar os seus programas para processadores e sistemas operativos diferentes do sistema operativo onde o &tdevelop; e o compilador estão a correr. A colecção de compiladores da &GNU;, o &gcc;, pode ser configurado e compilado como compilador cruzado se o compilar você mesmo. Consulte as <ulink url="info://gcc/Cross-Compiler" +>páginas do 'info' do GCC</ulink +> para saber mais informações. Algumas das distribuições do &Linux; também oferecem pacotes binários. </para> + +<para +>Um pacote baseado no <application +>automake</application +> pode ser compilado de forma cruzada se indicar a opção <option +>--host</option +> no programa 'configure' e definir as variáveis de ambiente <envar +>CC</envar +> e <envar +>CXX</envar +> para os executáveis dos compiladores cruzados. Muitas vezes poderá querer mudar entre uma versão compilada de forma cruzada e outra compilada para o seu sistema de desenvolvimento. Para tal, é vantajoso usar a capacidade de o &tdevelop; criar várias configurações de compilação, como é explicado em <xref linkend="buildconfigurations"/>. Logo que tenha criado uma nova configuração de compilação criada na janela <menuchoice +><guimenu +>Projecto</guimenu +><guimenuitem +>Opções do Projecto...</guimenuitem +></menuchoice +>, adicione a opção </para> + +<screen +><option +>--host=</option +><replaceable +>plataforma</replaceable +></screen> + +<para +>às opções do 'configure'. O nome da <replaceable +>plataforma</replaceable +> é um tuplo no formato </para> + +<programlisting +>cpu-fabricante-so</programlisting> +<para +>ou</para> +<programlisting +>cpu-fabricante-kernel-so</programlisting> + +<para +>Para as várias combinações, poderá usar uma versão reduzida, como por exemplo <wordasword +>i386-linux</wordasword +> ou <wordasword +>arm-elf</wordasword +>. </para> + +</sect1 +> <!-- crosscompiling --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="qtembedded"> +<title +>Qt/Embedded</title> +<indexterm zone="qtembedded" +><primary +>embebido</primary +><secondary +>Qt</secondary +></indexterm> +<indexterm zone="qtembedded" +><primary +>Qt/Embedded</primary +></indexterm> +<indexterm zone="qtembedded" +><primary +>Qtopia</primary +></indexterm> +<indexterm zone="qtembedded" +><primary +>'framebuffer'</primary +></indexterm> + +<para +>O &qte; é uma versão da biblioteca &Qt; que não usa o sistema de janelas do X, mas acede directamente ao 'framebuffer' nos sistemas &Linux;. É por isso interessante para os sistemas embebidos com grandes restrições na utilização de memória do sistema completo. A sua &API; é completamente compatível com a versão para X11. </para> + +<para +>O desenvolvimento de uma aplicação para o &qte; com o &tdevelop; não é muito diferente de desenvolver um programa para a versão em X11 do &Qt;. De facto, pode usar a mesma base de código para ambas as versões. Se usar a gestão de projectos 'autoproject', poderá passar para a versão embebida, usando o argumento <option +>--enable-embedded</option +> no programa 'configure'. Poderá definir isto na janela de <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do Projecto...</guimenuitem +></menuchoice +> em <guilabel +>Opções do Configure</guilabel +>. Com a opção <option +>--with-qt-dir=DIR</option +>, poderá definir a pasta em que o &qte; está instalado. </para> + +<para +>Após configurar e compilar a sua aplicação com estas opções, ela irá associar-se à biblioteca <filename +>libqpe.so</filename +>. Esta versão da sua aplicação não irá executar normalmente quando usar o X11. Para poder testá-la, execute-a sob o controlo do programa <application +>qvfb</application +> (&Qt; Virtual Frame Buffer). Isto é feito ao iniciar o <application +>qvfb</application +> e depois, ao iniciar a sua aplicação, com </para> + +<screen +><command +>aplicacao <option +>-qws</option +> <option +>-display QVFb:0</option +></command +></screen> + +<para +>Naturalmente, quando tiver uma versão funcional da sua aplicação, irá querer usá-la no processador-alvo. Para tal, será provavelmente conveniente criar várias configurações de compilação, como foi explicado acima, para que possa mudar rapidamente entre a versão em execução no seu sistema de desenvolvimento e a versão a correr no sistema-alvo. </para> + +<para +>As aplicações para o &qte; irão executar normalmente como aplicações autónomas no dispositivo para o qual estão desenhadas. A Trolltech também suporta o Qtopia, que é uma colecção de aplicações para PIM, navegação Web e outras áreas diversas, funcionando em conjunto de forma consistente. É o ambiente-padrão, por exemplo, do Sharp Zaurus. Poderá criar aplicações que se integrem neste ambiente, usando o SDK do Qtopia. Isto implica fazer com que a classe da sua aplicação seja uma sub-classe de <classname +>QPEApplication</classname +> e compilar com a biblioteca <filename +>libqpe.so</filename +>. Se desenvolver a sua aplicação com a gestão de projectos 'autoproject', terá de adicionar <option +>--enable-qtopia</option +> às opções do 'configure'. </para> + +</sect1 +> <!-- qtembedded --> + +</chapter +> <!-- adv-build-management --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/app-changelog.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/app-changelog.docbook new file mode 100644 index 00000000000..5b22ece159f --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/app-changelog.docbook @@ -0,0 +1,51 @@ +<appendix id="app-changelog"> +<title +>Alterações</title> +<sect1 id="changes"> +<title +>Alterações a Este Documento</title> +<para> +<itemizedlist> +<listitem +><para +>03-01-2003 — Início deste Changelog </para +></listitem> +</itemizedlist> +</para> + +<para +>02-05-2005 Muitas alterações de Volker Paul, incluindo: <itemizedlist +> <listitem +><para +> divisão em ficheiros por cada capítulo/apêndice </para +></listitem +> <listitem +><para +> adicionada a referência dos comandos ordenada pelo menu (as descrições ainda não estão completas) </para +></listitem +> <listitem +><para +> Tutorial do AppWizard no 'getting-started.docbook' </para +></listitem +> <listitem +><para +> Reorganização dos capítulos, inspirada no manual do Konqueror </para +></listitem +> <listitem +><para +> Moveu-se a instalação, a programação em Unix e o "num Minuto" para o apêndice </para +></listitem +> <listitem +><para +> Reformulação do apêndice de 'plugins, incluindo o gerado da lista de 'plugins' listplugins.sh </para +></listitem +> </itemizedlist +> Ainda longe de completo, mas um pequeno passo em frente. </para> + + +</sect1 +> <!-- changes --> +</appendix +> <!-- app-changelog --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/app-files.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/app-files.docbook new file mode 100644 index 00000000000..9c281e7c33f --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/app-files.docbook @@ -0,0 +1,1684 @@ +<appendix id="app-files"> +<!-- LWatts (2005-04-30): A lot of this might be better as variable lists, --> +<!-- but it's not that big a deal. Something to be done only when there's --> +<!-- a lot of textual changes needed here (e.g., maybe never ) --> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Ficheiros de Configuração Usados pelo &tdevelop;</title> + +<para +>O &tdevelop; usa uma série de ficheiros de configuração que estão distribuídos entre várias pastas. Existem dois grupos principais de ficheiros de configuração para distinguir: </para> +<simplelist> + <member +><link linkend="app-files-default" +>Configuração por Omissão do &tdevelop;</link +> — os ficheiros configurados quando o &tdevelop; foi instalado. </member> + <member +><link linkend="app-files-user" +>Configuração Orientada pelo Utilizador</link +> — os ficheiros que contêm as modificações do utilizador aos valores predefinidos, assim como as configurações feitas pelo próprio &tdevelop; e pelos seus 'plugins'. </member> +</simplelist> + +<sect1 id="app-files-default"> +<title +>Configuração Predefinida do &tdevelop;</title> + +<para +>Na instalação, o &tdevelop; grava alguns ficheiros de informação por omissão para fins de configuração nas subpastas da pasta de instalação <filename class="directory" +>$<envar +>KDEDIR</envar +></filename +> (normalmente algo do género de <filename class="directory" +>/opt/kde</filename +>, <filename class="directory" +>/usr/local/kde</filename +>, ou outra pasta de instalação definida pelo utilizador; veja em <link linkend="tdevelop-install" +>Instalar o &tdevelop;</link +>). </para> + +<sect2 id="app-files-default-config"> +<title +>Configuração Predefinida do &tdevelop;</title> + +<para +>Só existe um ficheiro de configuração por omissão específico do &tdevelop; na pasta <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/config/</filename +>: </para> +<variablelist> + <varlistentry> + <term +><filename +>tdeveloprc</filename +></term> + <listitem +><para +>Este ficheiro contém as opções básicas que o &tdevelop; necessita para começar. Será copiado para a pasta do utilizador em <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config</filename +>, quando o &tdevelop; não encontrar aí um ficheiro <filename +>tdeveloprc</filename +> no arranque. </para +></listitem> + </varlistentry> +</variablelist> + +</sect2 +> <!-- app-files-default-config --> + +<sect2 id="app-files-default-apps"> +<title +>Valores Predefinidos da Aplicação</title> + +<para +>A maioria das funcionalidades do &tdevelop; são oferecidas através de KParts. Estas são basicamente aplicações desenhadas especialmente para correr na plataforma do &tdevelop; (veja a introdução no apêndice sobre as <link linkend="plugin-tools" +>Ferramentas e 'Plugins'</link +>). Cada aplicação KPart tem o seu próprio conjunto de ficheiros de configuração, cujos valores por omissão serão gravados em várias subpastas da pasta de instalação <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/</filename +>. </para> + +<para +>Existem bastantes subpastas de configuração por omissão em <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/</filename +>, cujos nomes começam todos por uma sequência <filename +>kdev</filename +>. A maioria delas são para o uso interno do &tdevelop;. Elas poderão estar agrupadas deliberadamente para fins de legibilidade como: <simplelist> + <member +><link linkend="app-files-default-apps-stdalone" +>Aplicações Autónomas</link +></member> + <member +><link linkend="app-files-default-apps-task" +>Componentes Específicas de uma Tarefa</link +></member> + <member +><link linkend="app-files-default-apps-project" +>Componentes de Geração de Projectos</link +></member> + <member +><link linkend="app-files-default-apps-lang" +>Componentes Específicas da Linguagem</link +></member> +</simplelist> +</para> + +<itemizedlist> + <listitem id="app-files-default-apps-stdalone" +><itemizedlist> + <title +>Aplicações Autónomas</title> + <listitem> + <para +><filename class="directory" +>tdevelop/</filename +> — contém os ficheiros para configurar o &IDE; &tdevelop;:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>licenses/</filename +> — contém os vários textos de licenças.</para +></listitem> + <listitem +><para +><filename class="directory" +>pics/</filename +> — contém os ficheiros de imagens usados nos ecrãs iniciais do Assistente do &tdevelop; e do Desenhador do &tdevelop;.</para +></listitem> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — contém as opções de perfis dos 'plugins'. (De momento só existe um perfil <filename +>tiny</filename +> (minúsculo) que define um conjunto mínimo de 'plugins' activos do &tdevelop;.)</para +></listitem> + <listitem +><para +><filename +>eventsrc</filename +> — mantém vários textos de localização de <quote +>Processo com sucesso</quote +>.</para +></listitem> + <listitem +><para +><filename +>tdevelopui.rc</filename +> — oferece os menus e barras de ferramentas básicos que o &tdevelop; usa.</para +></listitem> + <listitem +><para +><filename +>kdevhtml_partui.rc</filename +> — oferece um item <guimenuitem +>Imprimir...</guimenuitem +> no menu <guimenu +>Ficheiro</guimenu +>, um item <guimenuitem +>Copiar</guimenuitem +> no menu <guimenu +>Editar</guimenu +> e as setas <guilabel +>Recuar</guilabel +> e <guilabel +>Avançar</guilabel +> na <guilabel +>Barra do Navegador</guilabel +>, para o caso de navegar num ficheiro &HTML; no 'plugin' de <guilabel +>Documentação</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevassistant/</filename +> — oferece os menus e barras de ferramentas do navegador de documentação do Assistente do &tdevelop;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdesigner/</filename +> e <filename class="directory" +>kdevdesignerpart/</filename +> — oferecem os menus e barras de ferramentas para o desenhador de interfaces autónomo do &tdevelop;.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-task"> + <title +>Componentes Específicas de uma Tarefa</title> + <listitem id="app-files-default-abbrev"> + <para +><filename class="directory" +>kdevabbrev/</filename +> — contém os ficheiros usados pelo 'plugin' de <guilabel +>Expansão de Abreviaturas</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — contém os ficheiros de definições de palavras-chave usadas pelo comando <guilabel +>Expandir o Texto</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contém os ficheiros de definição de modelos usados pelo comando <guilabel +>Expandir a Abreviatura</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — oferece os itens <guimenuitem +>Expandir o Texto</guimenuitem +> e <guimenuitem +>Expandir a Abreviatura</guimenuitem +> do menu <guimenu +>Editar</guimenu +>.</para +></listitem> +</itemizedlist> + </listitem> + <listitem id="app-files-default-appwizard"> + <para +><filename class="directory" +>kdevappwizard/</filename +> — contém os ficheiros usados pela componente do &appwizard;:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>importfiles/</filename +> — contém os ficheiros de projecto <filename +>.tdevelop</filename +> que controlam a inicialização de um novo projecto.</para +></listitem> + <listitem +><para +><filename class="directory" +>imports/</filename +> — contém os modelos para configurar os ficheiros <filename +>.desktop</filename +> específicos de um projecto.</para +></listitem> + <listitem +><para +><filename class="directory" +>template-common/</filename +> — contém vários ficheiros que são incluídos normalmente nas pastas de código do projecto.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contém os ficheiros de configuração que descrevem a informação a ser incluída numa dada pasta de código do projecto.</para +></listitem> + <listitem +><para +><filename +>*.png</filename +> — as imagens de antevisão do projecto usadas pelo &appwizard;.</para +></listitem> + <listitem +><para +><filename +>*.tar.gz</filename +> — os pacotes que contêm os ficheiros de código a serem incluídos numa pasta de um projecto novo gerada.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevastyle/</filename +> — oferece o item para <guimenuitem +>Reformatar o Código</guimenuitem +> no menu <guimenu +>Editar</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +> e para a <guilabel +>Barra de Construção (&tdevelop;)</guilabel +>.</para +></listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview/</filename +> — contém os ficheiros usados pelo 'plugin' do projecto para a <guilabel +>Janela de Classes</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>pics/</filename +> — contém os ícones usados na árvore de <guilabel +>Classes</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevclassview.tc</filename +> — oferece o item do <guimenuitem +>Diagrama de Herança de Classes</guimenuitem +> no menu <guimenu +>Projectos</guimenu +>, assim como a lista de navegação de classes na <guilabel +>Barra de Navegação</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevcloser/</filename +> — oferece os itens de fecho do menu <guimenu +>Janelas</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevctags/</filename +> — oferece o item do <guimenuitem +>CTags</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +> para o 'plugin' do projecto para a <guilabel +>Interface do CTags</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcvsservice/</filename +> — oferece o ícone usado pela página de <guilabel +>CvsService</guilabel +> e um pequeno programa usado para adicionar um novo item ao repositório do &cvs;, sendo ambos usados no 'plugin' do projecto para a <guilabel +>Integração com o CVS</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdebugger/</filename +> — oferece os itens de menu <guimenu +>Depurar</guimenu +> para o 'plugin' do projecto <guilabel +>Interface do Depurador</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdiff/</filename +> — oferece o item do <guimenuitem +>Visualizador de Diferenças</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdistpart/</filename +> — oferece o item de <guimenuitem +>Distribuição & Publicação</guimenuitem +> no menu <guimenu +>Projecto</guimenu +> do 'plugin' do projecto <guilabel +>Suporte de Empacotamento Final</guilabel +>.</para +></listitem> + <listitem id="app-files-default-kdevdoc"> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — contém os ficheiros usados pelo 'plugin' de <guilabel +>Documentação</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>en/</filename +> e <filename class="directory" +>pics/</filename +> — contém os ficheiros usados pela ferramenta de procura <application +>htdig</application +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>tocs/</filename +> — contém os ficheiros de descrição do conteúdo da documentação por omissão do &tdevelop; (veja a descrição em <link linkend="toc-file-structure" +>Estrutura Básica dos Ficheiros TOC do &tdevelop;</link +>).</para +></listitem> + <listitem +><para +><filename +>kdevpart_documentation.rc</filename +> — oferece os itens relacionados com a procura no menu <guimenu +>Ajuda</guimenu +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevdoxygen/</filename +> — oferece os itens de menu para o 'plugin' do projecto <guilabel +>Suporte do Doxygen</guilabel +>.</para +></listitem> + <listitem id="app-files-default-filecreate"> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — contém os ficheiros usados pelo <guilabel +>Assistente de Novo Ficheiro:</guilabel +> <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — oferece o conteúdo de texto inicial a ser colocado num ficheiro de código novo de determinado tipo.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — oferece o item <guimenuitem +>Novo</guimenuitem +> do menu <guimenu +>Ficheiro</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — contém as descrições dos tipos de ficheiros disponíveis a serem mostrados na janela de <guilabel +>Novo Ficheiro</guilabel +>.</para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfilter/</filename +> — oferece os itens <guimenuitem +>Executar um Comando...</guimenuitem +> e <guimenuitem +>Filtrar a Selecção Através de um Comando...</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' de <guilabel +>Filtragem e Inserção na Linha de Comandos</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfullscreen/</filename +> — oferece o item do <guimenuitem +>Modo de Ecrã Completo</guimenuitem +> no menu <guimenu +>Ver</guimenu +>, assim como o ícone respectivo na barra de ferramentas.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgrepview/</filename +> — oferece o item <guimenuitem +>Procurar nos Ficheiros...</guimenuitem +> no menu <guimenu +>Editar</guimenu +>, usado pelo 'plugin' da <guilabel +>Interface do Grep</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhistory/</filename +> — oferece os itens <guimenuitem +>Recuar</guimenuitem +> e <guimenuitem +>Avançar</guimenuitem +> no menu <guimenu +>Ver</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavadebugger/</filename +> — oferece o menu de <guimenu +>Depuração do Java</guimenu +> para poder depurar uma aplicação de &Java;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevoutputviews/</filename +> — oferece os itens <guimenuitem +>Erro Anterior</guimenuitem +> e <guimenuitem +>Erro Seguinte</guimenuitem +> no menu <guimenu +>Ver</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpartexplorer/</filename +> — oferece o item <guimenuitem +>Explorador de Componentes</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' da <guilabel +>Ferramenta do Explorador de Componentes</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevquickopen/</filename +> — oferece o item <guimenuitem +>Abertura Rápida do Ficheiro...</guimenuitem +> no menu <guimenu +>Ficheiro</guimenu +> e o <guimenuitem +>Abertura Rápida de Classe...</guimenuitem +> e <guimenuitem +>Abertura Rápida de Método</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>, que são usadas pelo 'plugin' do projecto <guilabel +>Abertura Rápida</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevregexptest/</filename +> — oferece o item <guimenuitem +>Depurar a Expressão Regular...</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' de <guilabel +>Teste de Expressões Regulares</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevreplace/</filename +> — oferece o item <guimenuitem +>Procurar-Seleccionar-Substituir...</guimenuitem +> do menu <guimenu +>Editar</guimenu +>, usado pelo 'plugin' de <guilabel +>Substituição</guilabel +>.</para +></listitem> + <listitem id="app-files-default-tips" +><para +><filename class="directory" +>kdevtipofday/</filename +> — oferece o item da <guimenuitem +>Dica do Dia</guimenuitem +> do menu <guimenu +>Ajuda</guimenu +>, assim como um ficheiro HTML que contém as dicas disponíveis.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtools/</filename +> — controla os vários itens de menu criados pelo <guimenu +>Menu Ferramentas</guimenu +> e pelo <guilabel +>Menu de Ferramentas Externas</guilabel +>, oferecidas pelo 'plugin' de <guilabel +>Adição ao Menu de Ferramentas</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevvalgrind/</filename +> — oferece os itens de <guimenuitem +>Verificação de Fugas de Memória do Valgrind</guimenuitem +> e <guimenuitem +>Análise com o KCachegrind</guimenuitem +> do menu <guimenu +>Depurar</guimenu +>, usados pelo 'plugin' de <guilabel +>Interface do Valgrind</guilabel +>.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-project"> + <title +>Componentes de Geração de Projectos</title> + <listitem +><para +><filename class="directory" +>kdevadaproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +> e os ícones respectivos da barra de ferramentas para criar uma aplicação em Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevantproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +> quando é usado o gerador de projectos Ant.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +>, assim como os ícones respectivos da barra de ferramentas ao trabalhar com o gerador de projectos &automake; com base nas ferramentas da &GNU;. Para além disso, oferece os itens <guimenuitem +>Adicionar uma Tradução</guimenuitem +> e <guimenuitem +>Configuração da Construção</guimenuitem +> para o menu <guimenu +>Projecto</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcustomproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +> e os ícones da barra de ferramentas respectivos, quando o projecto se baseia em Makefile's personalizadas.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgenericproject/</filename +> — contém as definições do menu para um gerador de projectos genérico e experimental. De momento (na versão 3.1.0) não é usado.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhaskellproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação em Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação em Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtrollproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação que usa o gestor de projectos QMake da &Qt;.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-lang"> + <title +>Componentes Específicas da Linguagem</title> + <listitem +><para +><filename class="directory" +>kdeadasupport/</filename +> — oferece os itens para o menu <guimenu +>Ferramentas</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação em Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdebashsupport/</filename +> — oferece os itens para o menu <guimenu +>Ferramentas</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar um 'script' em Bash.</para +></listitem> + <listitem id="app-files-default-apps-lang-cpp"> + <para +><filename class="directory" +>kdecppsupport/</filename +> — oferece os ficheiros usados pelo &appwizard; para criar aplicações em C++:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>newclass/</filename +> — contém os ficheiros-modelo de inclusão e de código, a partir dos quais o &appwizard; cria os ficheiros de código correspondentes.</para +></listitem> + <listitem +><para +><filename class="directory" +>subclassing/</filename +> — contém os ficheiros-modelo que o &appwizard; usa para configurar as declarações/definições de classes iniciais nos ficheiros de código.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates</filename +> — contém os ficheiros-modelo, a partir dos quais o &appwizard; configura os ficheiros de modelo de inclusão e de código predefinidos que são usados pelo &nfwizard;. </para +></listitem> + <listitem +><para +><filename +>configuration</filename +> — modelo inútil para adicionar macros.</para +></listitem> + <listitem +><para +><filename +>kdevcppsupport.rc</filename +> — oferece o suporte para os itens <guimenuitem +>Completar o Texto</guimenuitem +> e <guimenuitem +>Tornar um Membro</guimenuitem +> do menu <guimenu +>Editar</guimenu +>, o item <guimenuitem +>Mudar para a Declaração/Implementação</guimenuitem +> do menu <guimenu +>Ver</guimenu +> e o item <guimenuitem +>Nova Classe</guimenuitem +> do menu <guimenu +>Projecto</guimenu +>, assim como um ícone <guiicon +>Nova Classe</guiicon +> para a <guilabel +>Barra de Navegação</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdefortransupport/</filename +> — oferece os itens para o menu <guimenu +>Ferramentas</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação em Fortran.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdehaskellsupport/</filename +> — oferece os itens para o menu <guimenu +>Ferramentas</guimenu +>, bem como os ícones da barra de ferramentas respectivos, para criar uma aplicação em Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavasupport/</filename +> — contém a definição da interface necessária para desenvolver as aplicações em &Java;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalsupport/</filename +> — contém a definição da interface necessária para desenvolver aplicações em Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevperlsupport/</filename +> — oferece os itens do menu <guimenu +>Projecto</guimenu +> e <guimenu +>Ajuda</guimenu +> necessários para desenvolver programas em Perl.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevphpsupport/</filename +> — contém os ficheiros de definição da interface e de PHP, necessários para desenvolver programas em PHP.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpythonsupport/</filename +> — oferece os itens do menu <guimenu +>Construir</guimenu +> e <guimenu +>Ajuda</guimenu +>, bem como os ícones da barras de ferramentas, necessários para desenvolver programas em Python.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevrubysupport/</filename +> — oferece os itens do menu <guimenu +>Construir</guimenu +> e os ícones das barras de ferramentas respectivos que são necessários para desenvolver programas em Ruby.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevscriptproject/</filename +> — oferece as definições da interface necessárias ara criar projectos personalizados. De momento (na versão 3.1.0) não é usado.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevsqlsupport/</filename +> — oferece as definições de interface necessárias para desenvolver projectos em SQL. De momento (na versão 3.1.0), não é usado.</para +></listitem> + </itemizedlist +></listitem> + +</itemizedlist> + +</sect2 +> <!-- app-files-default-apps --> + +</sect1 +> <!-- app-files-default --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-user"> +<title +>Configuração do Utilizador</title> + +<para +>Toda a informação sobre as opções definidas pelo utilizador é mantida em duas subpastas da <filename class="directory" +>$<envar +>KDEHOME</envar +></filename +>, nomeadamente: <simplelist> + <member +><link linkend="app-files-user-apps" +>Configuração Específica da Aplicação</link +> na pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +> e</member> + <member +><link linkend="app-files-user-config" +>Ficheiro de Configuração do Recurso</link +> na pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</member> +</simplelist> +</para> + +<sect2 id="app-files-user-apps"> +<title +>Configuração Específica da Aplicação</title> + +<para +>Todas as alterações do utilizador à <link linkend="app-files-default" +>Configuração por Omissão do &tdevelop;</link +>, assim como as opções específicas do utilizador que não são mantidas em nenhum dos <link linkend="app-files-user-config" +>Ficheiros de Configuração de Recursos</link +> encontram-se nas subpastas <filename +>kdev...</filename +> da pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +>. </para> +<para +>A maioria destes ficheiros de configuração são usados, todavia, por vários 'plugins' do &tdevelop; para oferecer alguns itens do menu e/ou barra de ferramentas. Como tal, são apenas de interesse no caso de algo correr realmente mal com a interface do utilizador. </para> +<note +><para +>No caso do conteúdo destas pastas reflectir o da Configuração por Omissão, o &tdevelop; terá copiado as mesmas de <filename class="directory" +>$<envar +>KDEDIR</envar +>/apps/</filename +> para a pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/apps/</filename +> no seu arranque inicial. Todas as alterações subsequentes serão feitas apenas nestas cópias. As opções da Configuração por Omissão irão permanecer inalteradas, em qualquer dos casos. </para +></note> + +<itemizedlist> + <listitem> + <para +><filename class="directory" +>kdevabbrev/</filename +> — contém os ficheiros usados pelo 'plugin' de <guilabel +>Expansão de Abreviaturas</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — de momento vazio; o &tdevelop; usa os ficheiros de <link linkend="app-files-default-abbrev" +>definição de palavras-chave por omissão</link +> para os comandos para <guilabel +>Expandir o Texto</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contém os ficheiros de definição de modelos usados pelo comando <guilabel +>Expandir a Abreviatura</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — oferece os itens <guimenuitem +>Expandir o Texto</guimenuitem +> e <guimenuitem +>Expandir a Abreviatura</guimenuitem +> do menu <guimenu +>Editar</guimenu +>.</para +></listitem> + </itemizedlist +> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevappwizard/</filename +> — só oferece os itens <guimenuitem +>Novo Projecto...</guimenuitem +> e <guimenuitem +>Importar um Projecto Existente...</guimenuitem +> do menu de <guimenu +>Projectos</guimenu +>. O &appwizard; irá então usar as <link linkend="app-files-default-appwizard" +>opções de configuração por omissão</link +> para as suas tarefas actuais.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevastyle/</filename +> — oferece o item para <guimenuitem +>Reformatar o Código</guimenuitem +> no menu <guimenu +>Editar</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevautoproject/</filename +> — oferece os itens para o menu <guimenu +>Construir</guimenu +> e da <guilabel +>Barra de Construção (KDevelop)</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview</filename +> — oferece o item do <guimenuitem +>Diagrama de Herança de Classes</guimenuitem +> no menu <guimenu +>Projecto</guimenu +>, assim como a lista de navegação de classes na <guilabel +>Barra de Navegação</guilabel +> do 'plugin' do projecto da <guilabel +>Lista de Classes</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcloser/</filename +> — oferece o item para <guimenuitem +>Fechar as Janelas Seleccionadas...</guimenuitem +> no menu <guimenu +>Janelas</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcppsupport/</filename +> — contém a configuração actual, usada pelo &appwizard;, para criar aplicações em C++. O &appwizard; usa, contudo, o seu maior bloco de informação de configuração directamente a partir da <link linkend="app-files-default-apps-lang-cpp" +>pasta de configuração por omissão</link +>. Veja aí para ter mais detalhes.</para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>newclass/</filename +> — contém os ficheiros-modelo de inclusão e de código, a partir dos quais o &appwizard; cria os ficheiros de código correspondentes.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>pcs/</filename +> — contém os ficheiros de base de dados que o &tdevelop; usa para criar o Persistent Code Store (<filename +>.pcs</filename +>) actual de um projecto em C++ do &kde;.</para> + </listitem> + <listitem> + <para +><filename +>kdevcppsupport.rc</filename +> — oferece o suporte para os itens <guimenuitem +>Completar o Texto</guimenuitem +> e <guimenuitem +>Tornar um Membro</guimenuitem +> do menu <guimenu +>Editar</guimenu +>, o item <guimenuitem +>Mudar para a Declaração/Implementação</guimenuitem +> do menu <guimenu +>Ver</guimenu +> e o item <guimenuitem +>Nova Classe</guimenuitem +> do menu <guimenu +>Projecto</guimenu +>, assim como um ícone <guiicon +>Nova Classe</guiicon +> para a <guilabel +>Barra de Navegação</guilabel +>.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevctags/</filename +> — oferece o item do <guimenuitem +>CTags</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +> para o 'plugin' do projecto para a <guilabel +>Interface do CTags</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdebugger/</filename +> — oferece os itens de menu <guimenu +>Depurar</guimenu +> para o 'plugin' do projecto <guilabel +>Interface do Depurador</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdiff/</filename +> — oferece o item do <guimenuitem +>Visualizador de Diferenças</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — contém os ficheiros usados pelo 'plugin' de <guilabel +>Documentação</guilabel +> para além dos <link linkend="app-files-default-kdevdoc" +> ficheiros predefinidos de configuração</link +>. Veja nesse local para mais detalhes.</para> + <para +>As pastas em <filename class="directory" +>kdevdocumentation/</filename +> normalmente guardam apenas informações de organização. Os ficheiros de documentação configurados de momento são mantidos nos <link linkend="app-files-user-config-doc" +> ficheiros <quote +><filename +>doc...pluginrc</filename +></quote +></link +> da pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>bookmarks/</filename +> — mantém os itens da página de <guilabel +>Favoritos</guilabel +> do 'plugin' de <guilabel +>Documentação</guilabel +> do &tdevelop;.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>index/</filename +> — mantém os vários ficheiros de 'cache' que o &tdevelop; usa para acelerar as pesquisas de documentação na página de <guilabel +>Índice</guilabel +> do 'plugin' de <guilabel +>Documentação</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>search/</filename +> — contém os ficheiros usados pela ferramenta de procura <application +>htdig</application +> que serve várias chamadas de procura da página <guilabel +>Procurar</guilabel +> do 'plugin' de <guilabel +>Documentação</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename +>kdevpart_documentation.rc</filename +> — oferece os itens relacionados com a procura no menu <guimenu +>Ajuda</guimenu +>.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdoxygen/</filename +> — oferece os itens de menu para o 'plugin' do projecto <guilabel +>Suporte do Doxygen</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>tdevelop/</filename +> — contém algumas opções actuais que o IDE &tdevelop; usa para a sua configuração básica:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — oferece a configuração do perfil do 'plugin' actual. (No início existe apenas um perfil <filename +>FullIDE</filename +> que define um conjunto completo de 'plugins' activos inicialmente &tdevelop;.)</para +></listitem> + <listitem +><para +><filename +>tdevelopui.rc</filename +> — oferece os menus e barras de ferramentas básicos que o &tdevelop; usa.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — contém os ficheiros usados pelo <guilabel +>Assistente de Novo Ficheiro:</guilabel +></para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — oferece o conteúdo de texto inicial a ser colocado num ficheiro de código novo de determinado tipo. Podem ser encontrados mais modelos de ficheiros na pasta de <link linkend="app-files-default-filecreate" +>ficheiros de configuração por omissão</link +>.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — oferece o item <guimenuitem +>Novo</guimenuitem +> do menu <guimenu +>Ficheiro</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — contém as descrições dos tipos de ficheiros disponíveis a serem mostrados na janela de <guilabel +>Novo Ficheiro</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilter/</filename +> — oferece os itens <guimenuitem +>Executar um Comando...</guimenuitem +> e <guimenuitem +>Filtrar a Selecção Através de um Comando...</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' de <guilabel +>Filtragem e Inserção na Linha de Comandos</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfullscreen/</filename +> — oferece o item do <guimenuitem +>Modo de Ecrã Completo</guimenuitem +> no menu <guimenu +>Ver</guimenu +>, assim como o ícone respectivo na barra de ferramentas.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevgrepview/</filename +> — oferece o item <guimenuitem +>Procurar nos Ficheiros...</guimenuitem +> no menu <guimenu +>Editar</guimenu +>, usado pelo 'plugin' da <guilabel +>Interface do Grep</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevoutputviews/</filename +> — oferece os itens <guimenuitem +>Erro Anterior</guimenuitem +> e <guimenuitem +>Erro Seguinte</guimenuitem +> no menu <guimenu +>Ver</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevpartexplorer/</filename +> — oferece o item <guimenuitem +>Explorador de Componentes</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' da <guilabel +>Ferramenta do Explorador de Componentes</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevquickopen/</filename +> — oferece o item <guimenuitem +>Abertura Rápida do Ficheiro...</guimenuitem +> no menu <guimenu +>Ficheiro</guimenu +> e o <guimenuitem +>Abertura Rápida de Classe...</guimenuitem +> e <guimenuitem +>Abertura Rápida de Método</guimenuitem +> no menu <guimenu +>Ferramentas</guimenu +>, que são usadas pelo 'plugin' do projecto <guilabel +>Abertura Rápida</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevregexptest/</filename +> — oferece o item <guimenuitem +>Depurar a Expressão Regular...</guimenuitem +> do menu <guimenu +>Ferramentas</guimenu +>, usado pelo 'plugin' de <guilabel +>Teste de Expressões Regulares</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevreplace/</filename +> — oferece o item <guimenuitem +>Procurar-Seleccionar-Substituir...</guimenuitem +> do menu <guimenu +>Editar</guimenu +>, usado pelo 'plugin' de <guilabel +>Substituição</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtipofday/</filename +> — oferece o item da <guimenuitem +>Dica do Dia</guimenuitem +> do menu <guimenu +>Ajuda</guimenu +>. O ficheiro em HTML que contém as dicas disponíveis é oferecido apenas como um <link linkend="app-files-default-tips" +>ficheiro de configuração por omissão</link +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtools/</filename +> — controla os vários itens de menu criados pelo <guimenu +>Menu Ferramentas</guimenu +> e pelo <guilabel +>Menu de Ferramentas Externas</guilabel +>, oferecidas pelo 'plugin' de <guilabel +>Adição ao Menu de Ferramentas</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevvalgrind/</filename +> — oferece os itens de <guimenuitem +>Verificação de Fugas de Memória do Valgrind</guimenuitem +> e <guimenuitem +>Análise com o KCachegrind</guimenuitem +> do menu <guimenu +>Depurar</guimenu +>, usados pelo 'plugin' de <guilabel +>Interface do Valgrind</guilabel +>.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-apps --> + +<sect2 id="app-files-user-config"> +<title +>Ficheiros de Configuração dos Recursos</title> + +<para +>Existem dois grupos de ficheiros de configuração do &tdevelop; na pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>, distinguidos pelas suas sequências de caracteres envolventes: <simplelist> + <member +>O <quote +><filename +>doc...pluginrc</filename +></quote +> denota os <link linkend="app-files-user-config-doc" +>ficheiros usados pelo 'plugin' de documentação.</link +></member> + <member +>O <quote +><filename +>kdev...rc</filename +></quote +> denota os <link linkend="app-files-user-config-kdev" +>ficheiros de configuração usados pelo &tdevelop;</link +> propriamente dito e pelos seus 'plugins' disponíveis.</member> +</simplelist> +</para> + +<itemizedlist id="app-files-user-config-kdev"> +<title +>Ficheiros de Configuração Usados pelo &tdevelop;</title> + <listitem> + <para +><filename +>kdevabbrevrc</filename +> — contém o estado actual da configuração de <guilabel +>Abreviaturas</guilabel +> oferecida pelo 'plugin' de <guilabel +>Expansão de Abreviaturas</guilabel +>.</para> + <note +><para +>Isto apenas regista se as abreviaturas serão usadas ou não. As definições actuais das abreviaturas novas irão parar ao ficheiro <filename +>$<envar +>KDEHOME</envar +>/share/apps/kdevabbrev/templates/templates</filename +>.</para +></note> + </listitem> + <listitem> + <para +><filename +>kdevassistantrc</filename +> — mantém algum estado de configuração específico do navegador de documentação do Assistente do &tdevelop;.</para> + <note +><para +>As opções de configuração mais comuns são partilhadas no ficheiro de configuração do IDE &tdevelop; em <filename +>tdeveloprc</filename +>.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevassistantuimode4rc</filename +> — mantém o estado da configuração actual do MDI (posições da acoplagem, &etc;) do navegador de documentação do Assistente do &tdevelop;.</para +></listitem> + <listitem> + <para +><filename +>kdevclassviewrc</filename +> — mantém a configuração do <guilabel +>Modo de Visualização</guilabel +> da página de navegação de <guilabel +>Classes</guilabel +>, que é oferecida pelo 'plugin' de projecto da <guilabel +>Janela de Classes</guilabel +>.</para> + <note +><para +>Esta é uma opção global, ainda que a <guilabel +>Janela de Classes</guilabel +> possa ou não estar desactivada. Qualquer alteração nesta opção será actualizada globalmente, sempre que o projecto actual for fechado e, deste modo, afectar todos os projectos carregados subsequentemente.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevcppsupportrc</filename +> — contém algumas opções usadas para configurar os ficheiros de código CPP. Em particular, irá encontrar as opções definidas na janela de configuração do <guilabel +>Gerador de Classes de C++</guilabel +> aqui registadas.</para +></listitem> + <listitem +><para +><filename +>kdevdocumentationrc</filename +> — mantém a configuração actual do 'plugin' de <guilabel +>Documentação</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>tdeveloprc</filename +> — contém as opções globais que o IDE &tdevelop; IDE e o Assistente do &tdevelop; usam.</para +></listitem> + <listitem +><para +><filename +>tdevelopuimode4rc</filename +> — mantém a configuração da MDI actual (posições de acoplagem, &etc;) do IDE &tdevelop;.</para +></listitem> + <listitem +><para +><filename +>kdevfileselectorrc</filename +> — mantém a configuração actual do 'plugin' do <guilabel +>Selector de Ficheiros</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevfileviewrc</filename +> — mantém as configurações de cores dos ficheiros actuais que a <guilabel +>Integração com o CVS (Cervisia)</guilabel +> usa na apresentação.</para +></listitem> + <listitem +><para +><filename +>kdevfilterrc</filename +> — mantém a configuração que o 'plugin' <guilabel +>Filtragem e Inserção da Linha de Comandos</guilabel +> usa.</para +></listitem> + <listitem +><para +><filename +>kdevgrepviewrc</filename +> — mantém as opções actuais do 'plugin' da <guilabel +>Interface do Grep</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevsnippetrc</filename +> — mantém a configuração actual do 'plugin' dos <guilabel +>Excertos de Código</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevtoolsrc</filename +> — mantém a configuração actual que o 'plugin' de <guilabel +>Adição ao Menu Ferramentas</guilabel +> usa.</para +></listitem> +</itemizedlist> + +<itemizedlist id="app-files-user-config-doc"> +<title +>Ficheiros de Configuração Usados pelo 'Plugin' de Documentação</title> + <listitem +><para +><filename +>docchmpluginrc</filename +> — mantém a informação sobre os ficheiros de ajuda CHM da &Microsoft;, tal como está definido na página de configuração da <guilabel +>Colecção de Documentação CHM</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>doccustompluginrc</filename +> — mantém a informação sobre os ficheiros de documentação personalizados que estão definidos na página de configuração da <guilabel +>Colecção de Documentação Personalizada</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docdevhelppluginrc</filename +> — mantém a informação acerca dos ficheiros de documentação do GNOME 2, tal como está definido na página de configuração da <guilabel +>Colecção de Documentação do Devhelp</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docdoxygenpluginrc</filename +> — mantém a informação acerca da documentação da API gerada pelo Doxygen, tal como está definida na página de configuração da <guilabel +>Colecção de Documentação do Doxygen</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>dockdevtocpluginrc</filename +> — mantém a informação acerca dos ficheiros de documentação estruturada KDevelopTOC, tal como está definido na página de configuração da <guilabel +>Colecção de Documentação do KDevelopTOC</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docqtpluginrc</filename +> — mantém a informação acerca dos ficheiros de documentação do QT, tal como está definido na página de configuração da <guilabel +>Colecção de Documentação do Qt</guilabel +>.</para +></listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-config --> + +</sect1 +> <!-- app-files-user --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-project"> +<title +>Configuração Dependente do Projecto</title> + +<para +>A maior parte da configuração dependente do projecto é mantida nos ficheiros de configuração do projecto <filename +><nome-projecto>.tdevelop</filename +> e <filename +><nome-projecto>.kdevses</filename +> do &tdevelop;, em vez de serem mantidos em ficheiros separados como as outras opções de configuração mais globais. Em resumo estes ficheiros são: </para> +<simplelist> + <member +><filename +><nome-projecto>.tdevelop</filename +> — informação de configuração global do projecto.</member> + <member +><filename +><nome-projecto>.kdevses</filename +> — informação de configuração necessária para repor os comportamentos específicos da sessão actual.</member> +</simplelist> +<para +>Ambos são ficheiros em &XML;. Eles podem ser vistos e (cuidadosamente) alterados com qualquer editor de texto. </para> + +<sect2> +<title +>Ficheiros do Repositório Persistente de Código</title> + +<para +>Existe um terceiro ficheiro de configuração do projecto, o Repositório de Código Persistente <filename +><nome-projecto>.tdevelop.pcs</filename +>. Este é um ficheiro binário que mantém uma 'cache' de processamento para acelerar em grande medida a sequência de carregamento do projecto. Para além disso, este repositório mantém a informação da funcionalidade de <guilabel +>Completação do Código</guilabel +> do &tdevelop;. </para> + +<note +><para +>Poderão estar definidos ficheiros de Repositórios de Código Persistente na página de <guilabel +>Completação de Código</guilabel +> da página de configuração do projecto <guilabel +>Específico do C++</guilabel +>. A informação sobre estes ficheiros <filename +>.pcs</filename +> adicionais é mantida a nível global na pasta <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/kdevcppsupport/pcs/</filename +>. </para +></note> +</sect2> + +</sect1 +> <!-- app-files-project --> + +</appendix +> <!-- app-files --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/app-menu.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/app-menu.docbook new file mode 100644 index 00000000000..69d8462d2a7 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/app-menu.docbook @@ -0,0 +1,72 @@ +<appendix id="app-menus"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Introdução aos Menus e Barras de Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> + +<sect1 id="app-menus-menu"> +<title +>Menus</title> + +<para +>(... ainda não escrito ...) </para> + +<sect2 id="app-menus-menu-common"> +<title +>Menus Normalmente Disponíveis</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!-- app-menus-menu-common --> + +<sect2 id="app-menus-menu-project"> +<title +>Menus Específicos do Projecto</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!-- app-menus-menu-project --> + +<sect2 id="app-menus-menu-specific"> +<title +>Menus Específicos dos 'Plugins'</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!-- app-menus-menu-specific --> + +</sect1 +> <!-- app-menus-menu --> + +<sect1 id="app-menus-tool"> +<title +>Barras de Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- app-menus-tool --> + +</appendix +> <!-- app-menus --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/app-misc-info.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/app-misc-info.docbook new file mode 100644 index 00000000000..918195a2e65 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/app-misc-info.docbook @@ -0,0 +1,28 @@ +<appendix id="app-misc-info"> +<title +>Mais Informações</title> +<sect1 id="gettinginformation"> +<title +>Obter Informações</title> +<para +>(... ainda não escrito ...) </para> +</sect1 +> <!-- gettinginformation --> + +<sect1 id="app-reporting-bugs"> +<title +>Comunicar Erros</title> +<para +>(... ainda não escrito ...) </para> +</sect1 +> <!-- app-reporting-bugs --> + +<sect1 id="app-licensing"> +<title +>Licença</title> +&underFDL; &underGPL; </sect1 +> <!-- app-licensing --> +</appendix +> <!-- app-misc-info --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/app-uimodes-examples.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/app-uimodes-examples.docbook new file mode 100644 index 00000000000..f6165cfe187 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/app-uimodes-examples.docbook @@ -0,0 +1,174 @@ +<appendix id="app-uimodes-examples"> +<title +>Exemplos de Modos de Interface de Utilizador do &tdevelop;</title> + +<sect1 id="ideal-desc"> +<title +>Modo IDEAl</title> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="tdevelop-ideal-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Imagem</phrase +></textobject> + <caption +><para +>Modo IDEAl do &tdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="tdevelop-ideal-mode-0.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Imagem</phrase +></textobject> + <caption +><para +>Modo IDEAl do &tdevelop;, com páginas fechadas</para +></caption> + </mediaobject> +</screenshot> + +<para +>Esta imagem de exemplo demonstra uma das virtudes principais do modo IDEAl. Está o máximo de espaço de trabalho disponível. De qualquer forma, qualquer uma das ferramentas está prontamente disponível, se carregar na página correspondente. </para> +<para +>Provavelmente terá de ter algum tempo para se habituar aos ícones na barra de páginas. Se se perdeu, basta colocar o cursor do rato sobre uma página e esperar alguns segundos. Irá aparecer uma breve descrição com uma dica. Nesta imagem, é mostrada a dica do <quote +>Gestor do Automake</quote +> como exemplo. Ela descreve a página inferior da barra de páginas da direita. </para> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +</sect1 +> <!-- ideal-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="mdi-desc"> +<title +>Modo de Janelas com Sub-molduras</title> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="tdevelop-mdi-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Imagem</phrase +></textobject> + <caption +><para +>Modo de janelas-filhas do &tdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +</sect1 +> <!-- mdi-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="tabbed-desc"> +<title +>Modo por Páginas</title> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="tdevelop-tabbed-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Imagem</phrase +></textobject> + <caption +><para +>Modo por páginas separadas do &tdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +</sect1 +> <!-- tabbed-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="toplevel-desc"> +<title +>Modo de Janelas de Topo</title> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="tdevelop-toplevel-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Imagem</phrase +></textobject> + <caption +><para +>Modo por janelas de topo do &tdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Carregue <link linkend="uimodes-survey" +>aqui</link +> para voltar à introdução aos modos. </para> + +</sect1 +> <!-- toplevel-desc --> + +</appendix +> <!-- app-uimodes-examples --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/applicationwizard.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/applicationwizard.docbook new file mode 100644 index 00000000000..9928459a38e --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/applicationwizard.docbook @@ -0,0 +1,1360 @@ +<chapter id="applicationwizard"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Introdução — o &appwizard;</title> + +<indexterm zone="applicationwizard"> + <primary +>&appwizard;</primary +></indexterm> + +<para +>No &tdevelop;, o trabalho de desenvolvimento de 'software' está organizado em <emphasis +>projectos</emphasis +>. Cada um desses projectos reúne tudo o que pertença a uma tarefa de programação completa: ficheiros de código, ficheiros de dados adicionais e todas as necessidades de gestão, como o sistema de compilação, assim como o acesso a todos os componentes e a todas as ferramentas adicionais que sejam necessárias para pôr a aplicação a funcionar. </para> +<para +>A organização de todo o trabalho de desenvolvimento nos projectos permite-lhe mudar facilmente de tarefas para tarefas, a nível global. Isto é bastante útil se você, ⪚, trabalha em várias aplicações ao mesmo tempo, como poderá ser normalmente o caso. Diga ao &tdevelop; para abrir o projecto com que deseja trabalhar e poderá continuar no ambiente tal e qual o deixou. </para> + +<sect1 id="new-projects"> +<title +>Projectos Novos</title> + +<indexterm zone="new-projects"> + <primary +>projecto</primary> + <secondary +>novos</secondary +></indexterm> + +<para +>Sempre que deseje iniciar um novo projecto de programação, terão de ser efectuados vários procedimentos formais de configuração. Terá de ser criada uma estrutura de directorias inicial, os ficheiros de inclusão e de código terão de ser fornecidos, o sistema de compilações tem de ser inicializado, &etc; </para> +<para +>O &tdevelop; fornece uma forma simples de iniciar um novo projecto de programação — o <emphasis +>&appwizard;</emphasis +>. Você irá encontrar o &appwizard; no item de menu <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Novo Projecto</guimenuitem +></menuchoice +>. </para> +<para +>Só é necessária uma série curta de passos para iniciar um novo projecto de programação, usando o &appwizard;: </para> +<orderedlist> + <listitem +><para +><link linkend="new-projects-start-type" +>Seleccionar a linguagem de programação</link +> que você deseja usar e o tipo da aplicação que deseja compilar, a partir de um conjunto de modelos predefinidos. </para +></listitem> + <listitem +><para +><link linkend="new-projects-start-general" +>Fornecer algumas informações gerais</link +> como o nome da aplicação, a directoria em que a aplicação deverá ser criada, &etc; </para +></listitem> + <listitem +><para +>Decidir se deseja usar um <link linkend="new-projects-start-cvs" +>sistema de controlo de versões</link +>, como ⪚ o CVS, e fornecer os dados necessários. </para +></listitem> + <listitem +><para +>Definir alguns modelos para os <link linkend="new-projects-start-templates" +>ficheiros de inclusão e de código iniciais</link +> (se for necessário). </para +></listitem> + <listitem +><para +>Finalmente, dizer ao &appwizard; para <link linkend="new-projects-start-build" +>configurar todos os artefactos iniciais</link +>, a estrutura de directorias, os modelos de ficheiros de ficheiros de código/inclusão iniciais e as ferramentas de gestão, ⪚ um esqueleto inicial de compilação, &etc; </para +></listitem> +</orderedlist> +<para +>'Voilà' — é tudo. O &appwizard; irá fornecer-lhe então um conjunto inicial e funcional de ficheiros de programação, nos quais você poderá começar prontamente a trabalhar. </para> +<para +>Vamos então olhar agora para tudo isto com mais detalhe ... </para> + +<sect2 id="new-projects-start"> +<title +>Passos Iniciais</title> + +<indexterm zone="new-projects-start"> + <primary +>janela</primary> + <secondary +>criar novo projecto</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>projecto</primary> + <secondary +>criar novo projecto</secondary> + <tertiary +>janela</tertiary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>projecto</primary> + <secondary +>modelos</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>modelos</primary> + <secondary +>projecto</secondary +></indexterm> + +<para +>Para criar um novo projecto no &tdevelop;, seleccione <guimenuitem +>Novo Projecto</guimenuitem +> do menu <guimenu +>Projecto</guimenu +>. A janela para <guilabel +>Criar um Novo Projecto</guilabel +> irá aparecer e mostrar-lhe-á uma página <guilabel +>Geral</guilabel +> inicial: </para> + +<screenshot id="screenshot-newprojectwizard"> + <mediaobject> + <imageobject> + <imagedata fileref="createnewproject.png" format="PNG"/> + </imageobject> + <caption +><para +>Janela inicial de configuração de um novo projecto </para +></caption> + </mediaobject> +</screenshot> + +<para +>Como pode ver, esta janela está dividida numa parte superior e numa inferior. Na parte superior, você poderá decidir sobre a linguagem de programação e o tipo de aplicação, enquanto que a parte inferior contém algumas informações gerais. </para> + +<sect3 id="new-projects-start-type"> +<title +>Seleccionar a Linguagem de Programação e o Tipo de Aplicação</title> + +<indexterm zone="new-projects-start-type"> + <primary +>projecto</primary> + <secondary +>tipo de aplicação</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>projecto</primary> + <secondary +>linguagem de programação</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>projecto</primary> + <secondary +>linguagem</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>linguagem</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>linguagem de programação</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>aplicação</primary> + <secondary +>tipo</secondary +></indexterm> + +<para +>O lado esquerdo da parte superior desta janela é onde você faz o trabalho de selecção. Quando aparecer, você irá encontrar então uma lista de pastas, em que cada uma contém uma linguagem de programação, como por exemplo: </para> + +<itemizedlist> + <listitem +><para +>Ada <indexterm> + <primary +>Ada</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C <indexterm> + <primary +>C</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C++ <indexterm> + <primary +>C++</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Bases de Dados (Projectos SQL) <indexterm> + <primary +>SQL</primary> + <secondary +>novo projecto</secondary +></indexterm> + <indexterm> + <primary +>Base de Dados</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Fortran <indexterm> + <primary +>Fortran</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Haskell <indexterm> + <primary +>Haskell</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Java <indexterm> + <primary +>Java</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>PHP <indexterm> + <primary +>PHP</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Pascal <indexterm> + <primary +>Pascal</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Perl <indexterm> + <primary +>Perl</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Python <indexterm> + <primary +>Python</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Ruby <indexterm> + <primary +>Ruby</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Linha de Comandos ('Scripts' para a Linha de Comandos Bash) <indexterm> + <primary +>Bash</primary> + <secondary +>novo projecto</secondary +></indexterm> + <indexterm> + <primary +>linha de comandos</primary> + <secondary +>novo projecto</secondary +></indexterm> + </para +></listitem> +</itemizedlist> + +<para +>Para ser mais exacto, estas pastas não contêm ferramentas de programação de facto. Elas sim conduzem a <emphasis +>modelos</emphasis +> predefinidos que você poderá usar como ponto de partida para programar nessa linguagem. Para ter uma ideia do que é fornecido, basta abrir as pastas uma a seguir à outra. Irá aparecer um conjunto de subpastas em algumas e apenas um ou mais itens simples noutras. As subpastas que você verá organizam os modelos disponíveis de acordo com algumas tarefas, enquanto que os itens simples indicam os modelos que você poderá seleccionar. </para> +<para +>Não poderemos entrar em detalhes aqui sobre que tarefas fazem o quê, mas é fácil descobrir. Sempre que você seleccionar um modelo, é mostrada alguma informação nos campos à direita. No campo inferior, você irá encontrar uma <emphasis +>breve descrição</emphasis +> sobre o que é que o modelo é suposto fazer. No campo acima dele é mostrada uma imagem, se estiver disponível, sobre o resultado da aplicação que este modelo produz se você a compilar e correr sem modificações. Normalmente, esta é uma <emphasis +>fotografia</emphasis +> da janela principal que a aplicação irá mostrar. </para> +<para +>Seleccione o modelo que melhor se adequa aos objectivos da sua aplicação como ponto de partida. Depois introduza as informações das propriedades gerais no campo inferior, tal como é mostrado no capítulo seguinte. </para> + +<formalpara> +<title +>Seleccionar um Sistema de Gestão de Projectos</title> +<para +>Cada modelo está associado a um <link linkend="makesystems" +>Sistema de Gestão de Projectos</link +> específico. De momento, não existe uma forma livre de seleccionar um desses Sistemas de Gestão de Projectos. Você terá de procurar um modelo que se adeque às suas necessidades ou de alterar o seu projecto, depois de criado, de acordo com isso. </para> +</formalpara> + +</sect3 +> <!-- new-projects-start-type --> + +<sect3 id="new-projects-start-general"> +<title +>Fornecer Informação Geral</title> + +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>propriedades</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>propriedades</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>aplicação</primary> + <secondary +>nome</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>nome</primary> + <secondary +>aplicação</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>directoria</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>directoria</primary> + <secondary +>projecto</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>localização</primary> + <secondary +>novo projecto</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>autor</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>e-mail</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>autor</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>e-mail</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>main.cpp</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>main.cpp</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>projecto</primary> + <secondary +>licença</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>licença</primary +></indexterm> + +<para +>A parte inferior da janela <guilabel +>Criar um Novo Projecto</guilabel +>, na página <guilabel +>Geral</guilabel +>, é uma área chamada <guilabel +>Propriedades</guilabel +>. Você tem de indicar aqui algumas informações gerais sobre o seu projecto, de modo a que o &appwizard; saiba como criar a estrutura inicial. </para> +<formalpara> +<title +>Nome da Aplicação</title> +<para +>A sua aplicação precisa de um nome, como é óbvio. Indique-o no campo <guilabel +>Propriedades</guilabel +>, chamado <guilabel +>Nome da Aplicação</guilabel +>. Iremos usar <quote +>MinhaAplicacao</quote +> por exemplo. </para> +</formalpara> +<para +>Quando o fizer, você irá reparar que o &appwizard; se recusará a aceitar caracteres especiais de qualquer espécie. Os únicos caracteres aceites são: <itemizedlist> + <listitem +><para +>caracteres maiúsculos e minúsculos</para +></listitem> + <listitem +><para +>números</para +></listitem> + <listitem +><para +>o carácter de sublinhado (_)</para +></listitem> +</itemizedlist> +</para> +<para +>Uma razão importante para esta restrição é que o &appwizard; irá usar este nome da aplicação como <emphasis +>base dos nomes de algumas classes</emphasis +> que irá construir quando configurar o projecto inicialmente. Daí, o nome da aplicação terá de se adequar às regras da linguagem de programação que usar. </para> +<formalpara> +<title +>A Directoria do Projecto</title> +<para +>A outra causa para esta restrição poderá ser vista por si na linha inferior da área <guilabel +>Propriedades</guilabel +>. Chama-se <guilabel +>Localização final</guilabel +> e mostra a directoria onde o &appwizard; irá criar a aplicação. </para> +</formalpara> +<para +>À medida que você vai escrevendo o nome da aplicação, você irá reparar que o &appwizard; repete os seus dados introduzidos no fim da linha <guilabel +>Localização final</guilabel +>, usando apenas os caracteres minúsculos. </para> +<para +>Como tal, você terá de seleccionar o nome da sua nova aplicação com cuidado. Se você terminar com o nome de uma directoria já utilizada, o &appwizard; não lhe permitirá passar para o próximo passo, mantendo o botão <guibutton +>Próximo ></guibutton +> desactivado (a cinzento). De qualquer forma, ele <emphasis +>avisá-lo-á</emphasis +> nesse caso, adicionando o texto <quote +>(dir/ficheiro já existe)</quote +> no campo <guilabel +>Localização final</guilabel +>. </para> + +<formalpara> +<title +>A Localização Inicial</title> +<para +>Existem duas formas de seleccionar outra pasta para a sua nova aplicação. Uma passa por seleccionar outro nome. Contudo, isso nem sempre é conveniente (você poderá, ⪚, configurar outra versão de uma aplicação já existente). Como alternativa, você poderá seleccionar outra localização para a pasta da aplicação. </para> +</formalpara> +<para +>Isto é feito com o segundo campo das <guilabel +>Propriedades</guilabel +>, chamado <guilabel +>Localização</guilabel +>. O que você indicar aqui é a <emphasis +>localização inicial</emphasis +> da directoria de desenvolvimento da nova aplicação. O &appwizard; irá adicionar o nome da aplicação a esta directoria quando inicializar o novo projecto. O resultado é apresentado no campo <guilabel +>Localização final</guilabel +>, que lhe dá um melhor controlo sobre o que se passa. </para> +<para +>O &appwizard; irá copiar um <emphasis +>valor inicial</emphasis +> para o campo <guilabel +>Localização</guilabel +> no início. Este é extraído a partir do que você tiver escolhido no campo <guilabel +>Directoria de projectos por omissão</guilabel +> dos <link linkend="setup-general" +>passos gerais de configuração</link +>. No nosso caso, o &tdevelop; está configurado para usar a <filename class="directory" +>/home/ze/projectos</filename +>. </para> +<para +>Altere o conteúdo do campo <guilabel +>Localização</guilabel +> para que a directoria de desenvolvimento das aplicações mostrada na linha <guilabel +>Localização final</guilabel +> seja única. </para> + +<note +><para +>Tenha em atenção se a linha do campo <guilabel +>Localização</guilabel +> já existe ou não. O &appwizard; irá <emphasis +>avisá-lo</emphasis +> se indicar localizações inexistentes adicionando <quote +>(inválido)</quote +> ao campo <guilabel +>Localização final</guilabel +>. </para +></note> + +<formalpara> +<title +>Dados Pessoais</title> +<para +>Os campos a seguir não são tão críticos. Basta indicar o seu nome (i.e., o nome da pessoal responsável pela aplicação) no campo <guilabel +>Autor</guilabel +> e um endereço de e-mail válido no campo <guilabel +>E-mail</guilabel +>, de modo que os utilizadores lhe possam comunicar algo sobre a aplicação. </para> +</formalpara> + +<note> +<orderedlist> + <listitem +><para +>O &appwizard; preenche este campos com alguns valores predefinidos, extraídos a partir da configuração do E-mail no &kcontrolcenter;. Se estes valores nos campos da janela <guilabel +>Criar um Novo Projecto</guilabel +>, para o <guilabel +>Autor</guilabel +> e para o <guilabel +>E-mail</guilabel +> não forem válidos, você poderá ter de ver a sua configuração de e-mail no &kcontrolcenter;. </para +></listitem> + <listitem +><para +>O &appwizard; integrará esta informação nos modelos iniciais de programas, se tal se aplicar. Nos programas em C++ para o &kde;, por exemplo, você poderá encontrá-la perto do início do ficheiro de código <filename +>main.cpp</filename +>. </para +></listitem> + <listitem +><para +>De todos os campos, o <guilabel +>E-mail</guilabel +> é <emphasis +>opcional</emphasis +>, o que reflecte o facto de que nem todos os programadores terão acesso à Internet. Você poderá manter este campo em branco se o desejar e continuar o seu trabalho. </para +></listitem> +</orderedlist> +</note> + +<formalpara> +<title +>Informação da Versão e da Licença</title> +<para +>Finalmente indique um número de versão inicial para a sua aplicação nova no campo <guilabel +>Versão</guilabel +> e seleccione a licença segundo a qual deseja publicar a sua aplicação na página <guilabel +>Licença</guilabel +>. </para> +</formalpara> + +<para +>Se você seleccionar um tipo de aplicação para o qual o &appwizard; forneça textos de modelos de código comuns (⪚, C/C++), você poderá ver o texto de notificação da licença na terceira página desta janela <guilabel +>Criar um Novo Projecto</guilabel +> (veja o capítulo sobre como <link linkend="new-projects-start-templates" +>Fornecer modelos de código/inclusão</link +> em baixo). </para> +<para +>Se você indicou <quote +>Personalizada</quote +> na página <guilabel +>Licença</guilabel +>, você terá de indicar um texto próprio para a licença. </para> + +<note +><para +>Tanto a informação da licença como da versão serão integradas nos modelos iniciais num formato adequado que o tipo de aplicação que você seleccionou ofereça. </para +></note> + +<para +>Logo que tenha introduzido toda esta informação, carregue no botão <guibutton +>Próximo ></guibutton +> para avançar, tal como é mostrado nos capítulos seguintes. </para> +</sect3 +> <!-- new-projects-start-general --> + +</sect2 +> <!-- new-projects-start --> + +<sect2 id="new-projects-start-cvs"> +<title +>Fornecer a Informação do Sistema de Controlo de Versões</title> + +<indexterm zone="new-projects-start-cvs"> + <primary +>CVS</primary> + <secondary +>novo projecto</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>projecto</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>base de dados</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>versão</primary> + <secondary +>base de dados</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>versão</primary> + <secondary +>CVS</secondary +></indexterm> + +<para +>Num segundo passo, o &appwizard; levá-lo-á para a página do <guilabel +>Sistema de Controlo de Versões</guilabel +>, onde poderá decidir qual o sistema de controlo de versões que desejará usar. </para> + +<note +><para +>Esta discussão concentra-se nas necessidades apenas para a criação do projecto. Para mais informações sobre o &CVS; veja o capítulo sobre como <link linkend="cvs" +>Usar o &CVS;</link +> em baixo. </para +></note> + +<formalpara> +<title +>Nenhum Sistema de Controlo de Versões Necessário</title> +<para +>Inicialmente, está a opção <quote +>Nenhum</quote +> seleccionada na página do <guilabel +>Sistema de controlo de versões</guilabel +>, onde a página ficará em branco. Se não quiser usar nenhum sistema de controlo de versões, basta carregar no botão <guibutton +>Próximo +></guibutton +> e seguir em frente. </para> +</formalpara> + +<formalpara> +<title +>Usar o &CVS;</title> +<para +>Caso contrário, você terá de seleccionar de novo o sistema de controlo de versões que deseja usar na página <guilabel +>Sistema de controlo de versões</guilabel +>. De momento, só o <quote +>&cvs;</quote +> é que está disponível. Se o seleccionar, então o &appwizard; irá mostrar de novo a página, mostrando ela agora um conjunto de campos que precisa de preencher. </para> +</formalpara> + +<screenshot id="screenshot-newproject-cvs"> + <mediaobject> + <imageobject> + <imagedata fileref="create-new-project-cvs.png" format="PNG"/> + </imageobject> + <caption +><para +>Configurar o novo projecto no CVS </para +></caption> + </mediaobject> +</screenshot> + +<para +>Um sistema de controlo de versões como o &CVS; (que significa <quote +>Concurrent Versions System</quote +> ou <quote +>Sistema Concorrente de Versões</quote +>) guarda as cópias dos ficheiros seleccionados do projecto numa espécie de base de dados. Se você usar o &CVS; você poderá, entre outras coisas, enviar (fazer <quote +>commit</quote +>) destes ficheiros ou carregá-los para a sua directoria do projecto (fazer um <quote +>checkout</quote +> ou um <quote +>update</quote +>). O que há de especial nisto é que os ficheiros na base de dados das versões são gravados de uma forma estruturada que permite em qualquer altura voltar atrás a um estado anterior de desenvolvimento, se for necessário. Para além disso, o &CVS; permite a vários programadores colaborarem facilmente num grande projecto (como o &tdevelop;) sem estragar o trabalho dos outros. </para> + +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>raiz</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>raiz</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>local</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>remoto</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS local</primary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>:local:</primary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>:local:</secondary +></indexterm> + +<formalpara id="new-projects-start-cvs-root"> +<title +>Raiz do &CVS;</title> +<para +>O &CVS; precisa de <emphasis +>gerir</emphasis +> a base de dados de versões que mantém para os seus ficheiros do projecto. Para o conseguir, ele mantém alguma informação especial da base de dados numa directoria própria, chamada de <emphasis +>raiz do &CVS;</emphasis +>. O primeiro passo para configurar o &CVS; para o seu projecto novo é então indicar ao &tdevelop; onde é que se localiza essa raiz. </para> +</formalpara> + +<para +><emphasis +>Raiz local do &CVS;.</emphasis +> Existem duas possibilidades básicas. Ou você usa uma base de dados <emphasis +>local</emphasis +> do &CVS; ou poderá usar uma base de dados que é mantida num <emphasis +>servidor remoto</emphasis +>. Se fizer desenvolvimentos próprios, você poderá usar a base de dados do &CVS; como uma espécie de base de dados de salvaguarda no seu próprio computador. Normalmente esta é configurada na raiz da sua área pessoal e é-lhe dado o nome <filename +>cvsroot</filename +>. Isto poderá assemelhar-se ao seguinte: </para> +<para +><userinput +><filename class="directory" +>/home/ze/cvsroot</filename +></userinput +> (em que <filename +>ze</filename +> poderá ser substituído pelo nome do seu utilizador). </para> + +<note +><para +>De facto, este é um formato curto. De forma exacta, a raiz local do &CVS; deverá ser endereçada com o prefixo <computeroutput +>:local:</computeroutput +>. O formato curto só é permitido nos casos em que o nome do ficheiro começa por uma barra (<computeroutput +>/</computeroutput +>). O nome completo do nosso exemplo seria então igual a <filename class="directory" +>:local:/home/ze/cvsroot</filename +> </para +></note> + +<para +>Indique o nome da directoria-raiz do &CVS; que foi configurada para o seu sistema no campo <guilabel +>Raiz do CVS</guilabel +>. Em princípio, você poderá seleccionar qualquer nome, ou até mesmo usar várias bases de dados do &CVS;, mas aconselha-se que você se associe à raiz do &CVS; logo que esteja configurada. </para> +<para +><emphasis +>Inicializar uma nova raiz do &CVS;.</emphasis +> Se não existir ainda nenhuma raiz do &CVS;, o &tdevelop; poderá dizer ao sistema do &CVS; para criar uma para si na directoria indicada. Basta assinalar a opção <guilabel +>Iniciar raiz</guilabel +> por baixo do campo <guilabel +>Raiz do CVS</guilabel +>. </para> +<note +><para +>Como foi dito, o &tdevelop; só <emphasis +>manda</emphasis +> o sistema do &CVS; inicializar uma nova raiz do &CVS;. Não faz nada, por si só, a esta directoria. Felizmente, o &CVS; é esperto o suficiente para verificar se a directoria de raiz do &CVS; já existe ou não. Como tal, não fará mal nenhum se você tiver assinalado inadvertidamente a opção <guilabel +>Iniciar raiz</guilabel +> numa directoria de raiz do &CVS; já existente. </para +></note> + +<para +><emphasis +>Raiz do &CVS; remota.</emphasis +> Existem ocasiões em que a base de dados do &CVS; deverá ser mantida num servidor remoto, especialmente quando vários programadores trabalharem no mesmo projecto. Aí, você terá de indicar o URL da raiz do &CVS; deste servidor no campo <guilabel +>Raiz do CVS</guilabel +>. Por exemplo, se você quiser aceder ao servidor de &CVS; do &kde;: </para> +<para +><userinput +><filename class="directory" +>:pserver:<replaceable +>utilizador</replaceable +>@cvs.kde.org:/home/kde</filename +></userinput +> (onde o <replaceable +>utilizador</replaceable +> corresponde ao nome do utilizador definido para a sua conta de &CVS; do &kde;) </para> + +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>CVS remoto</primary +></indexterm> +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>:pserver:</primary +></indexterm> +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>:ext:</primary +></indexterm> +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>CVS</primary> + <secondary +>:local:</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>CVS</primary> + <secondary +>:pserver:</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>CVS</primary> + <secondary +>:ext:</secondary +></indexterm> + +<formalpara id="new-projects-start-cvs-remote"> +<title +>Tipos de Servidores de &CVS; Remotos</title> +<para +>Basicamente existem dois tipos de servidores de &cvs; remotos largamente usados, o <emphasis +>pserver</emphasis +> que usa um protocolo não-cifrado e protegido por senha, ou o <emphasis +>ext</emphasis +> que uma transferência de dados cifrada por RSH ou SSH. Eles são distinguidos de acordo com o prefixo do &URL; que usam: </para> +</formalpara> +<para> +<filename +>:pserver:</filename> +</para> +<para +>para o tipo de servidor não-cifrado e <quote +>protegido por senha</quote +>, ou </para> +<para> +<filename +>:ext:</filename> +</para> +<para +>para um tipo de servidor cifrado por RSH ou SSH. Por exemplo, o </para> +<para> +<userinput +><filename class="directory" +>:ext:<replaceable +>utilizador</replaceable +>@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename +></userinput> +</para> +<para +>acede à raiz do &CVS; da conhecida aplicação <application +>Cervisia</application +>, que é usada para gerir o &CVS; e que está no servidor do SourceForge. </para> +<para +>Se você quiser usar um servidor cifrado por RSH ou por SSH para o acesso ao &CVS;, você terá de dizer ao &tdevelop;, qual o protocolo de cifra a usar. Basta indicar <userinput +>rsh</userinput +> ou <userinput +>ssh</userinput +> no campo <guilabel +>CVS_RSH</guilabel +> da página <guilabel +>Criar um Novo Projecto</guilabel +> <guilabel +>Sistema de Controlo de Versões</guilabel +>. </para> + +<note +><para +>Existe uma contrapartida se você usar um servidor cifrado para o &CVS; no &tdevelop;. Veja o capítulo <link linkend="cvs" +>Usar o &CVS;</link +> para mais detalhes. </para +></note> + +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>CVS</primary> + <secondary +>repositório</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>repositório</primary> + <secondary +>CVS</secondary +></indexterm> + +<formalpara id="new-projects-start-cvs-repository"> +<title +>O Repositório de &CVS;</title> +<para +>Até agora você só indicou ao &tdevelop; onde é que a raiz do &CVS; se encontra para gerir a base de dados das versões e como aceder-lhe. Agora, você irá precisar de dizer ao &tdevelop; sob que nome você irá querer que o &CVS; grave os seus ficheiros do projecto nessa base de dados. O local onde os seus ficheiros do projecto serão guardados no &CVS; é chamado de <emphasis +>repositório</emphasis +>. </para> +</formalpara> +<para +>Em princípio, você poderá usar qualquer nome para o repositório de &CVS; dos ficheiros do seu projecto, desde que corresponda às especificações de nomes de ficheiros. Mesmo assim, a maioria dos programadores usam apenas o nome da aplicação em si. O &CVS; irá criar uma directoria com esse nome na raiz do &CVS;, para que seja encontrada com maior facilidade se você mantiver o nome da aplicação nela. </para> +<para +>Basta indica o nome do repositório que deseja usar no campo <guilabel +>Repositório do CVS</guilabel +> da página <guilabel +>Criar um Novo Projecto</guilabel +> <guilabel +>Sistema de Controlo de Versões</guilabel +>. No nosso exemplo, esta é: <userinput +>NovaAplicacao</userinput +> </para> + +<warning +><para +><emphasis +>Tenha cuidado em não usar um repositório que já exista!</emphasis +> O sistema &CVS; não o avisa sobre os ficheiros duplicados mas irá limpar tudo o que não conduza a um conflito formal. Em resumo, você poderá deixar tudo confuso! </para +></warning> + +<formalpara> +<title +>Os Campos Restantes</title> +<para +>Não existe já muito mais para fazer. O &appwizard; já configurou os campos restante por si. Em detalhe: </para> +</formalpara> +<para +>O campo do <guilabel +>Vendedor</guilabel +> é usado apenas por razões de compatibilidade. Você poderá usar o valor por omissão <quote +>distribuidor</quote +> que o &appwizard; usa. </para> +<para +>O campo da <guilabel +>Mensagem</guilabel +> permite-lhe comentar o conteúdo inicial do &CVS;. Use o texto que desejar ou poderá manter o texto <quote +>novo projecto</quote +> que o &appwizard; colocou. </para> +<para +>O campo <guilabel +>Marca de lançamento</guilabel +> contém o nome que é marcado para o estado inicial do seu projecto. Essa <emphasis +>marca</emphasis +> define um certo ponto no repositório do &CVS; a que você poderá aceder posteriormente para este estado do seu desenvolvimento. (Veja mais no capítulo <link linkend="cvs" +>Usar o &CVS;</link +>.) </para> +<para +>O &appwizard; colocou uma marca <quote +>inicio</quote +>, a qual é uma proposta aceitável. Basta usá-la. </para> + +<note> +<para +>Quando qualquer uma destas informações está errada, o &tdevelop; normalmente não irá saber de nada até à altura da criação do projecto. É o sistema do &CVS; que irá descobrir esses erros ao tentar criar o repositório. Aqui você deverá dar uma vista de olhos na janela <guilabel +>Mensagens</guilabel +> do &tdevelop; logo que o projecto for criado no passo final da configuração. Se ocorreu algum erro com o &CVS;, você irá ver na maioria dos casos uma mensagem semelhante a esta: </para> + +<screen +><computeroutput> +* cd '/home/ze/teste' e&& cvs -d '/home/ze/raiz_cvs' \ + import -m 'novo projecto' '' 'distribuidor' 'inicial' &&\ + sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \ + '/home/ze/raiz_cvs' +* cvs [import aborted]: /home/ze/raiz_cvs/CVSROOT: No such file or + directory +* *** Exited with status: 1 *** +</computeroutput +></screen> + +<para +>Se isto acontecer, você terá de configurar manualmente o &CVS; (o &tdevelop; deverá ter conseguido inicializar com sucesso os ficheiros do seu projecto nesta altura) ou então remover a directoria do projecto e começar tudo de novo com a opção <guimenuitem +>Novo Projecto</guimenuitem +> do menu <guimenu +>Projecto</guimenu +>. </para> +</note> + +<para +>Depois de você ter introduzido toda a configuração relacionada com o &CVS;, carregue no botão <guibutton +>Próximo ></guibutton +> para prosseguir. </para> + +<note +><para +>Se você quiser corrigir um erro na página anterior do <guilabel +>Criar um Novo Projecto</guilabel +>, basta carregar no botão <guibutton +>< Anterior</guibutton +>. O &appwizard; irá recordar os seus resultados na página actual, por isso você poderá prosseguir com facilidade quando regressar. </para +></note> + +</sect2 +> <!-- new-projects-start-cvs --> + +<sect2 id="new-projects-start-templates"> +<title +>Fornecer os Modelos de Ficheiros de Código/Inclusão</title> + +<para +>O próximo passo leva-o a uma série de páginas onde poderá configurar informações comuns que deseje incluir nos seus ficheiros de código e de inclusão, se a tarefa à mão o permitir. </para> +<para +>Tanto os modelos para ficheiros de código e de inclusão são fornecidos para as aplicações de C e C++, cada um na sua própria página. Para as outras linguagens, só deverão existir modelos de ficheiros de código. E ainda, noutros casos, você poderá encontrar esta página de modelos em branco. </para> +<para +>Se a página for usada, o &appwizard; irá preencher um dado comentário comum sobre o que uma aplicação em C++ poderá parecer (o texto está em inglês, dado ser uma transcrição da licença GPL): </para> + +<screen +><computeroutput +><literal> +/*************************************************************************** + * Copyright (C) 2003 by O Seu Nome * + * voce@proprio.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +</literal +></computeroutput +></screen> + +<para +>Outros modelos irão fornecer várias informações semelhantes num formato que esteja de acordo com as definições da linguagem de programação que deseja usar. </para> +<para +>Como você poderá já ter notado, o gestor de aplicações já preencheu alguma informação que você indicou na primeira página <guilabel +>Geral</guilabel +> da janela <guilabel +>Criar um Novo Projecto</guilabel +>, nomeadamente o conteúdo dos campos <guilabel +>Autor</guilabel +> e <guilabel +>E-mail</guilabel +>. Também a informação adequada da licença foi introduzida de acordo com a sua selecção na página <guilabel +>Licença</guilabel +>. </para> + +<sect3 id="new-projects-start-templates-edit"> +<title +>Como Editar os Modelos</title> + +<indexterm zone="new-projects-start-templates-edit"> + <primary +>modelos</primary> + <secondary +>projecto</secondary> + <tertiary +>editar</tertiary +></indexterm> +<indexterm zone="new-projects-start-templates-edit"> + <primary +>projecto</primary> + <secondary +>modelos</secondary> + <tertiary +>editar</tertiary +></indexterm> + +<para +>Os modelos que você configurar na janela <guilabel +>Criar um Novo Projecto</guilabel +> serão depois processados, sempre que você disser ao &tdevelop; para configurar um novo ficheiro de código e/ou de inclusão. A informação que indicar aqui será incluída no topo, como um cabeçalho de documentação, antes de a parte do código começar. </para> +<para +>Você não está restrito ao texto normal, de qualquer forma. O &tdevelop; reconhece diversas variáveis que lhe permitirão incluir a informação actualizada no ficheiro. O &appwizard; usou de facto algumas variáveis para inserir o <guilabel +>Autor</guilabel +>, o <guilabel +>E-mail</guilabel +> e a <guilabel +>Licença</guilabel +> no campo de texto do modelo inicial. </para> + +<variablelist> +<varlistentry> +<term +>Incluir a Informação do Ficheiro para o &doxygen;</term> +<listitem> +<para +>Se, por exemplo, você quiser que a documentação da &API; gerada pelo &doxygen; mostre alguma informação sobre o conteúdo do ficheiro na sua lista de ficheiros, você poderá incluir as seguintes linhas no modelo do ficheiro de código: </para> +<screen +><computeroutput> +/** + * \file $MODULE$.cpp + * \brief (ponha uma descrição breve aqui). + **/ +</computeroutput +></screen> +<para +>Sempre que você criar um novo ficheiro de código, o &tdevelop; irá substituir a variável <varname +>$MODULE$</varname +> pelo nome do ficheiro criado como novo. Por exemplo, se você criou uma nova classe de C++ chamada <classname +>TesteSimples</classname +>, você irá ver as seguintes linhas no ficheiro <filename +>testesimples.cpp</filename +>: </para> +<screen +><computeroutput> +/** + * \file testesimples.cpp + * \brief (ponha uma descrição breve aqui). + **/ +</computeroutput +></screen> +<para +>Você terá à mesma de fornecer a breve descrição a seguir à palavra-chave <quote +>\brief</quote +>, mas parte do trabalho é automaticamente feita para si. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>O Ficheiro de Texto da Licença</term> +<listitem> +<para +>Como outro exemplo, você poderia incluir uma referência explícita para o texto da licença que deseja usar no modelo. Use a variável <varname +>$LICENSEFILE$</varname +> para esse fim e adicione, por exemplo, esta linha: </para> + +<screen +><computeroutput> +// Veja o $LICENSEFILE$ para o texto completo da licença. +</computeroutput +></screen> +<para +>O &appwizard; irá substituir o <varname +>$LICENSEFILE$</varname +> pela localização do ficheiro com o texto completo da licença, nomeadamente: </para> +<screen +><computeroutput> +// Veja o COPYING para o texto completo da licença. +</computeroutput +></screen> +<para +>para a licença <acronym +>GPL</acronym +> ou </para> +<screen +><computeroutput> +// Veja o LICENSE.BSD para o texto completo da licença. +</computeroutput +></screen> +<para +>se optou por colocar a sua aplicação segundo os termos da licença <acronym +>BSD</acronym +>. </para> +<para +>Existem obviamente mais variáveis que o &tdevelop; conhece. Veja a secção sobre como <link linkend="newfiles-edittemplates" +>Editar os modelos</link +> no capítulo <link linkend="editing" +>Ferramentas de edição</link +> para saber o que é possível. </para> +</listitem> +</varlistentry> +</variablelist> + +<note +><para +>Os modelos que definir aqui ficarão em efeito só após o &appwizard; ter criado o projecto novo. Você irá encontrar esta informação no topo dos ficheiros que você criou durante o processo de desenvolvimento. Ao criar os ficheiros iniciais, o &appwizard; irá usar alguns modelos-padrão predefinidos. Você terá de adaptar manualmente estes ficheiros iniciais de acordo com as suas necessidades. </para +></note> + +</sect3 +> <!-- new-projects-start-templates-edit --> +</sect2 +> <!-- new-projects-start-templates --> + +<sect2 id="new-projects-start-build"> +<title +>Criar os Ficheiros Iniciais do Projecto</title> + +<indexterm zone="new-projects-start-build"> + <primary +>projecto</primary> + <secondary +>novos</secondary> + <tertiary +>criar</tertiary +></indexterm> +<indexterm zone="new-projects-start-build"> + <primary +>projecto</primary> + <secondary +>criação inicial</secondary +></indexterm> + +<para +>Está quase tudo feito, por agora. Na última página de modelos, o botão <guibutton +>Próximo ></guibutton +> terá mudado para aparecer então <guibutton +>Terminar</guibutton +>. </para> +<para +><emphasis +>Pense duas vezes antes de carregar nele!</emphasis +> Você terá à mesma a opção de rever tudo se carregar repetidamente no botão <guibutton +>< Anterior</guibutton +>. Dado que o &appwizard; recorda todas as informações que você introduziu até agora, é aconselhável que você ocupe algum tempo a rever tudo de novo. No caso de você usar o &CVS; local, não se esqueça de verificar com atenção o nome do <emphasis +>repositório de &CVS;</emphasis +> (não deverá existir nenhuma subdirectoria com esse nome na directoria da raiz do &CVS; — se existir, tente outro nome de repositório). </para> +<para +>Se em alguma altura não desejar que o novo projecto, seja criado, interrompa a janela do <guilabel +>Criar um Novo Projecto</guilabel +> com o botão <guibutton +>Cancelar</guibutton +>. Caso contrário, carregue em <guibutton +>Terminar</guibutton +> e veja na janela <guilabel +>Mensagens</guilabel +> como é que o &appwizard; inicia o projecto. </para> +<para +>Se você quiser usar um sistema de controlo de versões (&CVS;), irão existir dois passos, de facto. O &appwizard; irá primeiro criar as directorias e ficheiros do projecto e então depois invocará o programa &CVS; que irá reiniciar a janela de <guilabel +>Mensagens</guilabel +> com o seu próprio conteúdo. Se ocorrer algum erro durante uma dessas execuções, o processo irá terminar, mostrando-lhe uma mensagem de erro correspondente na janela. </para> + +<note +><para +>Em muitos casos em que o seu projecto foi configurado desta forma, o &tdevelop; irá automaticamente carregar os ficheiros de código de um ou mais módulos importantes para que você possa começar logo a trabalhar. (Os módulos de código que serão mostrados—se existir algum que seja—contudo, depende do modelo seleccionado inicialmente no &appwizard;.) </para +></note> + +<para +>Não se esqueça de verificar inicialmente o que é que o &appwizard; forneceu. Por exemplo, você poderá querer alterar as informações iniciais dos cabeçalhos, de acordo com os seus próprios modelos. Normalmente, você irá encontrar estes numa subdirectoria <filename class="directory" +>templates</filename +> da directoria do seu projecto. À partida, somente algumas cópias simples serão suficientes. </para> +<para +>Aí, é aconselhável que você <emphasis +>compile o projecto inicial</emphasis +> antes de tentar alterar qualquer código que seja. Na maioria dos casos, esta compilação inicial será possível à partida. Como tal, você poderá começar logo a preparar o projecto para ser alterado de acordo com a sua vontade. Se não foi possível, basta remover a directoria do projecto (e da sua raiz local do &CVS; se usar alguma) e recomeçar do princípio. </para> + +<warning id="defaultbuild-warning" +> <!-- ### remove this when "default" works again --> + + <indexterm zone="defaultbuild-warning"> + <primary +>configuração predefinida da criação</primary> + <secondary +>aviso</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>configurações da criação</primary> + <secondary +>aviso da criação predefinida</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>aviso</primary> + <secondary +>configuração predefinida da criação</secondary +></indexterm> + + <para +>Antes de você compilar o seu novo projecto da primeira vez, dê uma vista de olhos no <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Configuração da Construção</guimenuitem +></menuchoice +>. Devem existir três selecções mostradas: <guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +> e <guimenuitem +>debug</guimenuitem +>, com a <guimenuitem +>debug</guimenuitem +> seleccionada; use se possível esta, ou então use a <guimenuitem +>optimized</guimenuitem +> em alternativa. </para> + <para +>Devido a algumas limitações na configuração actual do autoconf/automake, você <emphasis +>não deverá de forma alguma</emphasis +> compilar com a configuração <guimenuitem +>default</guimenuitem +>. Esta irá corromper algumas configurações de directorias internas, fazendo com que o <command +>configure</command +> se queixe quando o tentar usar nas configurações <guimenuitem +>optimized</guimenuitem +> ou <guimenuitem +>debug</guimenuitem +>, a seguir. </para> + <para +>(Isto aplica-se apenas às capacidades com várias opções. Se o tipo de aplicação que você seleccionou só contém uma configuração <guimenuitem +>default</guimenuitem +>, você deverá obviamente usar esta.) </para> +</warning> + +</sect2 +> <!-- new-projects-start-build --> + +</sect1 +> <!-- new-projects --> + +</chapter +> <!-- applicationwizard --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/class-browsers.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/class-browsers.docbook new file mode 100644 index 00000000000..83c6737f085 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/class-browsers.docbook @@ -0,0 +1,89 @@ +<chapter id="class-browsers"> +<title +>Os Navegadores de Classes</title> +<indexterm zone="class-browsers" +><primary +>navegador de classes</primary +></indexterm> + +<para +>Ao lidar com um projecto numa linguagem orientada por objectos, a sua ênfase ao trabalhar no projecto não é nos ficheiros de código e nos seus nomes, mas sim nas classes e nas relações entre elas. Para o ajudar a navegar no espaço de classes e símbolos definidos, o &tdevelop; inclui vários navegadores de classes que visualizam a estrutura de classes de várias formas. </para> + +<sect1 id="classview"> +<title +>Área de Classes</title> + +<para +>Esta área é mostrada do lado esquerdo da janela principal e contém uma lista linear com todas as classes, variáveis e funções do seu projecto. Está representada como uma árvore. Se você abrir o nó de uma classe ao carregar nele, irá aparecer uma lista com todos os métodos e atributos da classe respectiva. </para> + +<figure id="screenshot-classview" float="1"> +<title +>Uma Imagem da Área de Classes</title> +<mediaobject> +<imageobject +><imagedata fileref="classview.png"/></imageobject> +</mediaobject> +</figure> + +<para +>A área de classes funciona de dois modos diferentes. Por omissão, todos os símbolos estão agrupados em <quote +>Classes</quote +>, <quote +>Estruturas</quote +>, <quote +>Funções</quote +>, <quote +>Variáveis</quote +> e <quote +>Espaços de Nomes</quote +>. No menu de contexto da área, poderá escolher a opção <guimenuitem +>Listar por Espaços de Nomes</guimenuitem +>. Neste modo, a hierarquia do espaço de nomes é mostrada e os símbolos são agrupados pelo espaço de nomes respectivo em que são definidos. Isto poderá ser mais útil nos projectos que tirem bastante partido dos espaços de nomes (encadeados). É menos útil nos projectos sem espaços de nomes. </para> + +<para +>Poderá também alterar a forma com que os nomes das classes são apresentados. Normalmente, os nomes das classes aparecem sem o espaço de nomes em que foram definidas. Isto significa que você não consegue distinguir imediatamente as classes que tenham o mesmo nome em espaços de nomes diferentes. Se esperar um pouco com o cursor do rato sobre o item, irá aparecer o nome completo como uma dica. Poderá optar por mostrar sempre o nome completo da classe se escolher a opção <guimenuitem +>Âmbitos dos identificadores completos</guimenuitem +> no menu de contexto. </para> + +<para +>Se carregar numa classe ou método da área de classes, irá mostrar a sua definição. Poderá sempre saltar para a declaração de um método se escolher a opção <guimenuitem +>Ir para a declaração</guimenuitem +> no menu de contexto. No menu de contexto das classes, existem também os itens <guimenuitem +>Adicionar um método...</guimenuitem +> e <guimenuitem +>Adicionar um atributo...</guimenuitem +>. Isto irá abrir janelas onde poderá gerar novas declarações de métodos e variáveis nas classes respectivas, em conjunto com uma implementação vazia. </para> + +</sect1 +> <!-- classview --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classtools"> +<title +>Ferramentas de Classes</title> + +<para +>A janela de classes é activada se carregar com o botão direito numa classe da área de classes e escolher a opção <guimenuitem +>Ferramenta de classes...</guimenuitem +>. </para> + +</sect1 +> <!-- classtools --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classhierarchy"> +<title +>Hierarquia de Classes</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- classhierarchy --> + +</chapter +> <!-- class-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/commands.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/commands.docbook new file mode 100644 index 00000000000..8711e906a5f --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/commands.docbook @@ -0,0 +1,2997 @@ +<chapter id="commands"> + +<!-- ToDo: Complete descriptions, e.g. from What's This. + Link to more detailed description, e.g. in plugin chapter. + +--> + +<chapterinfo> +<authorgroup> +<author +><firstname +>Volker</firstname +> <surname +>Paul</surname +></author> +<othercredit role="translator" +><firstname +>José</firstname +><surname +>Pires</surname +><affiliation +><address +><email +>jncp@netcabo.pt</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<date +>03-04-2005</date> +</chapterinfo> + +<title +>Referência de Comandos</title> + +<note +><para +>As combinações de teclas de atalho mostradas neste capítulo são as que vêm por omissão. Poderão à mesma ser alteradas. </para +></note> + + + +<sect1 id="menubar"> +<title +>A Barra de Menu</title +> <para +>Lembre-se que alguns dos itens do menu só aparecem quando se aplicarem. Especialmente, alguns itens estão associados à funcionalidade de determinados <link linkend="plugin-tools" +>'plugins'</link +> que só ficará disponível, quando os 'plugins' respectivos estiverem activos.</para> + + + + + + +<!-- ======================= F I L E ============================= --> + +<sect2 id="menu-file"> +<title +>O Menu <guimenu +>Ficheiro</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Novo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Cria um novo ficheiro. É pedida ao utilizador a pasta onde colocar o ficheiro (por omissão: a pasta de código do projecto actual) e o nome do ficheiro. O tipo do ficheiro poderá ser seleccionado a partir de uma lista. Do mesmo modo, o utilizador poderá escolher se o ficheiro é para ser adicionado ao projecto. Nesse caso, o Gestor do Automake irá perguntar o alvo ao qual adicionar o novo ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Abrir</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abre um ficheiro existente numa janela simples.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Abrir um Recente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abre um submenu que mostra os ficheiros abertos recentemente. Se seleccionar um destes, fará com que o KDevelop abra esse ficheiro. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Abertura Rápida</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apresenta uma lista de ficheiros na pasta de código do projecto actual. O utilizador poderá seleccioná-lo na lista ou indicar o seu nome. Será esse ficheiro então aberto. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Gravar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Grava o ficheiro actual.</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Gravar Como...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Usa a janela <guilabel +>Gravar Como...</guilabel +> para lhe permitir gravar uma cópia com um novo nome.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ficheiro</guimenu +> <guimenuitem +>Gravar Tudo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Grava todos os ficheiros abertos.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycap +>F5</keycap +></shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Recarregar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Volta a carregar o ficheiro actual para mostrar as alterações feitas pelos outros programas. (Lembre-se que estas alterações são normalmente detectadas automaticamente e o utilizador é avisado para dizer se deseja carregar os ficheiros novos).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ficheiro</guimenu +> <guimenuitem +>Reverter tudo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Reverte todas as modificações feitas nos ficheiros abertos. Avisa o utilizador para gravar as alterações, para que essa reposição possa ser cancelada para cada ficheiro modificado. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>P</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Imprimir...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Imprimir.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ficheiro</guimenu +> <guimenuitem +>Exportar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Exportar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Fechar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fecha o ficheiro actual. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ficheiro</guimenu +> <guimenuitem +>Fechar Tudo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fecha todos os ficheiros abertos. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ficheiro</guimenu +> <guimenuitem +>Fechar Todos os Outros</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fecha todos os ficheiros excepto o actual. É muito útil se tiver aberto vários ficheiros e só se deseja concentrar no actual. Sem isto, teria de fechá-los a todos e voltar a abrir o actual. </para> +<para +>Repare que existe uma opção semelhante no menu Janela. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +> </shortcut +> <guimenu +>Ficheiro</guimenu +> <guimenuitem +>Sair</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fecha o KDevelop.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +<!-- ======================= E D I T ============================= --> + + +<sect2 id="menu-edit"> +<title +>O Menu <guimenu +>Editar</guimenu +></title> + + +<variablelist> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Z</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Desfazer</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Desfazer </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>Z</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Refazer</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Refazer </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>X</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Cortar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Cortar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Copiar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Copiar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>V</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Colar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Colar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>A</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Seleccionar Tudo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Seleccionar Tudo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>A</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Deseleccionar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Deseleccionar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>B</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Modo de Selecção em Bloco</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo de Selecção em Bloco </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Insert</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Modo de Sobreposição</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo de Sobreposição </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Procurar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>F3</keycap +></keycombo +></shortcut +> <guimenu +>Editar</guimenu +><guimenuitem +>Procurar o Seguinte</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar o Seguinte </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F3</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Procurar Anterior</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar o Anterior </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Substituir</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Substituir </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Ir para a Linha</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Ir para a Linha </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Procurar nos Ficheiros</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar nos Ficheiros </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Procurar-Seleccionar-Substituir</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar-Seleccionar-Substituir </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Editar</guimenu +> <guimenuitem +>Formatar o Código</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Formatar o Código </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Expandir o Texto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Expandir o Texto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>L</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Expandir a Abreviatura</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Expandir a Abreviatura </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Espaço</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Completar Texto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Completar o Texto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F2</keycap +></keycombo +> </shortcut +> <guimenu +>Editar</guimenu +> <guimenuitem +>Criar o Membro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Criar o Membro </para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + +<!-- ======================= V I E W ============================= --> + + +<sect2 id="menu-view"> + +<title +>O Menu <guimenu +>Ver</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Recuar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Recuar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Avançar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avançar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>/</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mudar para...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mudar para... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Elevar o Editor</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Elevar o Editor </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Erro Seguinte</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Erro Seguinte </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Erro Anterior</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Erro Anterior </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Modo de Ecrã Completo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo de Ecrã Completo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F12</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mudar para a Declaração/Implementação</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mudar Para a Declaração/Implementação </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Janelas de Ferramentas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Janelas de Ferramentas </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Acoplagem de Ferramentas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Acoplagem de Ferramentas </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mudar para a Linha de Comandos</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mudar para a Linha de Comandos </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Esquema</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esquema </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F10</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mudança de Linha Dinâmica</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mudança de Linha Dinâmica </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Indicadores de Mudança de Linha Dinâmica</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Indicadores de Mudança de Linha Dinâmica </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Mostrar/Esconder o Marcador Estático de Mudança de Linha</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostrar/Esconder o Marcador Estático de Mudança de Linha </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F6</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mostrar/Esconder o Contorno dos Ícones</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostrar/Esconder o Contorno dos Ícones </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F11</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mostrar/Esconder os Números de Linha</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostrar/Esconder os Números de Linha </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Mostrar/Esconder as Marcações da Barra de Posicionamento</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostrar/Esconder as Marcações da Barra de Posicionamento </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F9</keycap +></keycombo +> </shortcut +> <guimenu +>Ver</guimenu +> <guimenuitem +>Mostrar/Esconder as Marcas de Expansão</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostrar/Esconder as Marcas de Expansão/Recolhimento do Código </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Dobragem do Código</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Dobragem do Código </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Escolher a Codificação</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Escolher a Codificação </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= P R O J E C T ============================= --> + + +<sect2 id="menu-project"> +<title +>O Menu <guimenu +>Projecto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Novo Projecto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Novo Projecto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Abrir Projecto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abrir um Projecto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Abrir um Projecto Recente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abrir um Projecto Recente </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Linguagem Activa</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Linguagem Activa </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Importar um Projecto Existente...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Importar um Projecto Existente... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Nova Classe...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Nova Classe... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Diagrama de Herança de Classes</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Diagrama de Herança de Classes </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Adicionar uma Tradução...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Adicionar uma Tradução... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Configuração da Compilação</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configuração da Compilação </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Distribuição & Publicação</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Distribuição & Publicação </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do Projecto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Opções do Projecto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Fechar o Projecto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fechar o Projecto </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= B U I L D ============================= --> + + +<sect2 id="menu-build"> +<title +>O Menu <guimenu +>Projecto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F8</keycap +></keycombo +> </shortcut +> <guimenu +>Construir</guimenu +> <guimenuitem +>Construir o Projecto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Construir o Projecto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Construir</guimenu +> <guimenuitem +>Construir o Alvo Activo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Construir o Alvo Activo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Compilar o Ficheiro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Compilar o Ficheiro </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Correr o 'Configure'</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Correr o 'Configure' </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Executar o 'automake' & outros</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Executar o 'automake' & outros </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Instalar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Instalar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Instalar (como utilizador root)</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Instalar (como utilizador 'root') </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Limpar o projecto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Limpar o projecto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Distclean</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Distclean </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F9</keycap +></keycombo +> </shortcut +> <guimenu +>Construir</guimenu +> <guimenuitem +>Mensagens do Make & Reunir</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mensagens do Make & Reunir </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Executar o Programa</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Executar o Programa </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Criar a Documentação da API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Criar a Documentação da API </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Construir</guimenu +> <guimenuitem +>Limpar a Documentação da API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Limpar a Documentação da API </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Escape</keycap +></keycombo +> </shortcut +> <guimenu +>Construir</guimenu +> <guimenuitem +>Parar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Parar </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + +<!-- ======================= D E B U G ============================= --> + + +<sect2 id="menu-debug"> +<title +>O Menu <guimenu +>Projecto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Iniciar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Iniciar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Parar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Parar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Interromper</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Interromper </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Executar até ao Cursor</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Executar Até Ao Cursor </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Avançar Sobre</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avançar Sobre </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Avançar sobre a Instrução</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avançar Sobre a Instrução </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Entrar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avançar Para </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Avançar para a Instrução</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avançar Para a Instrução </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Sair</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Sair </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Comutar o Ponto de Paragem</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Comutar o Ponto de Paragem </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Visualizadores</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizadores </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Examinar o Ficheiro 'Core'...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Examinar o Ficheiro 'Core'... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Anexar ao Processo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Anexar ao Processo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Verificação de Fugas de Memória do Valgrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Verificação de Fugas de Memória do Valgrind </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Perfil com o KCachegrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Análise com o KCachegrind </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + + + +<!-- ======================= B O O K M A R K S ============================= --> + + + +<sect2 id="menu-bookmarks"> +<title +>O Menu <guimenu +>Favoritos</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>B</keycap +></keycombo +></shortcut +> <guimenu +>Favoritos</guimenu +><guimenuitem +>Comutar o Favorito</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Adiciona a selecção actual aos seus favoritos.</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Favoritos</guimenu +> <guimenuitem +>Limpar Todos os Favoritos</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Limpar todos os favoritos.</para +></listitem> +</varlistentry> +</variablelist> + +</sect2> + + + + +<!-- ======================= W I N D O W ============================= --> + + +<sect2 id="menu-window"> +<title +>O Menu <guimenu +>Janela</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>W</keycap +></keycombo +></shortcut +> <guimenu +>Janela</guimenu +> <guimenuitem +>Fechar as Janelas Seleccionadas...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fechar as Janelas Seleccionadas...</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +></shortcut +> <guimenu +>Janela</guimenu +> <guimenuitem +>Fechar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fechar</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Janela</guimenu +> <guimenuitem +>Fechar Tudo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fechar Tudo</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Janela</guimenu +> <guimenuitem +>Fechar Todos os Outros</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fechar Todos os Outros</para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + + + + +<!-- ======================= T O O L S ============================= --> + + +<sect2 id="menu-tools"> +<title +>O Menu <guimenu +>Ferramentas</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Modo Apenas de Leitura</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo Apenas de Leitura </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Modo do Tipo de Ficheiro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo do Tipo de Ficheiro </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Modo de Realce</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modo de Realce </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Fim da Linha</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fim da Linha </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Ortografia</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Ortografia </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Indentar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Indentar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Desindentar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Desindentar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Limpar a Indentação</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Limpar a Indentação </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Tab</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Alinhar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Alinhar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Comentar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Comentário </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Descomentar</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Descomentar </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Maiúsculas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Maiúsculas </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Minúsculas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Minúsculas </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Capitalização</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Capitalização </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Juntar as Linhas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Juntar as Linhas </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Mudança de Linha do Documento</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Repartir o Documento </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Visualizador das Diferenças...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizador das Diferenças... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Executar o Comando...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Executar o Comando... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Filtrar a Selecção pelo Comando...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Filtra os dados seleccionados, através de um comando externo, usando o <link linkend="KDevFilter" +>'plugin' do Filtro</link +>. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Depurar a Expressão Regular...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Depurar a Expressão Regular... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Explorador de Componentes</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Explorador de Componentes </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Abertura Rápida de Classe...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abertura Rápida de Classes... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>M</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Abertura Rápida de Método...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abertura Rápida de Métodos... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>P</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Antever o Resultado do Doxygen</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Antever o Resultado do Doxygen </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Ferramentas</guimenu +> <guimenuitem +>Documentar a Função Actual</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Documentar a Função Actual </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= S E T T I N G S ============================= --> + + +<sect2 id="menu-settings"> +<title +>O Menu <guimenu +>Configuração</guimenu +></title> + + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>M</keycap +></keycombo +></shortcut +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Mostrar/Esconder o Menu</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra ou esconde a barra do menu.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Barras de Ferramentas</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Abre um sub-menu onde você poderá optar por mostrar ou esconder as várias barras de ferramentas disponíveis.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Mostrar a Barra de Estado</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra a barra de estado.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar os Atalhos...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurar os Atalhos... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar a Barra de Ferramentas...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurar a Barra de Ferramentas... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar as Notificações...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurar as Notificações... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o Editor...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurar o Editor... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurar o KDevelop... </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= H E L P ============================= --> + + +<sect2 id="menu-help"> +<title +>O Menu <guimenu +>Ajuda</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Manual do KDevelop</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Vê este documento.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F1</keycap +></keycombo +></shortcut +> <guimenu +>Ajuda</guimenu +> <guimenuitem +>O Que É Isto?</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra um ponto de interrogação (?) ao lado do cursor do rato, pelo que se carregar num item da janela, como o botão <guiicon +>Parar</guiicon +>, irá mostrar uma explicação breve. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Dica do Dia</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Dica do Dia </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Ajuda</guimenu +> <guimenuitem +>Procurar no Índice da Documentação...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar no Índice da Documentação... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Ajuda</guimenu +> <guimenuitem +>Procurar na Documentação...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Procurar na Documentação... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Página do 'Man'...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Página do 'Man'... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Página do 'Info'...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Página do 'Info'... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Comunicar um Erro...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Comunica um erro.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Acerca do KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra alguma informação breve sobre o número de versão do KDevelop, os autores e o contrato de licença.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>Acerca do KDE...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra alguma informação acerca da versão do &kde; que você está a executar.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +</sect1> + + + + +</chapter> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/credits.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/credits.docbook new file mode 100644 index 00000000000..99d8e1d0c0b --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/credits.docbook @@ -0,0 +1,40 @@ +<chapter id="credits"> +<title +>Créditos</title> + +<sect1 id="credits-contributions"> +<title +>Contribuições</title> + +<para> +<itemizedlist> + <listitem +><para +>O conteúdo inicial deste manual foi escrito pelo Bernd Gehrmann <email +>bernd@tdevelop.org</email +> e pelo Caleb Tennis <email +>caleb@aei-tech.com</email +>. </para +></listitem> + <listitem +><para +>Os capítulos <link linkend="automake-manager-summary" +>Resumo do &automanag;</link +> e <link linkend="automake-manager-operation" +>Operação do Gestor Automake</link +> foram escritos pelo Ian Wadham, <email +>ianw@netspace.net.au</email +>). </para +></listitem> +</itemizedlist> +</para> + +</sect1 +> <!-- credits-contributions --> + +<!--CREDITS_FOR_TRANSLATORS--> + +</chapter +> <!-- credits --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/cvs.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/cvs.docbook new file mode 100644 index 00000000000..40bb487fed8 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/cvs.docbook @@ -0,0 +1,131 @@ +<chapter id="cvs"> +<title +>Usar o &CVS;</title> +<indexterm zone="cvs" +><primary +>CVS</primary +></indexterm> +<indexterm zone="cvs" +><primary +>controlo de revisões (versões)</primary +></indexterm> + +<sect1 id="cvs-basics"> +<title +>Bases do &CVS;</title> + +<para +>O &CVS; é o sistema de controlo de versões que muitos dos projectos 'open-source' - incluindo o &kde; — usam. Ele grava todo o código num sítio local, chamado de <emphasis +>repositório</emphasis +>. A partir do repositório, os programadores poderão obter uma versão actualizada do projecto (ou partes dele) em qualquer altura. Em contraste com outros sistemas de controlo de versões, não é necessário <emphasis +>bloquear</emphasis +> os ficheiros em que uma pessoa deseja trabalhar. Como tal, o desenvolvimento poderá ser altamente paralelizado. </para> + +<para +>Sempre que um programador terminar uma tarefa, ele <emphasis +>envia</emphasis +> o seu código (acompanhado de uma mensagem de registo). O &CVS; tem a seu cargo a junção das alterações feitas pelos vários programadores. Poderá acontecer, obviamente, que os programadores trabalhem no mesmo pedaço de código, o que irá resultar num conjunto de alterações em conflito (na prática, isto ocorre raramente, e normalmente é sintoma de falta de comunicação). Nesse caso, o &CVS; rejeita um envio; só após todos os conflitos terem sido resolvidos é que um ficheiro poderá ser enviado. </para> + +<para +>Até agora, isto foi uma descrição das funcionalidades básicas do &CVS; com que uma pessoa tem de lidar normalmente. Mas o &CVS; oferece bastante mais: poder-se-ão manter várias ramificações de um projecto (⪚ o &kde; 1.1.2 e o &kde; 2 eram ramificações da árvore de desenvolvimento do &kde;), reunir as modificações de uma ramificação noutra, pedir as diferenças entre versões, o histórico de versões de ficheiros &etc; </para> + +<para +>O &CVS; está implementado como um sistema cliente-servidor. Como utilizador, toda a comunicação com o repositório é feita através do programa da linha de comandos &cvs;. Está disponível uma interface de nível mais elevado através das interfaces existentes, como o &cervisia; (<ulink url="http://cervisia.sf.net" +></ulink +>) ou o <application +>TkCVS</application +> (<ulink url="http://tkcvs.sf.net" +></ulink +>). No &tdevelop;, só uma pequena parte da funcionalidade do &cvs; é relevante para o seu trabalho diário e que poderá ser usada directamente. </para> + +<para +>Assume-se um conhecimento básico da utilização do &CVS;. Em particular, deverá saber como obter um dado projecto do seu repositório. Recomenda-se o livro <quote +>Open Source Development With &CVS;</quote +> de Karl Fogel, o qual está disponível de forma livre (excepto os capítulos não-técnicos). Veja em <ulink url="http://cvsbook.red-bean.com/cvsbook.html" +></ulink +>. </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-commands"> +<title +>Comandos do &CVS; no &tdevelop;</title> + +<para +>Na árvore de ficheiros, estão disponíveis os seguintes itens do menu de contexto: </para> + +<variablelist> +<varlistentry> +<term +>Adicionar ao Repositório</term> +<listitem> +<para +>Prepara o ficheiro marcado para ser adicionado ao repositório. O ficheiro é transferido para o mesmo quando o enviar (ou a pasta que o contém) da próxima vez. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Remover do Repositório</term> +<listitem> +<para +>Prepara um ficheiro para ser removido do repositório. Isto remove também o ficheiro do sistema de ficheiros local, como tal use esta funcionalidade com cuidado! </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Actualizar</term> +<listitem> +<para +>Execute o <command +>cvs update</command +> para reunir as modificações dos outros utilizadores na sua pasta de trabalho. Quando usar este item do menu sobre uma pasta, a actualização irá acontecer normalmente de forma recursiva, excepto se tiver desactivado essa possibilidade no ficheiro de configuração <filename +>.cvsrc</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Enviar</term> +<listitem> +<para +>Executa o <command +>cvs commit</command +> para enviar as modificações locais para o repositório. Lembre-se que deverá fazer uma actualização local antes de fazer isto. Caso contrário, quando outro utilizador tiver enviado as suas modificações antes, o &CVS; poder-lhe-á mostrar uma mensagem de erro. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Todos estes comandos são invocados como sub-processos pelo &tdevelop; sem quaisquer outras opções da linha de comandos ou variáveis de ambiente. Isto poderá ser um problema quando a ligação ao servidor de &CVS; for através de uma ligação de &ssh; e você tiver de indicar a sua senha, sempre que envia ou recebe as actualizações. Isto é, por exemplo, necessário quando o seu projecto está alojado no <filename +>sourceforge.net</filename +>. As soluções alternativas para este problema estão descritas na FAQ do &CVS;/SSH, que poderá encontrar na documentação do SourceForge. </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-behind"> +<title +>Nos Bastidores</title> + +<sect2 id="cvs-behind-workdir"> +<title +>O Que o &CVS; Grava na Pasta de Trabalho</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- cvs-behind-workdir --> + +</sect1 +> <!-- cvs-behind --> + +</chapter +> <!-- cvs --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/debugger.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/debugger.docbook new file mode 100644 index 00000000000..9bfc6e4c1d8 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/debugger.docbook @@ -0,0 +1,339 @@ +<chapter id="debugger"> +<title +>A Interface do Depurador</title> +<indexterm zone="debugger" +><primary +>depurador</primary +></indexterm> + +<para +>Para o C e C++, o &tdevelop; contém um depurador interno que está integrado directamente com o editor. Do ponto de vista técnico, está implementado como uma interface para o depurador multi-plataforma da &GNU; <application +>gdb</application +> através de um 'pipe'. O depurador poderá ser iniciado de várias formas: </para> + +<itemizedlist> +<listitem> +<para +>Com a opção <menuchoice +><guimenu +>Depurar</guimenu +><guimenuitem +>Iniciar</guimenuitem +></menuchoice +>, o programa principal do seu projecto é carregado no depurador. </para> +</listitem> + +<listitem> +<para +>Se usar a opção <menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Iniciar (outro)</guimenuitem +> <guimenuitem +>Examinar o ficheiro 'core'</guimenuitem +></menuchoice +>, poderá carregar um ficheiro de 'core' para a memória, o qual é gerado pelo 'kernel' do sistema operativo, quando o programa tiver estoirado (A geração de ficheiros 'core' poderá estar desligada no seu sistema; veja o <application +>ulimit(1)</application +>). Isto é útil para uma análise 'post-mortem' de um programa. </para> +</listitem> + +<listitem> +<para +>Com a opção <menuchoice +><guimenu +>Depurar</guimenu +> <guimenuitem +>Iniciar (outro)</guimenuitem +> <guimenuitem +>Anexar a um processo</guimenuitem +></menuchoice +>, poderá invocar o depurador sobre um programa já em execução. Irá ver uma lista de processos onde poderá seleccionar o processo que o depurador deverá capturar. </para> +</listitem> + +<listitem> +<para +>Lembre-se que a depuração só é possível se o seu projecto tiver sido compilado com as informações de depuração activas. Poderá ser activada na janela de <guibutton +>Opções do compilador</guibutton +>. Quando esta opção estiver activa, o compilador gera dados adicionais que permitem ao depurador associar nomes de ficheiros e números de linha aos endereços do executável. </para> +</listitem> +</itemizedlist> + +<para +>A interface do depurador oferece várias vistas <quote +>dentro</quote +> do processo: </para> + +<para +>Se tentar depurar um projecto sem informação de depuração, irá obter a mensagem <computeroutput +>Sem código...</computeroutput +> na barra de estado. Se tentar definir um ponto de paragem, é mostrado como <computeroutput +>Pendente (adicionar)</computeroutput +> na janela do ponto de paragem (ver abaixo). </para> + +<variablelist> +<varlistentry> +<term +>Variáveis</term> +<listitem> +<indexterm zone="debugger" +><primary +>variáveis de vigia</primary +></indexterm> +<para +>Esta janela lista os valores de todas as variáveis locais no ponto de execução actual do programa. Ela cobre as variáveis na pilha de chamadas completa, &ie; a função onde o processo foi interrompido, a função que chamou esta função, e assim por diante até à função <function +>main()</function +>. </para> + +<para +>Outra ramificação nas variáveis contém as variáveis de vigia. Poderá configurar por si próprio as variáveis que são aqui mostradas. Tanto poderão ser vigiadas as variáveis locais como as globais. Poderá adicionar as variáveis se carregar no botão <guibutton +>Adicionar</guibutton +> ou carregar em <keycap +>Return</keycap +>, enquanto o item <guilabel +>Vigia</guilabel +> estiver seleccionado. Eles poderão ser removidos de novo, através do menu de contexto. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Pilha de Chamadas</term> +<listitem> +<indexterm zone="debugger" +><primary +>pilha de chamadas</primary +></indexterm> +<para +>(... ainda não escrito ...) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Pontos de Paragem</term> +<listitem> +<indexterm zone="debugger" +><primary +>pontos de paragem</primary +></indexterm> +<para +>Esta janela permite-lhe ver e manipular os pontos de paragem. Lembre-se que o &tdevelop; usa o <application +>GDB</application +>, como tal, para compreender por completo as funcionalidades de depuração do &tdevelop;, deverá ler um pouco sobre o <ulink url="http://www.gnu.org/software/gdb" +>GDB</ulink +>. </para> + +<para +>Se quiser olhar para o código-fonte, os pontos de paragem estão definidos no <filename +>tdevelop/languages/cpp/debugger/breakpoint.h</filename +>. </para> + +<para +>Do lado esquerdo, a janela tem botões para:</para> + +<itemizedlist> +<listitem +><para +>Adicionar um ponto de paragem vazio</para +></listitem> +<listitem +><para +>Editar o ponto de paragem seleccionado</para +></listitem> + <listitem +><para +>Remover o ponto de paragem seleccionado</para +></listitem> +<listitem +><para +>Remover todos os pontos de paragem</para +></listitem> +</itemizedlist> + +<para +>A parte principal da janela é uma tabela com 7 colunas. Cada linha da tabela é um ponto de paragem. As colunas são:</para> + +<orderedlist> +<listitem +><para +>Opção de selecção</para +></listitem> +<listitem +><para +>Tipo: um dos seguinte: Inválido, Ficheiro:Linha, Ponto de Vigia, Endereço, Função</para +></listitem> +<listitem +><para +>Estado. Os valores são:</para> +<itemizedlist> + <listitem +><para +>Activo</para +></listitem> + <listitem +><para +>Inactivo: Cada ponto de paragem poderá estar <quote +>activo</quote +> ou <quote +>inactivo</quote +>; no último caso, não fará efeito no seu programa até que o active de novo.</para +></listitem> + <listitem +><para +>Pendente (adicionar): um ponto de paragem fica marcado desta forma se não estiver disponível nenhuma informação de depuração. Na página do 'info' do GDB: <blockquote +><para +>Se a localização de um dado ponto de paragem não puder ser encontrada, poder-se-á dever ao facto que a localização esteja numa biblioteca dinâmica ainda por carregar. Nesse caso, poderá querer que o GDB crie um ponto de paragem especial (conhecido por <quote +>ponto de paragem pendente</quote +>) que tentará resolver-se a si próprio no futuro, quando for carregada a biblioteca dinâmica adequada.</para +> </blockquote +> </para +></listitem> +</itemizedlist> +</listitem> +<listitem +><para +>Pendente (limpar)</para +></listitem> +<listitem +><para +>Pendente (modificar)</para +></listitem> +<listitem +><para +>Localização no formato nome-ficheiro:número-linha</para +></listitem> +<listitem +><para +>Condição</para +></listitem> +<listitem +><para +>Ignorar a Contagem: Se este for um número <varname +>QUANTIDADE</varname +> maior que zero, as próximas <varname +>QUANTIDADE</varname +> vezes que o ponto de paragem for atingido, a execução do seu programa não irá parar; para além de decrementar o número de vezes a ignorar, o <application +>gdb</application +> não irá fazer nada.</para +></listitem> +<listitem +><para +>Contagem: indica quantas vezes foi atingido um ponto de paragem.</para +></listitem> +</orderedlist> + + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Descodificação</term> +<listitem> +<indexterm zone="debugger" +><primary +>descodificação</primary +></indexterm> +<para +>(... ainda não escrito ...)</para> + +</listitem> +</varlistentry> +</variablelist> + + +<sect1 id="settingbreakpoints"> +<title +>Definir Pontos de Paragem</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- settingbreakpoints --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id ="debuggeroptions"> +<title +>Opções</title> + +<variablelist> +<varlistentry> +<term +>Mostrar os Nomes Codificados</term> +<listitem> +<indexterm zone="debugger" +><primary +>codificação do nome</primary +></indexterm> +<indexterm zone="debugger" +><primary +>codificação</primary +><secondary +>nome</secondary +></indexterm> + +<para +>No C++, os nomes das funções no executável são <quote +>codificados</quote +>, &ie; os nomes das funções incluem a informação sobre os tipos de argumentos recebidos. Isto é necessário para suportar a sobreposição ('overloading') de funções. O algoritmo de codificação não é normalizado e difere mesmo entre várias versões do compilador de C++ da &GNU;. </para> + +<para +>Na janela de descodificação, são mostrados os nomes normalmente descodificados, como tal as assinaturas das funções irão aparecer como existem no código-fonte, por isso são fáceis de ler. Em alternativa, poderá querer ver os nomes codificados. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Tentar Definir Pontos de Paragem ao Carregar as Bibliotecas</term> +<listitem> +<indexterm zone="debugger" +><primary +>pontos de paragem tardios</primary +></indexterm> +<indexterm zone="debugger" +><primary +>pontos de paragem</primary +><secondary +>tardios</secondary +></indexterm> + +<para +>A infra-estrutura do depurador <application +>gdb</application +> não permite definir pontos de paragem em código que ainda não está carregado de momento. Numa aplicação altamente modular, onde muitas vezes o código só é carregado a pedido, como um 'plugin' (com a função da 'libc' <function +>dlopen(3)</function +>), isto poderá ser inconveniente. Como tal, o &tdevelop; contém o seu próprio suporte para os pontos de paragem em bibliotecas dinâmicas. Se definir esta opção, ela permitir-lhe-á definir pontos de paragem nas bibliotecas que ainda não estão carregada. Aí, sempre que o <application +>gdb</application +> notificar que uma biblioteca vai ser carregada, o &tdevelop; tentará definir os pontos de paragem pendentes. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Activar a Barra de Ferramentas Flutuante</term> +<listitem> +<indexterm zone="debugger" +><primary +>barra de ferramentas do depurador</primary +></indexterm> +<indexterm zone="debugger" +><primary +>barra de ferramentas</primary +><secondary +>depurador</secondary +></indexterm> + +<para +>(... ainda não escrito ...) </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1 +> <!-- debuggeroptions --> + +</chapter +> <!-- debugger --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/documentation.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/documentation.docbook new file mode 100644 index 00000000000..da5206477e1 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/documentation.docbook @@ -0,0 +1,73 @@ +<chapter id="documentation"> +<title +>Documentação</title> + +<para +>A documentação, infelizmente, pertence às questões mais subestimadas da programação. Contudo, uma vez configurada devidamente e mantida a nível interno e externo, a documentação oferece uma ajuda muito valiosa. </para> + +<para +>A documentação tem várias facetas. Existe a <itemizedlist> + <listitem +><para +><emphasis +>documentação interna do projecto</emphasis +>, que consiste principalmente em <itemizedlist> + <listitem +><para +><emphasis +>comentários</emphasis +> nos ficheiros de código/inclusão </para +></listitem> + <listitem +><para +><emphasis +>documentação interna da &API;</emphasis +> do seu projecto, gerada a partir dos ficheiros do programa com ferramentas especiais, ⪚ &doxygen; </para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><emphasis +>documentação externa do projecto</emphasis +>, que inclui, entre outras <itemizedlist> + <listitem +><para +><emphasis +>a documentação externa da &API;</emphasis +> de ⪚ bibliotecas do sistema comuns (&kde;, &Qt;, &etc;) </para +></listitem> + <listitem +><para +>qualquer outra documentação (manuais da linguagem de programação, informação de sistema geral, artigos e tutoriais, entre outros) </para +></listitem> + </itemizedlist> + </para +></listitem> +</itemizedlist> +</para> +<para +>Toda esta documentação deverá ser fácil de manter e prontamente disponível sempre que necessitar dela. O &tdevelop; tem todas as capacidades para tal. </para> + +<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen --> + +<sect1 id="docbrowser"> +<title +>O Navegador de Documentação</title> + + +<figure id="screenshot-doctreeview" float="1"> +<title +>Uma Imagem da Árvore de Documentação</title> +<mediaobject> +<imageobject +><imagedata fileref="doctreeview.png"/></imageobject> +</mediaobject> +</figure> + +</sect1 +> <!-- docbrowser --> + +</chapter +> <!-- documentation --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/editing.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/editing.docbook new file mode 100644 index 00000000000..c7222319578 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/editing.docbook @@ -0,0 +1,608 @@ +<chapter id="editing"> +<title +>Ferramentas de Edição</title> + +<sect1 id="editing-snippets"> +<title +>Excertos de Código</title> + +<itemizedlist> + <title +>Funcionalidades (introdução preliminar)</title> + <listitem +><para +>O SnippetPart adiciona uma janela de ferramentas que fica acoplada por omissão à direita </para +></listitem> + <listitem +><para +>A adição, edição e remoção de excertos de código está disponível através de um menu </para +></listitem> + <listitem +><para +>Se fizer duplo-click sobre um excerto, introduzi-lo-á na área activa, na posição actual do cursor </para +></listitem> + <listitem +><para +>As dicas mostram o conteúdo de um excerto </para +></listitem> + <listitem +><para +>Os excertos são guardados na área pessoal dos utilizadores, como tal, cada utilizador poderá fazer os seus próprios excertos </para +></listitem> + <listitem +><para +>Os excertos de código poderão conter variáveis do estilo $<varname +>NOME_VARIAVEL</varname +>$. Ao usar o excerto, o utilizador deverá preencher o valor de substituição das variáveis </para +></listitem> +</itemizedlist> +</sect1 +> <!-- editing-snippets --> + +<sect1 id="keyboardmapping"> +<title +>Mapeamento do Teclado</title> +<indexterm zone="keyboardmapping" +><primary +>combinações de teclas</primary +></indexterm> + +<para +>A seguir, serão listadas as combinações de teclas por omissão do editor predefinido. Poderá configurá-las como desejar (como?) </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Esquerda </keycap +></para +></entry> +<entry +><para +>Move-se um carácter para a esquerda </para +></entry +></row> + +<row +><entry +><para +><keycap +>Direita </keycap +></para +></entry> +<entry +><para +>Move-se um carácter para a direita </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Esquerda </keycap +></keycombo +></para +></entry> +<entry +><para +>Move-se uma palavra para a esquerda </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Direita </keycap +></keycombo +></para +></entry> +<entry +><para +>Move-se uma palavra para a direita </para +></entry +></row> + +<row +><entry +><para +><keycap +>Cima </keycap +></para +></entry> +<entry +><para +>Move-se uma linha para cima </para +></entry +></row> + +<row +><entry +><para +><keycap +>Baixo </keycap +></para +></entry> +<entry +><para +>Move-se uma linha para baixo </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Up </keycap +></para +></entry> +<entry +><para +>Move-se uma página para cima </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Down </keycap +></para +></entry> +<entry +><para +>Move-se uma página para baixo </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Move-se para o início do ficheiro </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Move-se para o fim do ficheiro </para +></entry +></row> + +<row +><entry +><para +><keycap +>Home </keycap +></para +></entry> +<entry +><para +>Move-se para o início da linha </para +></entry +></row> + +<row +><entry +><para +><keycap +>End </keycap +></para +></entry> +<entry +><para +>Move-se para o fim da linha </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>Para todas as teclas acima, pode-se usar adicionalmente a tecla &Shift;, para marcar a partir da posição actual do cursor até à posição onde se for parar. </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Backspace </keycap +></para +></entry> +<entry +><para +>Apaga um carácter à esquerda </para +></entry +></row> + +<row +><entry +><para +><keycap +>Delete </keycap +></para +></entry> +<entry +><para +>Apaga o carácter por baixo do cursor </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> C </keycap +></keycombo +></para +></entry> +<entry +><para +>Copia o texto seleccionado para a área de transferência </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> V </keycap +></keycombo +></para +></entry> +<entry +><para +>Cola o texto seleccionado da área de transferência </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> X </keycap +></keycombo +></para +></entry> +<entry +><para +>Apaga o texto seleccionado e coloca-o na área de transferência </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Desfazer </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Shift;&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Refazer </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +</sect1 +> <!-- keyboardmapping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="editing-reporter"> +<title +>O Sistema de Comunicação de Problemas</title> + +<para +>(... ainda não escrito ...) </para> +</sect1 +> <!-- editing-reporter --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="searchinggrepping"> +<title +>Procurar e Descobrir</title> +<indexterm zone="searchinggrepping" +><primary +>procurar</primary +></indexterm> +<indexterm zone="searchinggrepping" +><primary +>descobrir</primary +></indexterm> + +<sect2 id="searching"> +<title +>Procurar por Texto</title> + +<para +><keycombo +>&Ctrl;<keycap +>F</keycap +></keycombo +>- Procurar <keycombo +>&Ctrl;<keycap +>R</keycap +></keycombo +>- Substituir </para> + +</sect2 +> <!-- searching --> + + +<sect2 id="isearch"> +<title +>ISearch</title> +<indexterm zone="isearch" +><primary +>isearch</primary +></indexterm> +<indexterm zone="isearch" +><primary +>pesquisa incremental</primary +></indexterm> +<indexterm zone="isearch" +><primary +>procurar</primary +><secondary +>incremental</secondary +></indexterm> + +<para +>A forma convencional de procurar com a opção <menuchoice +><guimenu +>Editar</guimenu +> <guimenuitem +>Procurar</guimenuitem +></menuchoice +> necessita que você indique o termo a procurar por completo, antes de iniciar a pesquisa. A maior parte do tempo, é muito mais fácil procurar incrementalmente. Se carregar no campo de texto chamado <guilabel +>ISearch</guilabel +> da barra de ferramentas, a pesquisa é efectuada à medida que vai escrevendo. Irá concluir que o termo desejado poderá ser encontrado logo ao fim de escrever 3 ou 4 letras. </para> + +</sect2 +> <!-- isearch --> + + +<sect2 id="grep"> +<title +>Grep</title> +<indexterm zone="grep" +><primary +>procurar</primary +><secondary +>nos ficheiros</secondary +></indexterm> + +<para +>Ambos os mecanismos de procura descritos acima estão restringidos a procurar dento de um ficheiro de código. Existe uma outra ferramenta adicional que lhe permite procurar num (talvez grande) conjunto de ficheiros, através da opção do menu <guimenuitem +>Procurar nos Ficheiros...</guimenuitem +> do menu <guimenu +>Editar</guimenu +>. É, basicamente, uma interface para o programa &grep;(1). </para> + +<para +>Na janela, poderá indicar os ficheiros onde deseja procurar. Existe um conjunto de padrões especiais disponíveis que poderá usar numa lista. Desta forma, poderá restringir facilmente o mecanismo de procura aos ficheiros de inclusão, por exemplo. Para além disso, existe uma pasta que poderá indicar onde começar a procura. Se assinalar a opção <guibutton +>Recursivo</guibutton +>, a pesquisa irá percorrer todas as pastas que estejam abaixo desta na hierarquia. </para> + +<para +>O termo a procurar é, de um modo geral, uma expressão regular que segue a sintaxe do POSIX. Por exemplo, poderá usar o termo <literal +>"\<K.*"</literal +> se desejar procurar todas as palavras que comecem pela letra K. Os seguintes caracteres são interpretados de uma forma especial: </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry> + <literal +>.</literal> +</entry +><entry +>Corresponde a qualquer carácter </entry +></row> +<row +><entry> + <literal +>^</literal> +</entry +><entry +>Corresponde ao início de uma linha </entry +></row> +<row +><entry> + <literal +>$</literal> +</entry +><entry +>Corresponde ao fim de uma linha </entry +></row> +<row +><entry> + <literal +>\<</literal> +</entry +><entry +>Corresponde ao início de uma palavra </entry +></row> +<row +><entry> + <literal +>\></literal> +</entry +><entry +>Corresponde ao fim de uma palavra </entry +></row> +<row +><entry> + <literal +>?</literal> +</entry +><entry +>O item antecedente corresponde menos que uma vez </entry +></row> +<row +><entry> + <literal +>*</literal> +</entry +><entry +>O item antecedente corresponde zero ou mais vezes </entry +></row> +<row +><entry> + <literal +>+</literal> +</entry +><entry +>O item antecedente corresponde uma ou mais vezes </entry +></row> +<row +><entry> + <literal +>{n}</literal> +</entry +><entry +>O item antecedente corresponde exactamente 'n' vezes </entry +></row> +<row +><entry> + <literal +>{n,}</literal> +</entry +><entry +>O item antecedente corresponde 'n' ou mais vezes </entry +></row> +<row +><entry> + <literal +>{,n}</literal> +</entry +><entry +>O item antecedente corresponde menos de 'n' vezes </entry +></row> +<row +><entry> + <literal +>{n,m}</literal> +</entry +><entry +>O item antecedente corresponde pelo menos <literal +>n</literal +> mas menos que <literal +>m</literal +> vezes </entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>As referências anteriores às expressões entre parêntesis estão também disponíveis, através da notação <literal +>\n</literal +>. </para> + +<para +>Para os programadores em C++, como bónus especial, existem alguns modelos de procura disponíveis para procurar padrões típicos. Estes permitem-lhe procurar, por exemplo, todas as chamadas a funções pertencentes a um dado objecto. </para> + +<para +>Logo que tenha iniciado a procura, após carregar no botão <guibutton +>Procurar</guibutton +>, esta será efectuada por um processo externo e assíncrono. Todos os itens encontrados irão aparecer na janela chamada <guilabel +>Grep</guilabel +>. Poderá então saltar para os itens encontrados, carregando neles. Lembre-se que o 'grep' procura os ficheiros da forma que eles estão guardados no sistema de ficheiros. Se tiver versões modificadas dos mesmos no seu editor, poderá ter algumas falhas de correspondência no número da linha ou mesmo obter alguns itens encontrados inválidos. Poderá evitar isto se gravar todos os ficheiros previamente. </para> + +</sect2 +> <!-- grep --> + +</sect1 +> <!-- searchinggrepping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="code-completion"> +<title +>Completação de Código</title> + +<para +>(... ainda não escrito ...) </para> +</sect1 +> <!-- code-completion --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="newfiles"> +<title +>Criar Ficheiros e Classes Novos</title> + +<para +>(... ainda não escrito ...) </para> + +<sect2 id="newfiles-edittemplates"> +<title +>Editar os Modelos</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- newfiles-edittemplates --> + +</sect1 +> <!-- newfiles --> + +</chapter +> <!-- editing --> +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/file-browsers.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/file-browsers.docbook new file mode 100644 index 00000000000..e9aedfc64e0 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/file-browsers.docbook @@ -0,0 +1,67 @@ +<chapter id="file-browsers"> +<title +>Os Navegadores de Ficheiros</title> + +<para +>Do lado esquerdo da janela principal, o &tdevelop; poderá mostrar vários tipos de listas e árvores para a selecção de ficheiros: </para> + +<variablelist> +<varlistentry> +<term +>Árvore de Ficheiros</term> +<listitem> +<para +>Isto mostra uma árvore com a hierarquia de ficheiros por baixo da pasta do projecto. Se carregar num ficheiro, este é carregado no editor. Para os ficheiros que não contenham texto, o &tdevelop; inicia uma aplicação que possa lidar com o tipo MIME respectivo. </para> + +<para +>A árvore de ficheiros é actualizada regularmente, sempre que algo muda no sistema de ficheiros. Por exemplo, se criar ficheiros ou pastas novos (mesmo fora do &tdevelop;), isto é imediatamente reflectido na lista de ficheiros. No &Linux;, esta funcionalidade tira partido da biblioteca FAM. No caso dos outros sistemas operativos ou do NFS, as pastas apresentadas são pesquisadas regularmente em pequenos intervalos de tempo. </para> + +<para +>A árvore de ficheiros esconde os ficheiros que não são normalmente interessantes, como os ficheiros-objecto. Nas <guimenuitem +>Opções do projecto</guimenuitem +>, em <guibutton +>Vistas de ficheiros</guibutton +>, poderá configurar (como uma lista separada por vírgulas de caracteres especiais), quais os padrões que são usados para eliminar os ficheiros irrelevantes. </para> + +<para +>Para além disso, pode optar por restringir a árvore de ficheiros para mostrar apenas os ficheiros que pertençam ao projecto carregado no momento. Isto poderá ser activado ou desactivado se carregar com o botão direito do rato no item de topo da árvore. </para> + +<figure id="screenshot-filetree" float="1"> +<title +>Uma Imagem da Árvore de Ficheiros</title> +<mediaobject> +<imageobject +><imagedata fileref="filetree.png"/></imageobject> +<textobject +><phrase +>Uma Imagem da Árvore de Ficheiros</phrase +></textobject> +</mediaobject> +</figure> + +</listitem> +</varlistentry> +<varlistentry> +<term +>Grupos de Ficheiros</term> +<listitem> +<para +>Esta mostra os ficheiros que pertençam ao projecto, agrupados pela sua extensão do nome do ficheiro. Como na árvore de ficheiros, poderá editar um ficheiro se carregar nele com o &LMB;. </para> + +<para +>Os grupos mostrados nesta área poderão ser configurados na janela <guibutton +>Vistas dos ficheiros</guibutton +> das <guimenuitem +>Opções do projecto</guimenuitem +>. Para personalizar a área de acordo com as suas necessidades, é útil compreender como é que os ficheiros são distribuídos nos grupos. Para cada ficheiro, o &tdevelop; percorre todos os grupos de cima para baixo. Em cada grupo, verifica se o nome do ficheiro corresponde a cada um dos padrões. Se houver uma correspondência, o ficheiro é mostrado neste grupo e a iteração é interrompida. Isto torna claro que os padrões mais gerais devem ser colocados abaixo dos mais específicos. Por exemplo, um asterisco para o grupo <guilabel +>Outros</guilabel +> deverá ser o último padrão. </para> + +</listitem> +</varlistentry> +</variablelist> + +</chapter +> <!-- file-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/getting-started.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/getting-started.docbook new file mode 100644 index 00000000000..6cb1c1e8202 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/getting-started.docbook @@ -0,0 +1,695 @@ +<chapter id="getting-started"> + +<!-- ToDo: +Put the AppWizard section at the beginning. +Before anything else, let the user generate +a hello program like this: +- assumes KDevelop is properly installed, + e.g. from a good Linux distribution + (list those that include KDevelop?) +- start KDevelop +- if settings are needed, accept default ones +- Project - New Project +- C++ - KDE - Simple KDE application +- name: hello, location: default (/home/user). Next +- Project Options: Leave as default. Next +- .h Template: Leave as default. Next +- .cpp Template: Leave as default. Finish +- Build - Execute Program (Yes to run automake & friends) +- Messages window appears. Wait until program is compiled. +- Finally, program pops up, saying "Hello World". + +After this, explore the KDevelop functionality +with the hello program as an example. + +Also: Links to detailed descriptions in the main part. +Volker Paul +--> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Introdução ao &tdevelop; — Uma Visita Guiada</title> + +<para +>Agora que você instalou o seu IDE &tdevelop;, como é que o vai utilizar bem? Dado que esta é uma aplicação complexa, a curva de aprendizagem pode ser um pouco inclinada, principalmente se não estiver já habituado a este tipo de ambientes de desenvolvimento integrados. </para> +<para +>Iremos tentar suavizar esta curva de aprendizagem um pouco, vendo os passos de criação de uma aplicação do KDE em C++. Como tal, iremos dar uma vista de olhos (focada) em: </para> +<simplelist> + <member +><link linkend="gettingstarted-overview" +>O que é visto à superfície do IDE do &tdevelop;.</link +></member> +<!-- <member +><link linkend="gettingstarted-configure" +>Some initial configuration steps.</link +></member +> --> + <member +><link linkend="gettingstarted-new" +>Como criar um novo projecto.</link +></member> +<!-- + <member +><link linkend="gettingstarted-edit" +>How to work with documents.</link +></member> + <member +><link linkend="gettingstarted-compile" +>How to compile the application in this project.</link +></member> + <member +><link linkend="gettingstarted-extend" +>How to add classes and other detail to your project.</link +></member> + <member +><link linkend="gettingstarted-debug" +>What to do to debug the application.</link +></member> + <member +><link linkend="gettingstarted-doc" +>Some basic tools to build program or user documentation.</link +></member> +--> +</simplelist> + +<sect1 id="gettingstarted-overview"> +<title +>Uma Vista Introdutória sobre o &tdevelop;</title> + +<sect2 id="gettingstarted-overview-basic"> +<title +>À Superfície</title> + +<para +>Quando você inicia o &tdevelop; pela primeira vez, irá obter uma visualização semelhante à seguinte: </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="empty-ide.png" format="PNG"/> + </imageobject> + <caption +><para +>A disposição inicial do &tdevelop; </para +></caption> + </mediaobject> +</screenshot> + +<formalpara> +<title +>Área de Trabalho e Páginas das Janelas de Ferramentas</title> +<para +>Neste caso inicial, o &tdevelop; usa o modo denominado por <link linkend="uimodes-survey" +>modo de interface de utilizador IDEAl</link +>. Um espaço de trabalho com o tamanho máximo possível fica rodeado pela esquerda, baixo e direita por uma série de botões que actuam de forma semelhante às páginas numa área dividida em páginas. Se carregar numa destas páginas, aparece então uma <emphasis +>janela de ferramentas</emphasis +> que lhe permitirá trabalhar numa tarefa específica. </para> +</formalpara> + +<formalpara> +<title +>Menu e Barras de Ferramentas</title> +<para +>No topo, existe o menu normal, seguido de várias filas de barras de ferramentas, estando algumas vazias inicialmente. Elas serão preenchidas, logo que exista um projecto aberto para o trabalho de facto. </para> +</formalpara> + +<formalpara> +<title +>Barra de Estado</title> +<para +>Finalmente, existe uma barra de estado no fundo da janela que mostra algumas informações curtas sobre as várias tarefas. </para> +</formalpara> +</sect2 +> <!-- gettingstarted-overview-basic --> + +<sect2 id="gettingstarted-overview-help"> +<title +>Como Obter Alguma Ajuda</title> + +<para +>Para além da <guimenu +>Ajuda</guimenu +>, que oferece algumas respostas a perguntas específicas, a barra de estado e dois tipos de dicas de ferramentas oferecem algumas informações rápidas. </para> + +<formalpara> +<title +>O Que Este Item do Menu Faz?</title> +<para +>Quando você coloca o cursor do rato sobre um item do menu, existe alguma informação curta que será apresentada na barra de estado. Embora isto, em alguns casos, repita apenas o nome da selecção, noutros poderá oferecer algumas informações adicionais sobre o intuito do comando do menu.</para> +</formalpara> + +<formalpara> +<title +>Qual é o Nome Deste Item?</title> +<para +>Em vários itens, irá aparecer uma dica com um nome curto da função, quando você colocar o cursor por cima dela durante alguns segundos. Isto é útil para uma orientação rápida na barra de ferramentas ou nas páginas de ferramentas no modo IDEAl, quando o IDE tiver sido configurado para mostrar os ícones apenas nestes botões.</para> +</formalpara> + +<formalpara> +<title +>O Que é Que Este Item Faz?</title> +<para +>Está disponível mais alguma informação, através da ajuda de dicas de ferramentas para muitos itens do IDE. Seleccione a opção <menuchoice +><guimenu +>Ajuda</guimenu +> <guimenuitem +>O Que É Isto?</guimenuitem +></menuchoice +> ou carregue em <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +>, podendo então com o cursor do ponto de interrogação seleccionar o item que deseja conhecer. Poderá também abrir qualquer menu desta forma e carregar num item específico do menu (tanto os activos como os desactivados, a cinzento) para ver se está disponível mais alguma informação.</para> +</formalpara> + +</sect2 +> <!-- gettingstarted-overview-help --> + +<sect2 id="gettingstarted-overview-menu"> +<title +>O que está nos menus</title> + +<para +>Existem dez menus seleccionáveis na barra de menu. A maioria deles fica preenchida por completo, logo que um projecto tenha sido aberto para trabalho, enquanto outros necessitam pelo menos de um documento aberto. Em resumo, eles irão permitir os seguintes tipos de acção. </para> + +<para +>Isto é apenas uma introdução. Para uma listagem mais detalhada dos menus e dos seus itens, veja a <link linkend="commands" +>Referência de Comandos</link +>.</para> + +<variablelist> + <varlistentry> + <term +><guimenu +>Ficheiro</guimenu +></term> + <listitem> + <formalpara +><title +>Acções Normais</title> + <para +>Este menu é bastante comum. Permite criar, abrir, gravar, imprimir e fechar ficheiros de documentos, assim como sair da aplicação &tdevelop;, como é normal acontecer.</para +></formalpara> + <formalpara +><title +>Reverter as Alterações</title> + <para +>Para além disso, permite reverter as alterações, carregando de novo o conteúdo do ficheiro de uma forma ordeira.</para +></formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Editar</guimenu +></term> + <listitem> + <para +>Este menu só é útil se estiver algum documento aberto.</para> + <formalpara +><title +>Acções Normais</title> + <para +>Oferece as acções normais para desfazer/refazer e para cortar/copiar/colar. Para além disso, permite seleccionar blocos de texto de várias formas.</para +></formalpara> + <formalpara +><title +>Procurar e Substituir</title> + <para +>Existe uma funcionalidade de procura muito poderosa disponível no menu <guimenu +>Editar</guimenu +>. Para além das acções normais de procura e substituição que se limitam ao documento actual, você poderá também conduzir uma procura e substituição a nível global. Isto permite trabalhar em todos os ficheiros do projecto de uma vez.</para +></formalpara> + <formalpara +><title +>Edição de Texto Avançada</title> + <para +>Existem possibilidades para formatar de novo o documento actual e para completar automaticamente alguns textos escritos parcialmente de várias formas.</para +></formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Ver</guimenu +></term> + <listitem> + <para +>Tal como no menu <guimenu +>Editar</guimenu +>, este menu só é útil se estiver algum projecto aberto de momento. Neste caso, ficarão disponíveis as seguintes acções (entre outras):</para> + <formalpara +><title +>Histórico de Navegação</title> + <para +>Avance e recue pelos documentos &etc; que tenha visitado.</para> + </formalpara> + <formalpara +><title +>Registo de Erros</title> + <para +>Navegue pelas linhas de código dos erros que foram encontrados no último processo de compilação/construção.</para> + </formalpara> + <formalpara +><title +>Gerir a Janela de Ferramentas</title> + <para +>Seleccione ou esconda as janelas de ferramentas ou as áreas acopláveis de ferramentas.</para> + </formalpara> + <formalpara +><title +>Acções Relacionadas com o Editor</title> + <para +>Alguns itens do menu <guimenu +>Ver</guimenu +> controlam a aparência e comportamento do editor que você usa. No caso do componente do &kate; (Editor de Texto Avançado Incorporado), ficarão disponíveis os seguintes controlos:</para> + </formalpara> + <itemizedlist> + <listitem +><para +>Controlar o comportamento de mudança de linha na janela do documento.</para +></listitem> + <listitem +><para +>Mostrar ou esconder vários dados nas janelas de documentos: os números de linhas, ícones e, adicionalmente, as marcações de favoritos na barra de posicionamento.</para +></listitem> + <listitem +><para +>Controlar a visibilidade das secções dobradas (temporariamente escondidas) num texto de código.</para +></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Projecto</guimenu +></term> + <listitem> + <para +>Todo o trabalho do &tdevelop; baseia-se em <emphasis +>projectos</emphasis +> que coleccionam basicamente os ficheiros de código, os ficheiros de gestão das compilações e outras informações numa pasta de projecto. Neste menu, poderá controlar o projecto a usar, as propriedades que tem e algumas acções de gestão. Em particular:</para> + <formalpara +><title +>Abrir um Projecto</title> + <para +>Permite criar projectos novos, abrir projectos existentes e importar os projectos de outros ambientes.</para> + </formalpara> + <formalpara +><title +>Opções do Projecto</title> + <para +>Permite definir um conjunto completo de propriedades diferentes do projecto.</para> + </formalpara> + <formalpara +><title +>Gestão de Classes</title> + <para +>Adiciona novas classes ao projecto e atravessa a árvore de heranças de uma classe.</para> + </formalpara> + <formalpara +><title +>Distribuir o Projecto</title> + <para +>Ajuda a distribuir os pacotes de distribuição do projecto.</para +></formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Compilar</guimenu +></term> + <listitem> + <para +>Este menu tem a ver com tudo o que respeita à compilação e documentação do projecto. Como tal, só é usado quando está um projecto aberto de momento. Neste caso, oferece as seguintes acções:</para> + <formalpara +><title +>Compilar, Editar as Ligações, Executar</title> + <para +>Permite compilar e gerar o executável do projecto completo ou de partes dele, assim como executar a aplicação a partir do IDE.</para> + </formalpara> + <formalpara +><title +>Preparar as Operações de Compilação</title> + <para +>Isto depende, de facto, do sistema de compilações que usa para este projecto. No caso dos projectos do 'automake', ele permite correr o <filename +>Makefile.cvs</filename +> e o <filename +>configure</filename +> por si só. Existe também a possibilidade de remover os ficheiros traduzidos do projecto em várias etapas de intensidade.</para> + </formalpara> + <formalpara +><title +>Instalar a Aplicação</title> + <para +>Permite instalar a aplicação, tanto nas pastas locais como nas pastas do sistema que só estão acessíveis para o utilizador 'root'.</para> + </formalpara> + <formalpara +><title +>Documentação da API</title> + <para +>Compila ou remove a documentação da API baseada no 'doxygen' do projecto, tal como está definido nas opções do projecto.</para> + </formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Depuração</guimenu +></term> + <listitem> + <para +>Ainda que este menu seja preenchido quando está activo um projecto, só é útil de facto se o projecto actual tiver sido compilado previamente com a informação de depuração (o que é definido basicamente na opção <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do Projecto..</guimenuitem +></menuchoice +>). Estão disponíveis as seguintes acções neste caso:</para> + <formalpara +><title +>Acções Normais do Depurador</title> + <para +>A primeira secção na opção <guimenu +>Depurar</guimenu +> oferece uma interface gráfica para o depurador simbólico GDB da &GNU;. Permite iniciar e parar a sua aplicação no depurador e percorrê-lo de várias formas.</para> + </formalpara> + <formalpara +><title +>Pontos de Paragem</title> + <para +>O &tdevelop; oferece várias formas de definir pontos de paragem no código da sua aplicação. Uma delas é através da opção do menu <guimenuitem +>Comutar o Ponto de Paragem</guimenuitem +>.</para> + </formalpara> + <formalpara +><title +>Depuração Avançada</title> + <para +>Outras opções do menu <guimenu +>Depurar</guimenu +> permitem uma análise mais sofisticada do programa. Use o <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +> para obter mais informações sobre o seu objectivo.</para> + </formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Janela</guimenu +></term> + <listitem> + <para +>Este menu é relativamente comum. Poderá seleccionar qualquer janela de documento aberta, assim como fechar aqui uma ou mais janelas. Poderá até seleccionar um conjunto de janelas de documentos para serem fechadas de uma vez.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Ferramentas</guimenu +></term> + <listitem> + <para +>O &tdevelop; é altamente personalizado. Poderá seleccionar um editor favorito para os seus documentos, assim como oferecer ferramentas externas e incorporadas para extender as capacidades básicas do IDE. O menu <guimenu +>Ferramentas</guimenu +> reflecte a maior parte desta configuração.</para> + <formalpara +><title +>Edição Avançada</title> + <para +>O conjunto superior dos itens do menu <guimenu +>Ferramentas</guimenu +> será oferecido pelo 'plugin' do editor em uso. Poderá seleccionar o seu editor favorito coma opção <menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> <guilabel +>Editor</guilabel +></menuchoice +>. Logo que tenha sido seleccionado um ficheiro de documento editável, a parte superior do menu <guimenu +>Ferramentas</guimenu +> irá oferecer comandos de edição avançados, específicos para a componente do editor em uso.</para> + </formalpara> + <formalpara +><title +>Tratamento da Parte Web</title> + <para +>No caso de a janela do documento activa conter uma página em HTML (⪚ mostrada numa selecção de <guilabel +>Documentação</guilabel +>), o menu <guimenu +>Ferramentas</guimenu +> irá mostrar itens de menu adicionais que oferecem várias formas de lidar com as páginas Web.</para> + </formalpara> + <formalpara +><title +>Outras Ferramentas</title> + <para +>Normalmente existirão um conjunto de outros itens, de acordo com as ferramentas disponíveis de momento. Use o <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +> para obter mais informações sobre os seus fins.</para> + </formalpara> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Configuração</guimenu +></term> + <listitem> + <para +>Este menu permite-lhe mostrar e esconder o menu, as barras de ferramentas e a barra de estado. Do mesmo modo, também poderá configurar os atalhos, barras de ferramentas, notificações, o editor e o comportamento geral do KDevelop.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term +><guimenu +>Ajuda</guimenu +></term> + <listitem> + <para +>Aqui poderá abrir este manual do KDevelop, ler a documentação do Qt, abrir as páginas do manual (no formato tradicional de manuais do UNIX) e as páginas do 'info' (o formato de manual da GNU), comunicar erros e obter algumas informações sobre a versão actual do seu KDevelop e os seus autores.</para> + </listitem> + </varlistentry> +</variablelist> + +</sect2 +> <!--gettingstarted-overview-menu--> + +</sect1 +> <!-- gettingstarted-overview --> + +<!-- +This is covered elsewhere, so unless someone convinces me that +it is useful to have it here as well, I will eventually delete it. Volker Paul. + +<sect1 id="gettingstarted-configure"> +<title +>A Bit of Configuration</title> + +<para +>(- to be written -)</para> + +</sect1 +> + + --> + +<sect1 id="gettingstarted-new"> +<title +>Como Iniciar um Projecto Novo — o &appwizard;</title> + +<para +>Isto serve para lhe mostrar quão simples é pôr o KDevelop a criar um programa executável para si.</para> + +<para +>O <link linkend="applicationwizard" +>&appwizard;</link +> poderá criar rapidamente um projecto para si, a partir de uma lista de modelos de projecto predefinidos. Tudo o que tem a fazer é seleccionar o tipo de projecto que deseja, como nomeá-lo e onde colocá-lo. </para> + +<para +>Seleccione Projecto - Novo Projecto. A janela para Criar um Novo Projecto irá aparecer. Assumir-se-á que deseja criar um projecto normal para o KDE. Como tal, seleccione o tipo: C++ - KDE - Aplicação Simples do KDE. Indique o nome, p.ex. 'olamundo'. A localização por omissão será '/home/utilizador/olamundo'. Se terminou a configuração nesta janela, carregue em Seguinte. Na próxima janela poderá definir algumas opções que trazem já alguns valores predefinidos úteis. Carregue em Seguinte. Finalmente, será apresentado o modelo dos ficheiros .h e dos .cpp. Mais uma vez, poderá deixá-los com os valores predefinidos e carregar em Terminar. Irá ver então a mensagem a avisar que o seu programa foi criado. </para> + +<para +>Para executar o seu programa, seleccione a opção Construir - Executar o Programa. Irá receber uma mensagem a avisar que o 'automake' & amigos necessitam de correr primeiro. Carregue nesse caso em OK. O seu programa será então compilado e executado, e uma janela do seu novo programa irá aparecer, a dizer "Olá Mundo". Poderá agora editar o seu programa e adicionar mais algumas funcionalidades úteis. </para> + +</sect1 +> <!-- gettingstarted-new --> + +<!-- +Again, this will be deleted, if nobody complains. + +<sect1 id="gettingstarted-edit"> +<title +>Working With Documents</title> + +<para +>(- to be written -)</para> + +<sect2 id="gettingstarted-edit-codecompletion"> +<title +>How to Automate Some Typing Tasks</title> + +<para +>(- to be written -)</para> + +</sect2 +> + +</sect1 +> + + +<sect1 id="gettingstarted-compile"> +<title +>How to Compile a Project</title> + +<para +>(- to be written -)</para> + +<sect2 id="gettingstarted-compile-messages"> +<title +>What the Messages Tell</title> + +<para +>(- to be written -)</para> + +</sect2 +> + +</sect1 +> + + +<sect1 id="gettingstarted-extend"> +<title +>How to Extend a Project — the &automanag;</title> + +<para +>(- to be written -)</para> + +<sect2 id="gettingstarted-extend-automake"> +<title +>A Short Look at the Automake Machinery</title> + +<para +>(- to be written -)</para> + +</sect2 +> + +<sect2 id="gettingstarted-extend-pics"> +<title +>How to Place Icons in a Separate Directory</title> + +<para +>(- to be written -)</para> + +</sect2 +> + +<sect2 id="gettingstarted-extend-class"> +<title +>How to Add New Classes</title> + +<para +>(- to be written -)</para> + +<caution +><para> +Be careful when you select your class file names. It is extremely difficult to change them later. +</para +></caution> + +</sect2 +> + +<sect2 id="gettingstarted-extend-subproject"> +<title +>What is in a Subproject?</title> + +<para +>(- to be written -)</para> + +<sect3 id="gettingstarted-extend-subproject-active"> +<title +>Concentrate on Your Work — the Active Target</title> + +<para +>(- to be written -)</para> + +</sect3 +> + +</sect2 +> + +<sect2 id="gettingstarted-extend-restructure"> +<title +>Some Steps to Restructure a Project</title> + +<para +>(- to be written -)</para> + +</sect2 +> + + +</sect1 +> + + + +<sect1 id="gettingstarted-debug"> +<title +>How to Debug</title> + +<para +>(- to be written -)</para> + +</sect1> + + +<sect1 id="gettingstarted-doc"> +<title +>A Note on Documentation</title> + +<para +>(- to be written -)</para> + +</sect1> +--> +</chapter> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/index.cache.bz2 b/tde-i18n-pt/docs/tdevelop/tdevelop/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..dbea84fc0f0 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/index.cache.bz2 diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/index.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/index.docbook new file mode 100644 index 00000000000..a37dbded4bb --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/index.docbook @@ -0,0 +1,675 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY tdevelop "<application +>KDevelop</application +>"> + <!ENTITY kdevrelease "3.1.0"> + <!ENTITY apache "<application +>Apache</application +>"> + <!ENTITY API "<acronym +>API</acronym +>"> + <!ENTITY appwizard "Application Wizard"> + <!ENTITY autoconf "<command +>autoconf</command +>"> + <!ENTITY automake "<command +>automake</command +>"> + <!ENTITY automanag "Automake Manager"> + <!ENTITY ctags "<command +>ctags</command +>"> + <!ENTITY CVS "<application +>CVS</application +>"> + <!ENTITY cvs "CVS"> + <!ENTITY doxygen "<application +>Doxygen</application +>"> + <!ENTITY doxywizard "<application +>doxywizard</application +>"> + <!ENTITY egrep "<command +>egrep</command +>"> + <!ENTITY grep "<command +>grep</command +>"> + <!ENTITY HTML "<acronym +>HTML</acronym +>"> + <!ENTITY IDE "<acronym +>IDE</acronym +>"> + <!ENTITY libtool "<command +>libtool</command +>"> + <!ENTITY nfwizard "New File Wizard"> + <!ENTITY python "<application +>Python</application +>"> + <!ENTITY perl "<application +>Perl</application +>"> + <!ENTITY php "<application +>PHP</application +>"> + <!ENTITY promanag "Project Manager"> + <!ENTITY qte "<application +>Qt/embedded</application +>"> + <!ENTITY ssh "<application +>ssh</application +>"> + <!-- chapters in separate docbook files --> + <!ENTITY survey-manual SYSTEM "survey-manual.docbook"> + <!ENTITY getting-started SYSTEM "getting-started.docbook"> + <!ENTITY tdevelop-survey SYSTEM "tdevelop-survey.docbook"> + <!ENTITY setup SYSTEM "setup.docbook"> + <!ENTITY applicationwizard SYSTEM "applicationwizard.docbook"> + <!ENTITY editing SYSTEM "editing.docbook"> + <!ENTITY file-browsers SYSTEM "file-browsers.docbook"> + <!ENTITY class-browsers SYSTEM "class-browsers.docbook"> + <!ENTITY documentation SYSTEM "documentation.docbook"> + <!ENTITY project-management SYSTEM "project-management.docbook"> + <!ENTITY adv-build-management SYSTEM "adv-build-management.docbook"> + <!ENTITY debugger SYSTEM "debugger.docbook"> + <!ENTITY cvs-chapter SYSTEM "cvs.docbook"> + <!ENTITY external-progs SYSTEM "external-progs.docbook"> + <!ENTITY scripts SYSTEM "scripts.docbook"> + <!ENTITY credits SYSTEM "credits.docbook"> + <!ENTITY tdevelop-scripting SYSTEM "tdevelop-scripting.docbook"> + <!-- appendices in separate docbook files --> + <!ENTITY tdevelop-install SYSTEM "tdevelop-install.docbook"> + <!ENTITY nutshell SYSTEM "nutshell.docbook"> + <!ENTITY unixdev SYSTEM "unixdev.docbook"> + <!ENTITY app-menu SYSTEM "app-menu.docbook"> + <!ENTITY app-shortcuts SYSTEM "app-shortcuts.docbook"> + <!ENTITY app-files SYSTEM "app-files.docbook"> + <!ENTITY plugin-tools SYSTEM "plugin-tools.docbook"> + <!ENTITY app-uimodes-examples SYSTEM "app-uimodes-examples.docbook"> + <!ENTITY commands SYSTEM "commands.docbook"> + <!ENTITY app-misc-info SYSTEM "app-misc-info.docbook"> + <!ENTITY app-changelog SYSTEM "app-changelog.docbook"> + <!ENTITY app-bibliography SYSTEM "app-bibliography.docbook"> + + + <!-- book related entities --> + <!ENTITY kappname "&tdevelop;"> + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Portuguese "INCLUDE" +> <!-- change language only here --> +]> + +<!-- +NOTE: +Entries which require special treatment are marked with comments starting with '###'. They should be visited on a regular basis. +--> + +<book lang="&language;"> + +<bookinfo> + <title +>Manual do Utilizador do &tdevelop;</title> + + <date +>2004-11-13</date> + <releaseinfo +>&kdevrelease;</releaseinfo> + + <authorgroup> + <author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +> <address +><email +>bernd@tdevelop.org</email +></address> + </affiliation> + </author> + + <author +><firstname +>Caleb</firstname +> <surname +>Tennis</surname +> <affiliation +> <address +><email +>caleb@aei-tech.com</email +></address> + </affiliation> + </author> + + <author +><firstname +>Bernd</firstname +> <surname +>Pol</surname +> <affiliation +> <address +><email +>bernd.pol@online.de</email +></address> + </affiliation> + </author> + + <author +><firstname +>Volker</firstname +> <surname +>Paul</surname +> <affiliation +> <address +><email +>volker.paul@tiscali.de</email +></address> + </affiliation> + </author> + </authorgroup> + + <copyright> + <year +>2002</year> + <holder +>Bernd Gehrmann</holder> + </copyright> + <copyright> + <year +>2002</year> + <holder +>Caleb Tennis</holder> + </copyright> + <copyright> + <year +>2004</year> + <holder +>Bernd Pol</holder> + </copyright> + <copyright> + <year +>2005</year> + <holder +>Volker Paul</holder> + </copyright> + + <!--ROLES_OF_TRANSLATORS--> + + <legalnotice +>&FDLNotice;</legalnotice> + + <abstract> + <para +>O &tdevelop; é um Ambiente de Desenvolvimento Integrado para ser usado numa grande variedade de tarefas de programação.</para> + </abstract> + + <keywordset> + <keyword +>KDE</keyword> + <keyword +>KDevelop</keyword> + <keyword +>IDE</keyword> + <keyword +>desenvolvimento</keyword> + <keyword +>programação</keyword> + </keywordset> + +</bookinfo> + +<!-- ====================================================================== --> + +&survey-manual; +&getting-started; <!-- "Getting Started" --> +&tdevelop-survey; <!-- "Overview of &tdevelop; Features" --> +&setup; <!-- "Configuring &tdevelop;" --> +&applicationwizard; <!-- "Getting Started — the &appwizard;" --> +&editing; +&file-browsers; +&class-browsers; +&documentation; +&project-management; +&adv-build-management; +&debugger; +&cvs-chapter; +<!--&tdevelop-scripting;--> <!-- "Scripting &tdevelop;" --> +&credits; + +<!-- ====================================================================== --> +<!-- External Appendices --> + +&tdevelop-install; <!-- "Installing &tdevelop;" --> +&nutshell; +&unixdev; <!-- "Development on &UNIX;" --> +<!-- +&app-menu; +&app-shortcuts; +--> +&app-files; +&plugin-tools; +&app-uimodes-examples; +&commands; +&app-misc-info; +&app-changelog; + +<!-- ====================================================================== --> +<!-- ### Questionable, probably not IDE-specific enough. Check later again. +<chapter id="python"> +<title +>Python</title> + +<para +>... +</para> + +</chapter +> --> <!-- python --> + +<!-- ====================================================================== --> +<!-- ### Questionable, probably not IDE-specific enough. Check later again. +<chapter id="php"> +<title +>PHP</title> + +<para +>... +</para> +</chapter +> --> <!-- php --> + +<!-- ====================================================================== --> + +<!-- Note (bp, 2003-09-04): <bibliography +> should remain the last appendix --> +<!-- section because of a (meinproc???) bug which sends the Next selection --> +<!-- in circles back to it. --> +<!-- (LWatts: 2005-04-30) This is probably due to a missing id= somewhere, --> +<!-- so I've added a couple in hopes it goes away. --> + +<appendix id="app-bibliography"> +<title +>Bibliografia</title> + +<para +>(... ainda não escrito ...)</para> + +<bibliography id="bibliography"> + +<biblioentry> +<title +><ulink url="info://make/Top" +>GNU Make Manual</ulink +></title> +<authorgroup> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +<author +><firstname +>Roland</firstname +><surname +>McGrath</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://automake/Top" +>GNU Automake</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Tromey</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://autoconf/Top" +>GNU Autoconf</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Ben</firstname +><surname +>Elliston</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://gcc/Top" +>Using the GNU Compiler Collection</ulink +></title> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://libtool/Top" +>GNU Libtool</ulink +></title> +<authorgroup> +<author +><firstname +>Gordon</firstname +><surname +>Matzigkeit</surname +></author> +<author +><firstname +>Alexandre</firstname +><surname +>Oliva</surname +></author> +<author +><firstname +>Thomas</firstname +><surname +>Tanner</surname +></author> +<author +><firstname +>Gary V.</firstname +><surname +>Vaughan</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +>GNU Autoconf, Automake, and Libtool</title> +<edition +>1st edition</edition> +<pubdate +>October 2000</pubdate> +<authorgroup> +<author +><firstname +>Gary V.</firstname +><surname +>Vaughan</surname +></author> +<author +><firstname +>Ben</firstname +><surname +>Elliston</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Tromey</surname +></author> +<author +><firstname +>Ian Lance</firstname +><surname +>Taylor</surname +></author> +</authorgroup> +<publisher +><publishername +>New Riders Publishing</publishername +></publisher> +<isbn +>ISBN 1578701902</isbn> +</biblioentry> + + +<biblioentry> +<title +>Advanced Programming in the &UNIX; Environment</title> +<edition +>1st edition</edition> +<pubdate +>June 1992</pubdate> +<author +><firstname +>W. Richard</firstname +><surname +>Stevens</surname +></author> +<publisher +><publishername +>Addison-Wesley Pub Co</publishername +></publisher> +<isbn +>ISBN 0201563177</isbn> +</biblioentry> + +<biblioentry> +<title +>Thinking in C++, Volume 1: Introduction to Standard C++</title> +<edition +>2nd Edition</edition> +<pubdate +>April 15, 2000</pubdate> +<author +><firstname +>Bruce</firstname +><surname +>Eckel</surname +></author> +<publisher +><publishername +>Prentice Hall</publishername +></publisher> +<isbn +>ISBN 0139798099</isbn> +</biblioentry> + +<biblioentry> +<title +>Open Source Development with CVS</title> +<edition +>2nd Edition</edition> +<pubdate +>October 12, 2001</pubdate> +<authorgroup> +<author +><firstname +>Karl</firstname +><surname +>Fogel</surname +></author> +<author +><firstname +>Moshe</firstname +><surname +>Bar</surname +></author> +</authorgroup> +<publisher +><publishername +>The Coriolis Group</publishername +></publisher> +<isbn +>ISBN 158880173X</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming PHP</title> +<edition +>1st edition</edition> +<pubdate +>March 2002</pubdate> +<authorgroup> +<author +><firstname +>Rasmus</firstname +><surname +>Lerdorf</surname +></author> +<author +><firstname +>Kevin</firstname +><surname +>Tatroe</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 1565926102</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming Python</title> +<edition +>2nd Edition</edition> +<pubdate +>March 2001</pubdate> +<author +><firstname +>Mark</firstname +><surname +>Lutz</surname +></author> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596000855</isbn> +</biblioentry> + +<biblioentry> +<title +>Gui Programming With Python : Using the Qt Toolkit</title> +<edition +>Bk&Cd-r edition</edition> +<pubdate +>January 2002</pubdate> +<author +><firstname +>Boudewijn</firstname +><surname +>Rempt</surname +></author> +<publisher +><publishername +>Opendocs Llc</publishername +></publisher> +<isbn +>ISBN 0970033044</isbn> +</biblioentry> + +<biblioentry> +<title +>Programming Perl</title> +<subtitle +>The Camel book</subtitle> +<edition +>3rd Edition</edition> +<pubdate +>July 2000</pubdate> +<authorgroup> +<author +><firstname +>Larry</firstname +><surname +>Wall</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Christiansen</surname +></author> +<author +><firstname +>Jon</firstname +><surname +>Orwant</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596000278</isbn> +</biblioentry> + +<biblioentry> +<title +>Learning Perl</title> +<subtitle +>The Lama book</subtitle> +<edition +>3rd Edition</edition> +<pubdate +>July 15, 2001</pubdate> +<authorgroup> +<author +><firstname +>Randal L.</firstname +><surname +>Schwartz</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Phoenix</surname +></author> +</authorgroup> +<publisher +><publishername +>O'Reilly & Associates</publishername +></publisher> +<isbn +>ISBN 0596001320</isbn> +</biblioentry> + +</bibliography> +<!-- --> + +</appendix +> <!-- app-bibliography --> + +<!-- ====================================================================== --> + +&documentation.index; + +</book> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/nutshell.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/nutshell.docbook new file mode 100644 index 00000000000..d37b15e17db --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/nutshell.docbook @@ -0,0 +1,370 @@ +<appendix id="nutshell"> +<title +>De Algibeira — Dicas e Truques</title> + +<!-- Traditionally, most of this stuff will have been put into a FAQ section. It is more useful, however, to put it at the very start of a manual, as this is the place the (inexperienced) user first looks for. + +I disagree. What is useful for a quick start, should go in "Getting started". +Troubleshooting hints go in the appendix or a FAQ. Volker Paul. + +This chapter is meant to provide short hints and tips together with (mandatory) navigation links. +There should be an additional FAQ section near the end nevertheless which contains more general stuff not directly related to navigating the manual. --> + +<para +>A informação deste capítulo pretende ser uma referência rápida para uma introdução ou se você (momentaneamente) se esqueceu de algum conceito básico. Existem também dicas rápidas para saber como resolver alguns problemas comuns ao trabalhar com o &tdevelop;. </para> +<para +>Se quiser mais informações sobre determinado tópico, basta seguir a ligação no título que inicia esse aviso. </para> +<para +>Está disponível alguma informação sobre os seguintes tópicos: </para> +<simplelist> + <member +><link linkend="nutshellitem-look-and-feel" +>Aparência e Comportamento</link +></member> + <member +><link linkend="nutshellitem-projects" +>Projectos</link +></member> + <member +><link linkend="nutshellitem-compilation" +>Compilação</link +></member> + <member +><link linkend="nutshellitem-automake" +>&automanag;</link +></member> + <member +><link linkend="nutshellitem-compilemake" +>Problemas na Compilação/Make</link +></member> + <member +><link linkend="nutshellitem-others" +>Outros Tópicos</link +></member> +</simplelist> + +<variablelist id="nutshellitem-look-and-feel"> +<title +>Aparência e Comportamento</title> + +<varlistentry> +<term id="nutshell-ideal-tabs" +><link linkend="setup-ui-toolview" +>Forçar páginas de ferramentas mais pequenas no Modo IDEAl</link +></term> +<listitem> +<para +>Por omissão, o &tdevelop; começa com páginas de ferramentas grandes baseadas em texto, em torno da área de trabalho. Poderá alterar esta aparência para ⪚ poupar espaço na janela de configuração do &tdevelop; (<menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> <guimenuitem +>Interface do Utilizador</guimenuitem +></menuchoice +>).</para> +<para +>Se você usar uma versão mais antiga do &tdevelop; 3, esta janela de configuração poderá não estar disponível. Para mudar a visualização das páginas de ferramentas, coloque um item <option +>MDIStyle</option +> da marca <option +>[UI]</option +> do seu ficheiro de configuração <filename +>$KDEHOME/share/config/tdeveloprc</filename +>, como se segue:</para> + +<simplelist> +<member +><option +>MDIStyle=0</option +>: apenas os ícones</member> +<member +><option +>MDIStyle=1</option +>: apenas o texto (por omissão)</member> +<!--<member +><computeroutput +>MDIStyle=2</computeroutput +>: icons only on smaller tabs (not very useful)</member +>--> +<member +><option +>MDIStyle=3</option +>: ícones e texto</member> +</simplelist> +</listitem> +</varlistentry> + +<varlistentry +> <!-- ### remove this entry when the bug is repaired --> +<term id="nutshell-weird-style" +>Caracteres coloridos e/ou estilo de visualização esquisito</term> +<listitem> +<para +>Se reparar em letras coloridas por todo o lado (&ie; nas páginas, barras de ferramentas, etc.) e a janela do &tdevelop; parecer estar a usar um estilo de visualização errado, isto poderá ajudar:</para> + +<itemizedlist> +<listitem +><para +>No seu ficheiro de configuração <filename +>$<envar +>KDEHOME</envar +>/share/config/tdeveloprc</filename +>, descubra a linha que contém <quote +><computeroutput +>Style=Checked</computeroutput +></quote +> e remova-a. Depois, reinicie o &tdevelop;. </para> +</listitem> +</itemizedlist> +<para +>(Este comportamento acontece às vezes, depois de ter carregado num ficheiro UI de um dos navegadores de ficheiros e o &tdevelop; conseguiu de facto abrir o <application +>KUIViewer</application +> para mostrar a &GUI; que foi produzido a partir deste ficheiro.)</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-full-screen" +><link linkend="maximize-workspace" +>Modo de ecrã completo</link +></term> +<listitem> +<para +>Seleccione a opção <menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Modo de Ecrã Completo</guimenuitem +></menuchoice +> dos menus ou carregue em <keycombo +>&Ctrl;&Shift;<keycap +>F</keycap +></keycombo +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-hide-menu" +><link linkend="maximize-workspace" +>Esconder/mostrar o menu</link +></term> +<listitem> +<para +>Para esconder o menu, seleccione a opção <menuchoice +><guimenu +>Configuração</guimenu +><guimenuitem +>Mostrar o Menu</guimenuitem +></menuchoice +> dos menus ou carregue em <keycombo +>&Ctrl;<keycap +>M</keycap +></keycombo +>. Para voltar a mostrar o menu, só está disponível o <keycombo +>&Ctrl;<keycap +>M</keycap +> </keycombo +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title id="nutshellitem-projects" +>Projectos</title> +<varlistentry> +<term +><link linkend="new-projects" +>Criar um Novo Projecto</link +></term> +<listitem> +<para +>O <menuchoice +><guimenu +>Projecto</guimenu +><guimenuitem +>Novo Projecto...</guimenuitem +></menuchoice +> irá iniciar o <link linkend="applicationwizard" +>&appwizard;</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-new-custom-project" +>Criar um projecto personalizado</term> +<listitem> +<para +>Não existe qualquer forma directa de criar um projecto personalizado (&ie; um projecto que usa as suas próprias Makefiles). Use a opção <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Importar um Projecto Existente</guimenuitem +></menuchoice +> em alternativa. Lembre-se de definir o <guilabel +>Tipo de Projecto</guilabel +> apropriado, indicado por um <quote +>(Makefiles personalizadas)</quote +>, na janela.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-project-options" +>Usar as opções do projecto cedo</term> +<listitem> +<para +>Sempre que iniciar um projecto novo, não se esqueça de configurar o <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do Projecto...</guimenuitem +></menuchoice +> de acordo com a sua necessidade.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilation"> +<title +>Compilação</title> +<varlistentry> +<term id="nutshell-compilemsg-detail" +><link +linkend="setup-main-compile" +>Falta algum detalhe nas mensagens de compilação</link +></term> +<listitem> +<para +>Se, durante as compilações, notar que falta alguma informação valiosa na <guilabel +>Janela de Resultado das Mensagens</guilabel +>, poderá ser devido ao facto de o nível de detalhe das mensagens estar demasiado baixo. Carregue com o &RMB; na janela e seleccione outro nível de detalhe do menu de contexto. </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-automake"> +<title +><link linkend="automake-manager" +>&automanag;</link +></title> + +<varlistentry> +<term +>Criar ficheiros novos num projecto</term> +<listitem> +<para +>Seleccione o sub-projecto na metade superior do &automanag;, depois carregue com o &RMB; na metade inferior nos títulos dos grupos a que deseja adicionar os ficheiros e seleccione a opção <guimenuitem +>Criar um Novo Ficheiro...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry id="nutshell-add-project-file"> +<term +>Adicionar ficheiros existentes a um projecto</term> +<listitem> +<para +>Seleccione o sub-projecto na metade superior do &automanag;, depois carregue com o &RMB; na metade inferior nos títulos dos grupos a que deseja adicionar os ficheiros e seleccione a opção <guimenuitem +>Adicionar os Ficheiros Existentes...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Remover um ficheiro de um projecto</term> +<listitem> +<para +>Seleccione o sub-projecto na metade superior do &automanag;, depois carregue com o &RMB; na metade inferior nos títulos dos grupos de que deseja remover os ficheiros e seleccione a opção <guimenuitem +>Remover</guimenuitem +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilemake"> +<title +>Problemas na Compilação/Make</title> +<varlistentry> +<term id="nutshell-builddirproblems" +><link +linkend="defaultbuild-warning" +>O projecto não consegue compilar de novo após mudar de/para o alvo por omissão</link +></term> +<listitem> +<para +>Existe um problema com o sistema do &automake;/&autoconf;. Se a opção <menuchoice +> <guimenu +>Projecto</guimenu +> <guimenuitem +>Configuração da Compilação</guimenuitem +></menuchoice +> oferecer para selecção as opções de três pastas de compilação: <guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +> e <guimenuitem +>debug</guimenuitem +>, tente-se manter sempre <emphasis +>ou</emphasis +> no 'default' <emphasis +>ou</emphasis +> nos alvos 'debug'/'optimized'.</para> +<itemizedlist> +<listitem> +<para +>Logo que tenha configurado o seu projecto com o 'default', nunca mais irá compilar com o 'debug' ou o 'optimized'.</para> +</listitem> +<listitem> +<para +>Logo que tenha configurado o seu projecto com o 'debug' ou o 'optimized', nunca mais irá compilar com o 'default'.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-autoconf-problem" +>Erro <quote +>Wrong <command +>autoconf</command +> version</quote +> &etc;</term> +<listitem> +<para +>Existem várias mensagens de erro relacionadas com as versões demasiado antigas do <application +>autoconf</application +> &etc; que impedem que o <command +>configure</command +> funcione convenientemente. Execute o <command +>autoreconf</command +> na árvore de pastas onde estão os ficheiros <filename +>configure.in</filename +> em questão. Este comando irá tentar actualizar a informação dos ficheiros do Sistema de Compilação da &GNU;. Veja o <command +>man autoreconf</command +> para mais informações.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-others"> +<title +>Outros Tópicos</title> +<varlistentry> +<term id="nutshell-others-files" +><link linkend="app-files" +>Ficheiros de Configuração usados pelo &tdevelop;</link +></term> +<listitem> +<para +>Normalmente não terá de se preocupar, mas isto é muito útil de saber, no caso de algo correr mal com a sua configuração.</para> +</listitem +> +</varlistentry> +</variablelist> + +</appendix +> <!-- nutshell --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/plugin-tools.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/plugin-tools.docbook new file mode 100644 index 00000000000..24d34ec457c --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/plugin-tools.docbook @@ -0,0 +1,731 @@ +<appendix id="plugin-tools"> +<title +>Ferramentas em 'Plugins'</title> + +<indexterm zone="plugin-tools"> + <primary +>'plugins'</primary +></indexterm> + +<para +>O &tdevelop; contém uma grande quantidade de pequenas ferramentas que o ajudam a desempenhar certas tarefas. A maioria delas está implementada sob a forma de 'plugins'. Isto significa que, se não necessitar de um 'plugin', podê-lo-á desactivar.</para> +<para +>Isto também significa que, se está à procura de uma determinada funcionalidade que deveria lá estar e não está, então é porque provavelmente está implementada num 'plugin' e este está desactivado. Por exemplo, no menu de ficheiros, existe um menu de Abertura Rápida, se estiver activo na janela de Projecto - Opções do Projecto. </para> + +<para +>Tecnicamente, os 'plugins' são baseados na classe KDevPlugin que está definida em 'lib/interfaces/kdevplugin.h'. O seguinte é retirado de um comentário de lá (devidamente traduzida).</para> + +<para +>O KDevPlugin é a classe de base para todos os 'plugins' do KDevelop. Um 'plugin' é um componente que é carregado na plataforma do KDevelop no início ou a pedido. Um 'plugin' tem um âmbito que poderá ser: <itemizedlist> +<listitem +><simpara +>Nuclear</simpara +></listitem> +<listitem +><simpara +>Global</simpara +></listitem> +<listitem +><simpara +>Projecto</simpara +></listitem> +</itemizedlist> +</para> + +<para +>Os 'plugins' nucleares são 'plugins' globais que oferecem alguma funcionalidade "nuclear" e, como tal, não são seleccionados pelo utilizador, nas páginas de configuração dos 'plugins'.</para> + +<para +>Os 'plugins' globais são 'plugins' que só necessitam da plataforma para serem carregados e não operam na interface KDevProject e/ou não usam a informação ao nível do projecto. Por exemplo, o 'plugin' 'uimode' permite a um programador escolher a interface do utilizador que deseja usar. </para> + +<para +>Os 'plugins' do projecto necessitam de ter um projecto carregado e são normalmente carregados/terminados em conjunto com o projecto. Se um 'plugin' funcionar com informação relacionada com o projecto, então é um 'plugin' de projecto. O Gestor do Automake, por exemplo, só necessita de estar activo quando estiver carregado um projecto baseado no Automake. </para> + +<para +>Como foi dito acima, os 'plugins' do núcleo não poderão ser desactivados. Os 'plugins' globais podem ser activados/desactivados em <menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +></menuchoice +> em <guibutton +>'Plugins'</guibutton +>. Os 'plugins' do projecto podem ser activados/desactivados na opção <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do Projecto...</guimenuitem +></menuchoice +> em <guibutton +>'Plugins'</guibutton +>. Os 'plugins' activos poderão ter vários efeitos no KDevelop. Dependendo da sua função, poderão adicionar menus extra, opções extra, botões extra na barra de ferramentas, etc. </para> + +<para +>Os 'plugins' que estão desactivados não enchem os seus menus e não são carregados na memória. </para> + + +<para +>A lista de 'plugins' que se segue é gerada por um pequeno programa ('listplugins.sh'), criado por Volker Paul. Todos os 'plugins' têm um ficheiro .desktop cujo nome e comentários estão escritos. Se, no que se segue, este comentários não forem muito úteis, foi porque os autores dos 'plugins' os fizeram assim.</para> +<para +>Os 'plugins' estão organizados por âmbito (Nuclear, Global, Projecto).</para> + +<para +>Âmbito: Nuclear</para> +<itemizedlist> +<listitem +><formalpara id="KDevAppWizard"> +<title +>Assistente de Aplicações</title> +<para +>Assistente de Aplicações</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDiff"> +<title +>Visualizador de Diferenças</title> +<para +>Visualizador de Diferenças</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileCreate"> +<title +>Criação de Ficheiros</title> +<para +>Criação de Ficheiros</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFullScreen"> +<title +>Ecrã Completo</title> +<para +>Ecrã Completo</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTipOfDay"> +<title +>Dica do Dia</title> +<para +>Dica do Dia</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevUIChooser"> +<title +>Selecção da Interface do Utilizador</title> +<para +>Oferece uma janela para a selecção do modo de interface do utilizador.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevVCSManager"> +<title +>Gestor de SCV</title> +<para +>Gestor do Sistema de Controlo de Versões </para +></formalpara +></listitem> +</itemizedlist> + +<para +>Âmbito: Global</para> +<itemizedlist> +<listitem +><formalpara id="KDevAbbrev"> +<title +>Expansão de Abreviaturas</title> +<para +>Oferece o suporte para as abreviaturas personalizadas - as palavras pequenas que se expandem em estruturas de código comuns necessárias.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDocumentation"> +<title +>Documentação</title> +<para +>O 'plugin' de Documentação oferece a navegação e pesquisa na documentação local e 'online', com o suporte para vários sistemas de documentação.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevfilelist"> +<title +>Lista de Ficheiros</title> +<para +>Oferece uma lista com todos os ficheiros abertos. (É útil quando a barra de páginas não é suficientemente larga.)</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileSelector"> +<title +>Selector de Ficheiros</title> +<para +>Um utilitário de navegação de ficheiros transparente na rede e poderoso.</para +></formalpara +></listitem> +<listitem +><formalpara> +<title +>Filtragem e Inserção da Linha de Comandos</title> +<para +>Oferece uma forma de manipular o texto do editor com base em ferramentas da linha de comandos. Aparece no menu Ferramentas.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevGrepView"> +<title +>Interface do Grep</title> +<para +>Integra o "find|grep" no KDevelop - permite uma procura rápida em vários ficheiros, com padrões e expressões regulares.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevKonsoleView"> +<title +>Konsole Embebido</title> +<para +>Este 'plugin' dá ao KDevelop um Konsole incorporado, para poder aceder fácil e rapidamente à linha de comandos.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevOpenWith"> +<title +>Adição do Menu "Abrir com"</title> +<para +>Este 'plugin' oferece alternativas adicionais para "abrir" nos vários menus de contexto do KDevelop.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevPartExplorer"> +<title +>Ferramenta de Exploração de Componentes</title> +<para +>Uma ferramenta gráfica para efectuar pesquisas do tipo do KTrader acerca dos serviços registados</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevRegexpTest"> +<title +>Teste de Expressões Regulares</title> +<para +>Uma ferramenta para desenhar e testar expressões regulares, usando as sintaxes de expressões regulares normais.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevReplace"> +<title +>Componente de Substituição</title> +<para +>Este 'plugin' é uma ferramenta interactiva de "Procurar e Substituir" ao nível do projecto. Faça a pesquisa com a correspondência por texto ou expressões regulares, e seleccione as substituições a fazer, numa antevisão, antes de a acção terminar. Logo que esteja carregada, aparece no menu Editar.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevscripting"> +<title +>Programação</title> +<para +>O 'plugin' de Programação oferece capacidades de programação em KScript à aplicação KDevelop</para +></formalpara +></listitem> +<listitem +><formalpara id="Code_Snippets"> +<title +>Excertos de Código</title> +<para +>Este 'plugin' permite-lhe gravar excertos de código e adicioná-los ao seu código</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTextTools"> +<title +>Estrutura do Texto</title> +<para +>Oferece uma vista estrutural e de navegação para os ficheiros em HTML e TEX</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTools"> +<title +>Adição ao Menu de Ferramentas</title> +<para +>Este 'plugin' oferece uma forma simples para adicionar aplicações externas ao menu e às barras de Ferramentas.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevvalgrind"> +<title +>Interface para o Valgrind</title> +<para +>O Valgrind é uma ferramenta que o ajuda a detectar problemas de gestão de memória nos programas. Veja em http://developer.kde.org/~sewardj/</para +></formalpara +></listitem> +</itemizedlist> + +<para +>Âmbito: Projecto</para> +<itemizedlist> +<listitem +><formalpara id="KDevannotation"> +<title +>'Plugin' de anotações</title> +<para +>Descrição da anotação</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevAStyle"> +<title +>Formatador do Código-Fonte</title> +<para +>Um 'plugin' para formatar o código-fonte, de acordo com um conjunto bem definido de regras. Quando for carregado, está presente no menu Ferramentas.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevBookmarks"> +<title +>Favoritos</title> +<para +>Um 'plugin' que oferece a navegação e a apresentação de favoritos de código activos, mantendo-os persistentes entre sessões.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevClassView"> +<title +>Área de Classes</title> +<para +>Este 'plugin' mostra uma vista gráfica sobre todas as classes do projecto, completas com os métodos e atributos, oferecendo ainda uma forma de navegar directamente pelo código.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevcopyto"> +<title +>Copiar Para</title> +<para +>Um 'plugin' de envio de ficheiros simples. Faz uma cópia de ficheiros através de qualquer protocolo suportado pelo KIO.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevCTags2"> +<title +>Interface para o CTags</title> +<para +>O CTags é uma ferramenta para navegar no código, com o suporte para várias línguas. Quando for carregado, oferece um menu para procurar as declarações/definições dos tipos, assim como uma janela de pesquisa. Para mais informações, vá a http://ctags.sourceforge.net/</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevdistpart"> +<title +>Suporte de Empacotamento Final</title> +<para +>Ajuda na criação de pacotes e na publicação do projecto final. Só é suportado o formato de pacotes RPM, por agora.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDoxygen"> +<title +>Suporte para Doxygen</title> +<para +>O 'plugin' do 'doxygen' oferece uma forma de indicar e controlar a geração da documentação para um projecto, com base no conteúdo do código-fonte. Deverá ter o 'doxygen' instalado para poder usar isto. Para mais informações, vá a http://www.doxygen.org</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevQuickOpen"> +<title +>Abertura Rápida</title> +<para +>Oferece uma forma eficiente de procurar/abrir ficheiros, classes e métodos num projecto grande. Aparece nos menus Ficheiro e Ferramentas, quando estiver carregado.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevSecurity"> +<title +>Verificação de Segurança</title> +<para +>Verificação da segurança do código</para +></formalpara +></listitem> +</itemizedlist> +<para +>Até agora, foi a lista de 'plugins' gerada.</para> + + +<table id="table-project-parts"> +<title +>'Plugins' de Gestão de Projectos do &tdevelop;</title> +<tgroup cols="2" +><tbody> +<row> + <entry +>antproject</entry> + <entry +>Gestor de Projectos do ANT (aplicações de &Java;)</entry> +</row> +<row> + <entry +>autoproject</entry> + <entry +>Gestor de Projectos do Automake</entry> +</row> +<row> + <entry +>customproject</entry> + <entry +>Gestor de Projectos Personalizados</entry> +</row> +<row> + <entry +>trollproject</entry> + <entry +>Gestor de Projectos baseado no QMake</entry> +</row> +</tbody +></tgroup> +</table> +<para +>Os 'plugin' acima indicados estão de momento (Maio de 2005) vazios. Talvez o suporte para a gestão de projectos seja implementado como 'plugins' no futuro.</para> + + +<table> +<title +>'Plugins' de Suporte de Linguagens no &tdevelop;</title> +<tgroup cols="2"> +<tbody> +<row +><entry +>cppsupport</entry +><entry +>Suporte para C/C++</entry +></row> +<row +><entry +>fortransupport</entry +><entry +>Suporte para Fortran</entry +></row> +<row +><entry +>javasupport</entry +><entry +>Suporte para &Java;</entry +></row> +<row +><entry +>perlsupport</entry +><entry +>Suporte para Perl</entry +></row> +<row +><entry +>phpsupport</entry +><entry +>Suporte para PHP</entry +></row> +<row +><entry +>pythonsupport</entry +><entry +>Suporte para Python</entry +></row> +</tbody +></tgroup> +</table> + + +<para +>No que se segue, alguns dos 'plugins' serão discutidos em detalhe.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>O 'plugin' <command +>abbrev</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>abbrev</command +></primary +></indexterm> + +<para +>Este 'plugin' expande as abreviaturas em excertos de código usados com frequência. É activado ao carregar em <keycombo +><keycap +>Ctrl</keycap +> <keycap +>Espaço</keycap +></keycombo +>. Por exemplo, quando indicar <literal +>"ife"</literal +> num ficheiro de C++ no editor e carregar em <keycombo +><keycap +>Ctrl</keycap +><keycap +>Espaço</keycap +></keycombo +>, irá obter um modelo de código <literal +>if-else</literal +>, poupando assim algum texto escrito manualmente. O conjunto de abreviaturas depende da linguagem de programação do ficheiro editado. Por exemplo, para o PHP, irá estar obviamente interessado noutros modelos de código que não os do &Java;. </para> +</formalpara> + +<para +>O conjunto de modelos de código é configurável. Se o 'plugin' estiver activo, poderá ver os que estão disponíveis na opção <menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +></menuchoice +>, em <guibutton +>Abreviaturas</guibutton +>. </para> +</listitem> + +<listitem> +<formalpara id="KDevFilter"> +<title +>O 'plugin' <command +>filter</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>filtro</command +></primary +></indexterm> + +<para +>Este oferece duas funcionalidades. Se seleccionar a opção <menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Executar o comando</guimenuitem +></menuchoice +>, poderá indicar um comando da consola. O resultado deste comando é introduzido na janela de edição, quando carregar no botão <guibutton +>Iniciar</guibutton +>. </para> +</formalpara> + +<para +>Está disponível uma funcionalidade relacionada em <menuchoice +><guimenu +>Ferramentas</guimenu +><guimenuitem +>Filtrar a selecção pelo comando...</guimenuitem +></menuchoice +>. Para a usar, deverá seleccionar uma área de texto no editor. Se agora indicar um comando e carregar no botão <guibutton +>Iniciar</guibutton +>, o comando é iniciado e a selecção é usada como dados de entrada para ele. O resultado à saída do comando é então introduzido no editor, substituindo a selecção. </para> + +<para +>Por exemplo, se você escrever documentação, terá de fazer referência aos itens do menu. Para o fazer correctamente, p.ex., para o comando Copiar do menu Editar, terá de escrever: <programlisting +><menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice></programlisting +> Isto é difícil, como tal gostaria de escrever apenas "Editar - Copiar" e deixar que o computador faça a formatação. Aqui está como o poderá fazer. Poderá criar um pequeno programa chamado 'mef', que poderá pôr p.ex., na pasta 'bin' da sua pasta pessoal: <programlisting +>sed s/"^\(.*\) - \(.*\)\$"/"<menuchoice><guimenu>\1<\/guimenu><guimenuitem>\2<\/guimenuitem><\/menuchoice>"/</programlisting +> Não se esqueça de o tornar executável, e é tudo. Agora, no código .docbook da sua documentação, poderá escrever "Editar - Copiar". Se seleccionar o texto que acabou de escrever, escolha a opção <menuchoice +><guimenu +>Ferramentas</guimenu +><guimenuitem +>Filtrar a selecção pelo comando...</guimenuitem +></menuchoice +> e invoque o '~/bin/mef'. Imediatamente o "Editar - Copiar" será substituído por <programlisting +><menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice></programlisting> +</para> + + +</listitem> + +<listitem> +<formalpara> +<title +>O 'plugin' do &doxygen;</title> +<indexterm zone="plugin-tools" +><primary +>&doxygen;</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>ferramenta de documentação</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>Documentação da API</primary +></indexterm> + +<para +>Este 'plugin' ajuda a usar a ferramenta de documentação de APIs &doxygen; (<ulink url="http://www.doxygen.org" +></ulink +>). Poderá seleccionar a opção <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Executar o Doxygen</guimenuitem +></menuchoice +> para gerar a documentação da API para o seu projecto actual, com base na configuração indicada pelo ficheiro <filename +>Doxyfile</filename +> da pasta do seu projecto. </para> +</formalpara> + +<para +>Para além disso, poderá configurar o &doxygen; no menu <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Opções do projecto...</guimenuitem +></menuchoice +>. Esta janela é bastante semelhante à ferramenta &doxywizard;. </para> +</listitem> + +<listitem> +<formalpara> +<title +>O 'Plugin' do &ctags;</title> +<indexterm zone="plugin-tools" +><primary +>&ctags;</primary +></indexterm> + +<para +>Ainda que o navegador de classes lhe dê uma análise extensiva dos símbolos e classes do seu projecto, poderá também querer usar a ferramenta 'ctags'. Em particular, este suporta bastantes mais linguagens que o navegador de classes. </para> +</formalpara> + +<para +>Pode activar este 'plugin' em <menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>CTags...</guimenuitem +></menuchoice +>. Quando a iniciar da primeira vez, o utilizador será questionado para criar uma base de dados de procura. Quando aceitar essa opção, o programa &ctags; irá iniciar e irá criar um ficheiro chamado <filename +>tags</filename +> na pasta do seu projecto. Este é um ficheiro de texto que contém todos os símbolos dos seus ficheiros de código. </para> + +<para +>Poderá procurar na base de dados de símbolos de duas formas: quando a opção <guilabel +>Corresponder à expressão regular</guilabel +> estiver assinalada, o texto que introduzir será interpretado como uma expressão regular (variante POSIX) e aplicada aos símbolos existentes. Por exemplo, o texto <literal +>.*Widget</literal +> irá procurar por todos os símbolos que terminem em <literal +>Widget</literal +>. Se a opção não estiver assinalada, a pesquisa será feita à letra. </para> + +<para +>Ao procurar, irá obter uma lista dos símbolos correspondentes, acompanhada dos números de linha em que estes são definidos. Poderá saltar para o ponto respectivo, se carregar num item da lista. </para> + +<para +>Para algumas linguagens, o &ctags; distingue os diferentes tipos de símbolos. Por exemplo, o Python tem classes e funções. Poderá optar por procurar apenas por classes, assinalando ou desligando os tipos respectivos na janela. </para> + +<para +>A base de dados de símbolos normalmente não é actualizada com as modificações do seu código. Por consequência, ao fim de algum tempo, os números de linha já não estarão mais correctos, e irão faltar as classes e funções novas. Como tal, deverá actualizar o ficheiro <filename +>tags</filename +> com intervalos regulares, carregando no botão <guibutton +>Gerar de novo</guibutton +>. </para> +</listitem> + +<listitem> +<formalpara> +<title +>O 'plugin' <command +>astyle</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>astyle</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +><application +>Estilo Artístico</application +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>indentação</primary +></indexterm> + +<para +>O 'astyle' é um 'plugin' para formatar o código-fonte, de acordo com um conjunto definido de regras. </para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>O 'plugin' <command +>regexptest</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>regexptest</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>depuração</primary +><secondary +>expressões regulares</secondary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>expressões regulares</primary +><secondary +>depuração</secondary +></indexterm> + +<para +>A programação com expressões regulares poderá ser bastante complicada. Muitas das vezes, à primeira tentativa, uma expressão irá corresponder com demasiado texto. Em particular, ao lidar com uma linguagem compilada, os tempos em que se anda às voltas a depurar uma expressão regular poderão ser desgastantes. O 'plugin' 'regexptest' permite-lhe explorar directamente as alterações numa expressão regular. É activada ao escolher a opção <menuchoice +><guimenu +>Ferramentas</guimenu +> <guimenuitem +>Depurar a Expressão Regular...</guimenuitem +></menuchoice +>. </para> +</formalpara> + +<para +>No grupo da variante, poderá escolher a variante do motor de expressões regulares usada. As versões suportadas de momento são as da norma do POSIX, que é usado pelo programa &grep;, e a sintaxe extendida do POSIX, que é usada pelo programa &egrep;. </para> + +<para +>Quando introduzir uma expressão, irá obter uma reacção imediata sobre os erros de sintaxe da mesma. Ao indicar um texto qualquer no <guilabel +>Texto de teste</guilabel +>, poderá ver se a expressão corresponde a este texto. Em particular, se a sua expressão incluir grupos, como o <literal +>([a-z])</literal +>, o conteúdos dos sub-grupos será apresentado numa lista. </para> +</listitem> + +<!-- +<listitem> +<formalpara> +<title +>The <command +>konsole</command +> Plugin</title> +<indexterm zone="plugin-tools" +><primary +><command +>konsole</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>terminal</primary +><secondary +>embedded</secondary +></indexterm> +<para +></para> +</formalpara> +</listitem> +--> + +</itemizedlist> + +</appendix +> <!-- plugin-tools --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/project-advanced.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/project-advanced.docbook new file mode 100644 index 00000000000..aacf961101a --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/project-advanced.docbook @@ -0,0 +1,111 @@ +<chapter id="projects-advanced"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Gestão Avançada de Projectos</title> + +<sect1 id="oldprojects"> +<title +>Carregar os Projectos</title> + +<sect2 id="loading-recent-project"> +<title +>Carregar um Projecto Usado Recentemente</title> + +<para +>(... ainda não escrito ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="open-recent-project.png" format="PNG"/> + </imageobject> + <caption +><para +>Como abrir um projecto recente </para +></caption> + </mediaobject> +</screenshot> + + +</sect2 +> <!-- loading-recent-project --> + +<sect2 id="loading-project"> +<title +>Carregar um Projecto Existente</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- loading-project --> + +<sect2 id="converting-projects"> +<title +>Converter os Ficheiros Antigos de Projectos do KDevelop</title> + +<para +>O &tdevelop; permite-lhe abrir os ficheiros de projecto antigos do KDevelop 2.x e convertê-los para ficheiros do &tdevelop;. Para o fazer, vá a <guimenuitem +>Abrir um Projecto...</guimenuitem +> e seleccione os <guilabel +>Ficheiros de projecto do KDevelop 2</guilabel +> no campo <guilabel +>Filtro:</guilabel +>. Depois, seleccione o ficheiro de projecto que deseja abrir. O projecto em questão é convertido para o &tdevelop; e é gravado como um <guilabel +>ficheiro de projecto do &tdevelop;</guilabel +>. </para> + +</sect2 +> <!-- converting-projects --> + +<sect2 id="importing-projects"> +<title +>Importar um Projecto Existente</title> + +<para +>Para importar uma directoria existente no &tdevelop;, seleccione <guimenuitem +>Importar uma Directoria Existente</guimenuitem +> do menu <guimenu +>Projecto</guimenu +>. Você deverá ver o Assistente de Importação de Directorias, como é mostrado em baixo: </para> + +<figure id="screenshot-importdirectory" float="1"> +<title +>A Janela de Importação de Directorias</title> +<mediaobject> +<imageobject +><imagedata fileref="importdirectory.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- importing-projects --> + +</sect1 +> <!-- oldprojects --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="project-options"> +<title +>Ajustar o Projecto — Opções do Projecto</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- project-options --> + +</chapter +> <!-- projects-advanced --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/project-management.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/project-management.docbook new file mode 100644 index 00000000000..4b113504ff1 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/project-management.docbook @@ -0,0 +1,1297 @@ +<chapter id="project-management"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <author +><firstname +>Ian</firstname +><surname +>Wadham</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Compilação e Gestão de Projectos</title> + +<para +>Este capítulo lida apenas com os projectos compilados, como os projectos de C++, Java ou Fortran. Os projectos para as linguagens de 'scripting' como o Python ou o PHP funcionam de forma bastante diferente. </para> + +<para +>Aqui irá encontrar informações acerca de:</para> +<itemizedlist> + <listitem +><para +><link linkend="automake-manager-summary" +>Resumo do &automanag;</link +>, que contém uma introdução ao &automanag;, </para +></listitem> + <listitem +><para +>A <link linkend="automake-manager-operation" +>Operação com o Gestor Automake</link +>, que descreve as bases sobre como trabalhar com o &automanag;, </para +></listitem> +</itemizedlist> + +<sect1 id="automake-manager-summary"> +<title +>Resumo do &automanag;</title> + +<para +>No capítulo dos <link linkend="unixdev-buildsystems" +>Sistemas de compilação</link +> devemos uma vista geral sobre os sistemas de gestão de compilações usados normalmente nos sistemas &UNIX;. Nas secções seguintes iremos olhar para isto com mais detalhe. </para> +<para +>Existe alguma confusão sobre o nome a dar estas coisas. A GNU chama-lhes <quote +>sistemas de compilação</quote +> quando descreve o Automake, o Autoconf e o Libtool. O QMake chama-se a si próprio <quote +>uma ferramenta para criar Makefiles para os vários compiladores e plataformas</quote +>. No &kde;, é usado com frequência o termo <quote +>sistemas de gestão de projectos</quote +>. Iremos usar este termo num sentido mais abrangente para descrever os ambientes predefinidos do &tdevelop; que são usados para organizar e construir os seus projectos. No contexto desta secção, contudo, iremos ver mais sobre os <quote +>sistemas de compilação automatizados</quote +>. </para> + +<sect2 id="automake-manager-summary-buildsys"> +<title +>A Necessidade de um Sistema de Compilação Automatizado</title> + +<para +>Se você tiver um programa simples <quote +>Olá Mundo</quote +>, feito em C, você poderá compilá-lo e gerar o executável com o comando &gcc; <parameter +>-o ola ola.c</parameter +> e executá-lo com o comando <command +>./ola</command +>, por isso você nem irá necessitar de uma <filename +>Makefile</filename +>. </para> +<para +>Se você tiver uma aplicação em C com vários módulos e ficheiros de inclusão e só o vai executar na sua própria máquina (&ie;., é uma aplicação caseira), você irá só necessitar de uma única <filename +>Makefile</filename +>, o que é relativamente simples de criar à mão (use o <userinput +>info Make</userinput +> para saber mais sobre o assunto). </para> +<para +>As complicações começam quando: </para> +<itemizedlist> + <listitem +><para +>O seu código, documentação, imagens, sons, traduções, ficheiros de dados, &etc;, estão localizados em mais do que uma directoria, </para +></listitem> + <listitem +><para +>Você tem uma hierarquia de directorias e sub-pastas, </para +></listitem> + <listitem +><para +>Você está a usar bibliotecas que não fazem parte do conjunto tradicional do &UNIX;, com a biblioteca de Objectos do &Qt; ou as bibliotecas do &kde;, </para +></listitem> + <listitem +><para +>Você está a usar um pré-processador para gerar algum do seu código-fonte, como o pré-compilador MOC do Qt, </para +></listitem> + <listitem +><para +>Você pretende distribuir a sua aplicação pelo mundo inteiro, para as pessoas que podem não ter o mesmo sistema &UNIX;/&Linux;, o mesmo 'software' e 'hardware' que você, </para +></listitem> + <listitem +><para +>Você precisa de uma funcionalidade de Instalação e Desinstalação automática, </para +></listitem> + <listitem +><para +>Você pretende tornar a sua aplicação parte do conjunto do Ambiente do &kde;. </para +></listitem> +</itemizedlist> + +<para +>Se você tiver alguma ou todas as situações acima, você irá provavelmente necessitar de um <emphasis +>sistema de compilações</emphasis +>. No exemplo acima usámos o &gcc; para compilar e gerar o executável do programa <quote +>Olá Mundo</quote +>, mas nem todos os compiladores de C são chamados <quote +>&gcc;</quote +>. Por isso, se você distribuir a sua aplicação para alguém que esteja a usar outro compilador de C, a sua Makefile terá de alguma forma de usar o nome do compilador dessa pessoa, caso contrário a sua aplicação não irá conseguir compilar — e isto é apenas um exemplo simples do que poderá correr mal. </para> +<para +>Um sistema de compilações irá limar estas diferenças para si. </para> +<itemizedlist> + <listitem +><para +>Irá verificar se as bibliotecas que precisa estão presentes em cada máquina recebida, </para +></listitem> + <listitem +><para +>irá percorrer automaticamente todas as directorias da sua aplicação à procura dos ficheiros a pré-processar, compilar ou instalar e </para +></listitem> + <listitem +><para +>irá instalar os componentes da sua aplicação nas directoria de destino correctas, certificando-se que </para +></listitem> + <listitem +><para +>as directorias são criadas na máquina de destino tal como é pedido. </para +></listitem> +</itemizedlist> + +<para +>Em resumo, um sistema de compilação oferece métodos seguros para a sua aplicação ser compilada e instalada correctamente em qualquer máquina de destino. Como foi mostrado acima na introdução aos <link linkend="makesystems" +>Sistemas de Gestão de Projectos</link +>, o &tdevelop; oferece três sistemas de compilação automatizados e a opção para criar a sua própria Makefile (carregue nos nomes dos projectos para obter mais informações): </para> +<itemizedlist> + <listitem +><para +>Os <link linkend="automake-project" +>projectos do Automake</link +> que usam as ferramentas de programação normais da &GNU;. </para +></listitem> + <listitem +><para +>Os <link linkend="qmake-project" +>projectos do QMake</link +> que usam o gestor de projectos QMake da Trolltech. </para +></listitem> + <listitem +><para +>Os <link linkend="ant-project" +>projectos do ANT</link +> que usam o gestor de projectos ANT do Apache para a programação em &Java;. </para +></listitem> + <listitem +><para +>Os <link linkend="custom-project" +>projectos personalizados</link +> que deixam a seu cargo a manutenção das suas próprias <filename +>Makefiles</filename +>. </para +></listitem> +</itemizedlist> + +<important> +<para +>Tem de ser escolhida uma destas quatro alternativas quando você criar um projecto e <emphasis +>a escolha é difícil de alterar mais tarde</emphasis +>, por isso, você deverá pensar bem antes de começar. </para> +</important> + +</sect2 +> <!-- automake-manager-summary-buildsys --> + +<sect2 id="automake-references"> +<title +>Tutoriais sobre o Autoconf/Automake/Libtool</title> +<para +>Existem vários tutoriais disponíveis sobre o Sistema de Compilações da &GNU; (o <command +>Autoconf</command +>, o <command +>Automake</command +> e a <command +>Libtool</command +>), dos quais o &automanag; tira partido. </para> +<itemizedlist> + <listitem +><para +>Está disponível um breve <ulink url="http://www.tdevelop.org/index.html?filename=tutorial_autoconf.html" +>tutorial do 'autoconf'</ulink +>, feito pelo Christopher W. Curtis na página pessoal do KDevelop. Ele concentra-se em alguns passos básicos para modificar uma <filename +>Makefile</filename +>. </para +></listitem> + <listitem +><para +>Poderá ser encontrado um tutorial mais detalhado em <ulink url="http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual_toc.html" +></ulink +>. Este faz parte de um conjunto maior de tutoriais sobre <quote +>Desenvolver 'software' com a GNU</quote +>. </para +></listitem> + <listitem +><para +>Existe ainda o famoso <ulink url="http://sources.redhat.com/autobook" +><quote +>Livro da Cabra</quote +></ulink +>, intitulado <quote +>Autoconf, Automake, and Libtool</quote +>. Este é uma introdução fácil de ler mas concisa de todos os aspectos principais das Autotools da &GNU;. </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-references --> + +<sect2 id="automake-manager-basics"> +<title +>O Que É Que o &automanag; Faz?</title> + +<para +>O <link linkend="applicationwizard" +>&appwizard;</link +> terá configurado alguns ficheiros <filename +>Makefile.am</filename +> iniciais quando você criou um <guilabel +>Novo Projecto</guilabel +> de um tipo que use o Sistema de Compilações da &GNU;, como o <menuchoice +><guimenuitem +>C++</guimenuitem +> <guimenuitem +>KDE</guimenuitem +> <guimenuitem +>Application framework</guimenuitem +></menuchoice +>. Durante o desenvolvimento, o &automanag; cria vários outros ficheiros <filename +>Makefile.am</filename +> para os projectos que usam o Sistema de Compilação da &GNU; e vai fazendo a manutenção dos mesmos, tal como o &appwizard; e o &automanag; os criaram. </para> +<para +>Existirá um ficheiro <filename +>Makefile.am</filename +> por cada directoria do seu projecto que contém os ficheiros a ser compilados ou instalados. Irá conter as suas especificações para compilar, gerar e instalar os ficheiros e uma referência a todas as sub-pastas que também tenham um ficheiro <filename +>Makefile.am</filename +> e, possivelmente, alguns ficheiros para compilar, gerar e instalar. </para> + +<note +><para +>As directoria do seu projecto e os ficheiros de código poderão estar estruturados com qualquer profundidade, ou você poderá preferir uma estrutura plana do projecto com todas as sub-pastas no nível de topo. </para +></note> + +<para +>O objectivo do Sistema de Compilação da &GNU; é produzir estruturas de ficheiros de código que possam ser compilados, gerados e instalados em qualquer sistema &UNIX; ou &Linux; usando os comandos simples: </para> + +<screen +>./configure +make +make install # Normalmente como "root". +</screen> + +<para +>e possam ser desinstalado com o comando <command +>make uninstall</command +> (normalmente como 'root'). </para> + +<para +>Como é que isto funciona? Bem, o <command +>configure</command +> é um programa que <itemizedlist> + <listitem +><para +>lida com os detalhes do sistema em que está a correr, como por exemplo o compilador e as bibliotecas que deve usar e onde é que estas se localizam, e então </para +></listitem> + <listitem +><para +>cria ficheiros <filename +>Makefile</filename +> de forma recursiva, preenchendo as substituições nos respectivos ficheiros <filename +>Makefile.in</filename +>. </para +></listitem> +</itemizedlist> +</para> +<para +>Os <filename +>Makefile.in</filename +> são ficheiros de <quote +>input</quote +> — modelos que fornecem informações básicas para as <filename +>Makefile</filename +>s a serem produzidas a partir deles, preenchendo alguma informação dependente do sistema. Eles são gerados pelo utilitário <command +>Automake</command +> a partir dos ficheiros <filename +>Makefile.am</filename +>. </para> +<para +>O processo de passar de <filename +>Makefile.am</filename +> (<filename +>.am</filename +> significa ficheiros de modelo do <quote +>Automake</quote +>) para ficheiros <filename +>Makefile</filename +> é gerido automaticamente pelo &promanag; do &tdevelop;, usando o utilitário <command +>Autoconf</command +>, algumas macros de <command +>M4</command +> e outras coisas que não merece a pena falar aqui. </para> +<para +>Por isso, quando o <command +>make</command +> se executa, ele escolhe os pedaços correctos do ambiente actual, como os compiladores e as bibliotecas. De forma semelhante, o <command +>make install</command +> coloca os componentes da sua aplicação, como os executáveis, a documentação e os ficheiros de dados nos locais correctos para esse ambiente. </para> + +<para +>Se você distribuir a sua aplicação como um <quote +>TAR</quote +> (um único pacote comprimido que o &tdevelop; poderá criar para si), ele irá incluir os ficheiros <filename +>Makefile.in</filename +> e o programa <filename +>configure</filename +>, de modo a que o destinatário possa compilar, construir e instalar a sua aplicação sem terem o <command +>Automake</command +>, o <command +>Autoconf</command +> ou o &tdevelop; na máquina deles. Os ficheiros <filename +>Makefile.am</filename +> são também incluídos, para o caso de o destinatário precisar de fazer algumas modificações ao código-fonte. </para> +<note +><para +>As regras são ligeiramente diferentes se você distribuir o código através de um repositório da Web como o &cvs; do &kde;. </para +></note> + +</sect2 +> <!-- automake-manager-basics --> + +<sect2 id="automake-manager-basics-summary"> +<title +>Resumo do que o Gestor do Automake Faz</title> + +<itemizedlist> + <listitem +><para +>Gera ficheiros <filename +>Makefile.am</filename +> nas sub-pastas que conhece como <quote +>sub-projectos</quote +>. </para +></listitem> + <listitem +><para +>Actualiza os ficheiros <filename +>Makefile.am</filename +> à medida que a estrutura do projecto se altera. </para +></listitem> + <listitem +><para +>Actualiza os ficheiros <filename +>Makefile.am</filename +> à medida que os ficheiros são adicionados ou removidos do projecto. </para +></listitem> + <listitem +><para +>Aceita as definições de como os vários ficheiros deverão ser compilados ou instalados e modifica o <filename +>Makefile.am</filename +> de acordo com isso. </para +></listitem> + <listitem +><para +>Aceita os parâmetros usados na compilação e na instalação (⪚, nomes de bibliotecas) e garante que eles são usados nos passos de compilação e geração de binários. </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-manager-basics-summary --> + +<sect2 id="automake-file-contents"> +<title +>Conteúdo dos Ficheiros do Automake</title> + +<para +>Um ficheiro <filename +>Makefile.am</filename +> tem linhas que contêm nomes de variáveis seguidos de um sinal de igualdade (=) e uma lista de ficheiros ou valores de parâmetros. As <quote +>variáveis</quote +> têm nomes com duas partes, como por exemplo <varname +>bin_PROGRAMS</varname +>, <varname +>aplicacao_SOURCES</varname +> ou <varname +>kdelnk_DATA</varname +>. A segunda parte é chamada de <emphasis +>primária</emphasis +> e representa algo a partir do qual compilar ou instalar. A primeira parte é chamada de <emphasis +>prefixo</emphasis +> e representa: </para> +<itemizedlist> + <listitem +><para +>Uma <emphasis +>directoria</emphasis +> na qual fazer a instalação (p.ex., a <filename +>bin</filename +>), </para +></listitem> + <listitem +><para +>Um <emphasis +>qualificador</emphasis +> para o primário (p.ex. <varname +>novaaplicacao</varname +> para <varname +>SOURCES</varname +>, indicando que os ficheiros de código indicados a seguir ao <varname +>novaaplicacao_SOURCES</varname +> vão gerar o <filename +>novaaplicacao</filename +>), </para +></listitem> + <listitem +><para +>Um <emphasis +>prefixo</emphasis +> especial <varname +>noinst</varname +> (abreviatura de <quote +>no installation</quote +> ou <quote +>sem instalação</quote +>), é normalmente usado para listar os ficheiros de inclusão (<filename +>.h</filename +>), </para +></listitem> + <listitem +><para +>Ou o prefixo especial <varname +>EXTRA</varname +>, para os elementos <emphasis +>dependentes da configuração</emphasis +>. </para +></listitem> +</itemizedlist> + +<para +>Para mais informações sobre o <command +>Automake</command +> e os ficheiros <filename +>Makefile.am</filename +>, vá a <userinput +>info Automake</userinput +>. </para> +<para +>Basicamente, o &automanag; cria e actualiza os nomes das variáveis e as listas de ficheiros ou parâmetros. Veja o exemplo seguinte de um <filename +>Makefile.am</filename +> para uma aplicação típica, chamada <filename +>aplicacao</filename +>. </para> + +<screen +>## Makefile.am da 'aplicacao' + +# este é o programa que é instalado. O nome dele é usado para todas as +# outras variáveis do Makefile.am +bin_PROGRAMS = aplicacao + +# define os locais dos ficheiros de inclusão do X, qt e KDE +INCLUDES = $(all_includes) + +# as localizações onde procurar as bibliotecas +novaaplicacao_LDFLAGS = $(KDE_RPATH) $(all_libraries) + +# as bibliotecas com as quais compilar +novaaplicacao_LDADD = $(LIB_KFILE) $(LIB_TDEPRINT) + +# quais os ficheiros que devem ser compilados para a 'novaaplicacao' +novaaplicacao_SOURCES = main.cpp novaaplicacao.cpp novaaplicacaoview.cpp + +# estes são os ficheiros de inclusão do seu projecto +noinst_HEADERS = novaaplicacao.h novaaplicacaoview.h + +# deixe que o 'automoc' faça a gestão de todos os ficheiros de meta-código (moc) +METASOURCES = AUTO + +KDE_ICON = novaaplicacao + +# aqui é para onde irá o ficheiro 'kdelnk' +kdelnkdir = $(kde_appsdir)/Utilities +kdelnk_DATA = novaaplicacao.desktop + +# aqui é para onde irá o ficheiro de recursos da XML-GUI +rcdir = $(kde_datadir)/novaaplicacao +rc_DATA = novaaplicacaoui.rc + +AM_CXXFLAGS = -DA_MINHA_OPCAO_DO_PREPROCESSADOR_DE_C++ +</screen> + +<para +>Como poderá ver, muitos dos itens do lado direito são símbolos no formato <varname +>$(xxxx)</varname +>. Estas são <emphasis +>variáveis de ambiente</emphasis +> que são definidas no ambiente actual do &kde; e que são substituídas pelos valores reais quando o <command +>./configure</command +> gerar os ficheiros <filename +>Makefile</filename +> finais na máquina de destino. </para> + +<para +>Também, logo depois de você ter iniciado o KDevelop, é uma boa ideia correr o comando <command +>./configure --help</command +>, que lhe irá mostrar o conjunto de coisas que você poderá alterar na altura da compilação ou da instalação, como por exemplo, para um ambiente de testes. Em particular, o comando:<screen> +./configure --prefix=/onde/voce/desejar +</screen +> irá redireccionar a instalação por completo para uma estrutura de directorias à sua escolha, alterando a variável interna <varname +>$(prefix)</varname +> para o valor <filename class="directory" +>/onde/voce/desejar</filename +>. </para> + +</sect2 +> <!-- automake-file-contents --> + +</sect1 +> <!-- automake-manager-summary --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="automake-manager-operation"> +<title +>Operação do Gestor do Automake</title> + +<para +>Neste capítulo você irá encontrar uma descrição básica dos elementos do &automanag; e como usá-los. Isto cobre: <itemizedlist> + <listitem +><para +><link linkend="automake-manager-operation-window" +>A Janela do &automanag;</link +> que descreve a estrutura básica da janela principal do &automanag;. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-survey-window" +>A Janela Introdutória</link +> que descreve os elementos da sub-janela superior. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-detail-window" +>A Janela de Detalhes</link +> que descreve os elementos da sub-janela inferior. </para +></listitem> + <listitem +><para +>O <link linkend="automake-manager-operation-navigate" +>Navegar no &automanag;</link +> lista algumas operações básicas que você poderá efectuar no &automanag;. </para +></listitem> + <listitem +><para +>Os <link linkend="automake-manager-operation-popups" +>Menus de Contexto no &automanag;</link +> descreve as janelas que irão aparecer quando você seleccionar uma acção no &automanag;. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-manager-operation-window"> +<title +>A Janela do &automanag;</title> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automakemanager.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="top" +><itemizedlist> + <listitem +><para +>O &automanag; corre numa janela dividida. A parte superior é chamada de <emphasis +>Introdução</emphasis +> e a parte inferior de <emphasis +>Detalhes</emphasis +>. Entre elas existe uma barra fina que poderá ser arrastada com o rato para ajustar o tamanho das janelas. No modo IDEAl, você poderá também arrastar o lado da janela dividida para alterar a largura. </para +></listitem> + <listitem +><para +>No topo de cada área existe uma <emphasis +>barra de ferramentas</emphasis +>, em que os botões de cada uma ficarão activos de cada vez que um elemento da respectiva área for seleccionada. Isto possibilita uma forma de você aceder às acções oferecidas por esse elemento. A outra são os menus de contexto que aparecem quando você carrega com o &RMB;, como será discutido em baixo. </para +></listitem> + <listitem +><para +>No modo IDEAl existem dois pequenos botões adicionais na barra de título da janela do &automanag;, do lado esquerdo – uma seta triangular para a direita e um ponto. O botão da seta é usado para <emphasis +>fechar a janela</emphasis +>. O botão do ponto, por outro lado, irá <emphasis +>manter a janela aberta</emphasis +>, mesmo que outra janela do &tdevelop; tenha sido seleccionada. (Caso contrário, a janela do &automanag; irá fechar automaticamente sempre que outra janela ficar em primeiro plano.) </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect2 +> <!-- automake-manager-operation-window --> + +<sect2 id="automake-manager-operation-survey-window"> +<title +>A Janela de Introdução</title> + +<para +>A janela de Introdução contém uma árvore de todas as directorias no seu projecto que contêm ficheiros de programas, documentação ou dados. Cada uma destas directorias contém um ficheiro <filename +>Makefile.am</filename +> e é reconhecida pelo &automanag; como um <emphasis +>subprojecto</emphasis +>. Existem três sub-projectos típicos num projecto baseado no &kde;, tal como é mostrado na ilustração acima: </para> + +<itemizedlist> + <listitem +><para +><filename +>src</filename +> – ficheiros com código-fonte para a sua aplicação, </para +></listitem> + <listitem +><para +><filename +>doc</filename +> – o se manual do utilizador, </para +></listitem> + <listitem +><para +><filename +>po</filename +> – extracções das cadeias de caracteres dos seus ficheiros de código que necessitem de ser traduzidas para outras línguas (p.ex., os títulos das janelas, os nomes dos menus, os textos dos botões, das janelas e as mensagens de vários tipos). </para +></listitem> +</itemizedlist> + +<para +>Repare que o subprojecto <filename +>doc</filename +> tem sempre um subprojecto <filename +>en</filename +>, o qual você poderá ver se carregar no símbolo <symbol +>+</symbol +> ao lado da palavra <filename +>doc</filename +>. Isto acontece porque a língua de base para toda a documentação do KDE é o Inglês (en). Se a sua aplicação fizer parte do KDE, as equipas de tradução do KDE poderão traduzir a sua documentação a partir do Inglês para outras línguas e as traduções irão para outros sub-projectos como o <filename +>pt</filename +> (Português) ou para <filename +>fr</filename +> (Francês). Os textos do subprojecto <filename +>po</filename +> também poderão ser traduzidos e gravados noutros ficheiros do <filename +>po</filename +>, permitindo desta forma que a sua aplicação seja utilizada por pessoas que não percebam Inglês. </para> + +<note +><para +>Os sub-projectos <filename +>doc</filename +> e <filename +>po</filename +> servem para diferentes fins. O <filename +>doc</filename +> contém a <emphasis +>documentação</emphasis +>, como os manuais do utilizador, enquanto que o <filename +>po</filename +> contém o texto traduzido da <emphasis +>interface do utilizador</emphasis +> que está integrado no código-fonte desta aplicação. </para +></note> + +<para +>A janela de Introdução serve — entre outras coisas — como uma ferramenta de navegação. Se você seleccionar um subprojecto na janela da Introdução, os detalhes correspondentes serão mostrados na área de Detalhes. </para> + +</sect2 +> <!-- automake-manager-operation-survey-window --> + +<sect2 id="automake-manager-operation-detail-window"> +<title +>A Janela de Vista de Detalhes</title> + +<para +>A janela de Detalhes contém uma árvore com todos os ficheiros no subprojecto seleccionado de momento na Introdução, assim como as regras de compilação, geração e instalação para este subprojecto. Como tal, as duas áreas em conjunto poder-lhe-ão dar o acesso a todos os componentes da sua aplicação e a todas as informações sobre como compilar, gerar e instalar os itens. </para> + +<sect3> +<title +>Alvos</title> + +<para +>A lista em árvore nos Detalhes tem dois níveis. O nível de topo consiste nos <emphasis +>alvos</emphasis +> do &automanag; e o próximo nível contém as listas dos ficheiros que irão compor cada alvo. </para> + +<para +>Este conceito de um alvo para o &automanag; difere de certa forma do que é um alvo nas <filename +>Makefile</filename +>s. Em resumo:</para> +<itemizedlist> + <listitem +><para +>A definição de como deverá ser compilado, gerado ou instalado um conjunto de ficheiros é conhecido como um <emphasis +>alvo</emphasis +> no &automanag;, mas apenas como uma <emphasis +>variável</emphasis +> no <command +>Automake</command +> em si. </para +></listitem> + <listitem +><para +>Um <emphasis +>alvo</emphasis +> no <command +>make</command +> é normalmente algo de muito diferente, sendo o parâmetro de um comando <command +>make</command +> (p.ex. <userinput +>make install</userinput +>, <userinput +>make clean</userinput +>). </para> + <para +>Contudo, algumas variáveis do <filename +>Makefile.am</filename +> representam, de facto, um <emphasis +>sub-alvo</emphasis +> subjacente no <command +>make</command +>. </para +></listitem> +</itemizedlist> + +</sect3> +</sect2 +> <!-- automake-manager-operation-detail-window --> + +<sect2 id="automake-manager-operation-navigate"> +<title +>Navegar no &automanag;</title> + +<para +>Tanto na janela de Introdução como na de Detalhes, você poderá carregar com o botão esquerdo nos símbolos <symbol +>+</symbol +> ou <symbol +>-</symbol +>, juntos a um subprojecto ou nome de alvo para expandir ou contrair a árvore. Se fizer isso com um <emphasis +>subprojecto</emphasis +> na Introdução, ele irá mostrar ou esconder os sub-projectos no próximo nível abaixo (se existir). Se o fizer com um <emphasis +>alvo</emphasis +> na janela de Detalhes, ele mostra ou esconde a lista de ficheiros que vão para esse alvo. </para> + +<variablelist> +<varlistentry> +<term +>Abrir um Ficheiro para Edição</term> +<listitem> +<para +>Se você <emphasis +>carregar com o &LMB;</emphasis +> no nome de um ficheiro na janela de Detalhes, o ficheiro correspondente irá abrir na janela de edição do &tdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Activar os Botões da Barra de Ferramentas do &automanag;</term> +<listitem> +<para +>Se você <emphasis +>carregar com o &LMB;</emphasis +> no nome de um subprojecto na área de introdução ou num alvo da janela de detalhes, esse nome fica realçado e alguns botões da barra de ferramentas ficam activos na parte superior dessa janela.</para> + +<note> + <para +>Recomenda-se que você use o <emphasis +>botão direito do rato e os menus de contexto</emphasis +>, em vez dos botões das barras de ferramentas, porque é muito mais fácil de ver e perceber o que é que eles fazem. </para> + <para +>As operações nos sub-projectos e nos alvos têm efeitos de larga escala na estrutura, compilação, geração e instalação da sua aplicação. </para> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Seleccionar Acções/Menus de Contexto</term> +<listitem> +<para +>Se você <emphasis +>carregar com o &RMB;</emphasis +> no nome de um subprojecto, alvo ou ficheiro, irá aparecer um menu, onde nele poderá seleccionar as acções a efectuar sobre o item em questão, como adicionar um alvo ao subprojecto, adicionar um ficheiro a um alvo ou remover logicamente o ficheiro seleccionado do seu alvo. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- automake-manager-operation-navigate --> + +<sect2 id="automake-manager-operation-popups"> +<title +>Menus de Contexto no &automanag;</title> + +<para +>As seguintes acções explicam de forma resumida quais as operações que os menus disponibilizam e que irão aparecer, quando o botão direito do rato é carregado na janela do &automanag;. Elas pretendem ser meramente introdutórias. Você irá obter descrições mais detalhadas para a maioria das operações num capítulo posterior. </para> +<!-- ### add a link to this chapter when ready --> + +<sect3 id="automake-manager-operation-popups-file"> +<title +>O Menu de Contexto de um Ficheiro</title> + +<para +>Quando você carregar com o &RMB; no <emphasis +>nome de um ficheiro</emphasis +> na janela de Detalhes, irá aparecer o seguinte menu que lhe permite seleccionar uma de várias operações nesse ficheiro. Na ilustração por baixo, o ícone <filename +>hi-16app-novaaplicacao.png</filename +> foi seleccionado a partir do alvo <guilabel +>Dados de ícone no 'novaaplicacao'</guilabel +> do subprojecto <guilabel +>novaaplicacao/src</guilabel +>. </para> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automake-file-popup.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="bottom" +><itemizedlist> + <listitem +><para +>O item principal do menu para um ficheiro é o <guimenuitem +>Remover</guimenuitem +>, para retirar o ficheiro do seu alvo (i.e., não será mais usado para compilar, gerar ou instalar esse alvo). </para +></listitem> + <listitem +><para +>O item <guimenuitem +>CVS</guimenuitem +> oferece um conjunto de operações do CVS sobre o ficheiro. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Abrir Com</guimenuitem +> permite-lhe abrir o ficheiro com uma variedade de editores ou com qualquer aplicação que desejar (p.ex., você poderá abrir o ficheiro do ícone do nosso exemplo com o <application +>KIcon</application +>). </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Perforce</guimenuitem +> é usado para as operações semelhantes às do CVS, mas usando o sistema comercial de controlo de versões <quote +><application +>Perforce</application +></quote +>. </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-file --> + +<sect3 id="automake-manager-operation-popups-target"> +<title +>O Menu de Contexto de um Alvo</title> + +<para +>Quando você carregar com o botão direito num <emphasis +>alvo</emphasis +> da janela de Detalhes, irá aparecer o seguinte menu que lhe permitirá seleccionar uma de várias operações sobre ele. Na imagem em baixo, o alvo <guilabel +>novaaplicacao (Programa em bin)</guilabel +> do subprojecto <guilabel +>novaaplicacao/src</guilabel +> estava seleccionado. </para> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automake-target-popup.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="bottom" +><itemizedlist> + <listitem +><para +>O item <guimenuitem +>Opções</guimenuitem +> de um alvo só se aplica aos ficheiros de código-fonte. Na janela correspondente você poderá indicar as opções do editor de ligações e os locais onde procurar as bibliotecas e onde você poderá também indicar uma lista com as bibliotecas que irão ser efectivamente associadas à sua aplicação. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Criar um Novo Ficheiro</guimenuitem +> mostra uma janela, na qual você poderá indicar o nome e o tipo do ficheiro a ser gerado (a partir de uma lista). </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Adicionar Ficheiros Existentes</guimenuitem +> mostra uma janela, na qual você poderá adicionar um ou mais ficheiros existentes a este alvo. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Remover</guimenuitem +> para um alvo, permite-lhe remover logicamente o alvo e todos os seus ficheiros da estrutura do projecto. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Tornar o Alvo Activo</guimenuitem +> só se aplica aos alvos que contenham ficheiros de código. Os ficheiros novos serão sempre adicionados a um desses alvos activos. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Construir o Alvo</guimenuitem +> invoca todas as operações de compilação e geração de binários necessárias para compilar o código apenas para este alvo. </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-target --> + +<sect3 id="automake-manager-operation-popups-subproject"> +<title +>O Menu de Contexto de um Sub-Projecto</title> + +<para +>Quando você carregar com o &RMB; num <emphasis +>subprojecto</emphasis +> da janela de Introdução, irá aparecer o seguinte menu que lhe permite fazer as alterações mais abrangentes à estrutura do seu projecto e à forma como é compilado, gerado e instalado. Você poderá usá-lo para expandir ou modificar a estrutura básica do projecto que o &appwizard; criou. </para> + + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automake-subproject-popup.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="bottom" +><itemizedlist> + <listitem +><para +>O item <guimenuitem +>Opções</guimenuitem +> de um subprojecto controla a forma como o subprojecto será compilado, gerado e instalado. A janela que aparece terá páginas para o Compilador, Inclusões, Prefixos e Ordem de Construção. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Adicionar um Sub-projecto</guimenuitem +> cria uma nova directoria e um ficheiro-esqueleto do Makefile.am. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Adicionar um Alvo</guimenuitem +> faz aparecer uma janela, na qual você poderá definir as regras para compilar, gerar ou instalar um grupo de ficheiros dentro do seu subprojecto. </para +></listitem> + <listitem +><para +><guimenuitem +>Adicionar um Serviço</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Adicionar uma Aplicação</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Adicionar um Sub-Projecto Existente</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Remover o Sub-projecto</guimenuitem +> do menu de contexto de um subprojecto é a forma correcta de remover um subprojecto. Ela irá ajustar os ficheiros <filename +>Makefile.am</filename +> de acordo com isso. Você também terá a opção de remover todos os ficheiros (ou ligações) da subdirectoria correspondente. Obviamente, esta funcionalidade deverá ser usada com cuidado. </para +></listitem> + <listitem +><para +>O item <guimenuitem +>Construir</guimenuitem +> invoca todas as operações de compilação e geração necessárias para compilar o código apenas deste subprojecto. </para +></listitem> + <listitem +><para +><guimenuitem +>Forçar a Reedição</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Limpar</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Instalar</guimenuitem +> (... a ser escrito ...) </para +></listitem> + <listitem +><para +> <guimenuitem +>Instalar (como utilizador 'root')</guimenuitem +> (... a ser escrito ...) </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-subproject --> + +</sect2 +> <!-- automake-manager-operation-popups --> + +</sect1 +> <!-- automake-manager-operation --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="autoproject"> +<title +>Projectos Automake</title> +<indexterm zone="autoproject" +><primary +><command +>autoproject</command +></primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&automake;</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&autoconf;</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&libtool;</primary +></indexterm> + +<para +>(... ainda não escrito ...) </para> + + +<sect2 id="autoconf"> +<title +>Autoconf</title> +<indexterm zone="autoconf" +><primary +>'script' <filename +>configure</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +>'script' <filename +>config.status</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +><filename +>Makefile.in</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +><filename +>config.h.in</filename +></primary +></indexterm> + +<para +><filename +>Makefile.in</filename +> em <filename +>Makefile</filename +> </para> + +<programlisting +>prefix = @prefix@ +INSTALL = @INSTALL@ +build_triplet = @build@ +CXX = @CXX@ +</programlisting> + +<programlisting +>prefix = /home/ze/kde3 +INSTALL = /usr/bin/ginstall -c -p +build_triplet = i686-pc-linux-gnu +CXX = g++ +</programlisting> + +<para +><filename +>config.h.in</filename +> em <filename +>config.h</filename +> </para> + +<programlisting +>/* Defina se você tiver a 'libz' */ +#undef HAVE_LIBZ +/* O tamanho de um `int', tal como indicado pelo 'sizeof'. */ +#undef SIZEOF_INT +</programlisting> + +<programlisting +>/* Defina se tiver a 'libz' */ +#define HAVE_LIBZ 1 +/* O tamanho de um `int', tal como indicado pelo 'sizeof'. */ +#define SIZEOF_INT 4 +</programlisting> + +</sect2 +> <!-- autoconf --> + + +<sect2 id="automake"> +<title +>Automake</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!--automake --> + + +<sect2 id="automake-manager"> +<title +>&automanag; do &tdevelop;</title> + +<figure id="screenshot-automake-manager" float="1"> +<title +>Uma imagem do gestor de automake</title> +<mediaobject> +<imageobject +><imagedata fileref="automake-manager.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- automake-manager --> + + +<sect2 id="automakelibrary"> +<title +>Compilar e Instalar as Bibliotecas</title> + +<para> +<itemizedlist> +<listitem +><para +>-rpath </para +></listitem> +<listitem +><para +>PIC </para +></listitem> +<listitem +><para +>static </para +></listitem> +<listitem +><para +>'plugins': no-undefined </para +></listitem> +</itemizedlist> +</para> + +</sect2 +> <!-- automakelibrary --> + +</sect1 +> <!-- autoproject --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="customproject"> +<title +>'Makefiles' e Programas de Compilação Personalizados</title> +<indexterm zone="customproject" +><primary +><filename +>Makefile</filename +></primary +></indexterm> +<indexterm zone="customproject" +><primary +><filename +>build.xml</filename +></primary +></indexterm> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- customproject --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compileroptions"> +<title +>Opções do Compilador</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- compileroptions --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makeoptions"> +<title +>Opções do Make</title> + +<para +>(... ainda não escrito ...) </para> + +</sect1 +> <!-- makeoptions --> + +</chapter +> <!-- project-management --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/setup.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/setup.docbook new file mode 100644 index 00000000000..ebec7994b0f --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/setup.docbook @@ -0,0 +1,2884 @@ +<chapter id="setup"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Configurar o &tdevelop;</title> + +<para +>O &tdevelop; é um IDE muito poderoso e flexível que oferece muitas formas de o ajustar às suas necessidades. Para iniciar a configuração, seleccione <menuchoice +><guimenu +>Configuração</guimenu +><guimenuitem +>Configurar o KDevelop...</guimenuitem +></menuchoice +>. Isto fará com que a janela de configuração se abra, consistindo numa janela de selecção à esquerda e na janela de configuração à direita, cujo conteúdo irá variar de acordo com o item de configuração que seleccionou. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-select.png" format="PNG"/> + </imageobject> +<textobject> +<phrase +>Seleccionar um item de configuração</phrase> +</textobject> + <caption +><para +>Seleccionar um item de configuração </para +></caption> + </mediaobject> +</screenshot> + +<para +>Iremos discutir estas configurações por uma ordem diferente, dividindo nos tópicos principais da <link linkend="setup-general" +>Configuração Geral</link +>, <link linkend="setup-docu" +>Configurar a Documentação</link +> e <link linkend="setup-advanced" +>Configuração Avançada</link +>, o que causa uma leitura mais intuitiva. </para> +<para +>Se quiser ver directamente um certo item de configuração, use uma das seguintes referências. </para> +<simplelist> + <member +><link linkend="setup-main" +>Geral</link +></member> + <member +><link linkend="setup-plugins" +>'Plugins'</link +></member> + <member +><link linkend="setup-format" +>Formatador de Código</link +></member> + <member +><link linkend="setup-new-file-wizard" +>Assistente de Novo Ficheiro</link +></member> + <member +><link linkend="setup-ui" +>Interface do Utilizador</link +></member> + <member +><link linkend="setup-editor" +>Editor</link +></member> + <member +><link linkend="setup-abbrev" +>Abreviaturas</link +></member> + <member +><link linkend="setup-menu-standard" +>O Menu Ferramentas</link +></member> + <member +><link linkend="setup-menu-external" +>Ferramentas Externas</link +></member> + <member +><link linkend="setup-docu" +>Documentação</link +></member> + <member +><link linkend="setup-snippets" +>Excertos de Código</link +></member> + <member +><link linkend="setup-fileselector" +>Selector de Ficheiros</link +></member> +</simplelist> + +<sect1 id="setup-general"> +<title +>Configuração Geral</title> + +<para +>A configuração geral diz respeito às tarefas mais comuns de ajuste do &tdevelop; e consistem em: </para> +<itemizedlist> + <listitem +><para> + <link linkend="setup-main" +>Configuração Geral</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-ui" +>Seleccionar a Interface do Utilizador</link> + </para +></listitem> + <listitem> + <itemizedlist> +<title +>Tarefas de Edição do Código</title> + <listitem +><para> + <link linkend="setup-editor" +>Seleccionar um Editor</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-format" +>Seleccionar um Estilo de Formatação de Código</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-snippets" +>Configurar a Ferramenta de Excertos de Código</link> + </para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para> + <link linkend="setup-fileselector" +>Configurar o Selector de Ficheiros</link> + </para +></listitem> +</itemizedlist> + +<sect2 id="setup-main"> +<title +>Configuração Geral</title> + +<para +>A janela de configuração <guilabel +>Geral</guilabel +> permite-lhe definir algum comportamento básico do &tdevelop; que irá mudar pouco no dia-a-dia. Isto respeita a: </para> + +<variablelist> +<varlistentry> +<term +>As opções gerais do projecto, como</term> +<listitem> + <itemizedlist> + <listitem +><para +>definir uma <link linkend="setup-main-projects" +>directoria-mãe por omissão</link +>, que o &tdevelop; deverá usar para os projectos novos. </para +></listitem> + <listitem +><para +>decidir se quer que o &tdevelop; <link linkend="setup-main-preload" +>carregue automaticamente</link +> o projecto onde estava a trabalhar da última vez. </para +></listitem> + </itemizedlist> + </listitem> +</varlistentry> + +<varlistentry> +<term +>Seleccionar um tipo de letra para as janelas de resultados usadas mais frequentemente, nomeadamente:</term> +<listitem> + +<itemizedlist> +<listitem> +<para +>a <link linkend="setup-main-messages-font" +>Janela de Mensagens de Resultado</link +> que o &tdevelop; usa para apresentar ⪚ o progresso da compilação e</para> +</listitem> +<listitem> +<para +>a <link linkend="setup-main-applications-font" +>Janela de Resultado da Aplicação</link +> que irá mostrar as mensagens de erro e de estado respeitantes a uma aplicação em execução.</para> +</listitem> +</itemizedlist> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Algum comportamento comum respeitante às linhas apresentadas na <guilabel +>Janela de Mensagens</guilabel +>, como por exemplo:</term> +<listitem> + <itemizedlist> +<listitem> +<para +>se as linhas compridas serão <link linkend="setup-main-wrap" +>repartidas</link +> e </para> +</listitem> +<listitem> +<para +>se <link linkend="setup-main-navigation" +>as mensagens de entrada e saída das directorias</link +> geradas pelo <command +>Make</command +> serão apresentadas.</para> +</listitem> +</itemizedlist> + +<para +>O <link linkend="setup-main-compile" +>nível de detalhe</link +> das mensagens correspondentes ao processo de compilação mostrado na janela de <guilabel +>Mensagens</guilabel +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-general.png" format="PNG"/> + </imageobject> + <caption +><para +>A janela de configuração geral </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term id="setup-main-preload" +><guilabel +>Ler o último projecto no arranque</guilabel +></term> +<listitem> +<para +>Assinale esta opção se deseja continuar a trabalhar no último projecto em que trabalhou. Isto fará com que o &tdevelop; carregue automaticamente este projecto no arranque. Será normalmente mostrado no estado em que você deixou o trabalho, para que possa continuar da mesma forma. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-projects"> +<guilabel +>Pasta de projectos por omissão:</guilabel +></term> +<listitem> +<para +>Por omissão, o &tdevelop; usa uma directoria de base comum para todos os projectos novos. Indique a localização absoluta desta directoria comum no campo de texto respectivo ou seleccione-a na sua estrutura de directorias. O &tdevelop; irá colocar os projectos novos aqui como sub-pastas desta.</para> +<note +><para +>Você poderá, obviamente, mudar a localização de um projecto novo na altura em que o configurar no <link linkend="applicationwizard" +>&appwizard;</link +>. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-messages-font" +><guilabel +>Tipo de letra da janela:</guilabel +></term> +<listitem> +<para +>Para seleccionar um tipo de letra adequado para a <guilabel +>Janela de Mensagens</guilabel +>, carregue no botão do <guilabel +>Tipo de Letra da Janela</guilabel +> que mostra o tipo de letra actual (na imagem acima, diz <quote +>Luxi Sans</quote +>). Irá então aparecer a janela normal do &kde; para <guilabel +>Seleccionar o Tipo de Letra</guilabel +>, na qual você poderá seleccionar o tipo de letra a ser usado. </para> +<note +><para +>No primeiro arranque, o &tdevelop; inicializa esta configuração do tipo de letra com base no tipo de letra normal que o seu utilizador do &kde; tem configurada. <emphasis +>Esta configuração é fixa</emphasis +>, por isso, se você alterar as <menuchoice +><guimenuitem +>Preferências</guimenuitem +><guimenuitem +>Aparência & Temas</guimenuitem +><guimenuitem +>Tipos de Letra</guimenuitem +></menuchoice +> no <guilabel +>Centro de Controlo</guilabel +>, isto irá afectar esta selecção de tipo de letra do &tdevelop;. Você terá de seleccionar de novo explicitamente o tipo de letra da <guilabel +>Janela de Mensagens</guilabel +>. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-wrap" +><guilabel +>Mudança de linha</guilabel +></term> +<listitem> +<para +>Por omissão, o &tdevelop; irá repartir as linhas compridas na janela de <guilabel +>Mensagens</guilabel +>, de modo que a informação valiosa não será ignorada com facilidade. Nalguns casos, isto irá gerar listas de mensagens grandes e confusas. Desligue a opção se não quiser que as linhas sejam repartidas. </para> +<tip +><para +>Existe uma forma alternativa de alterar a mudança de linha. Basta carregar com o &RMB; na <guilabel +>Janela de Mensagens</guilabel +> e assinalar ou desligar o item <guimenuitem +>Mudança de Linha</guimenuitem +> do menu que irá aparecer. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-navigation" +><guilabel +>Mensagens de navegação em pastas</guilabel +></term> +<listitem> +<para +>A ferramenta <command +>Make</command +> normalmente irá mostrar linhas do tipo <quote +>Entering directory</quote +> (A entrar na directoria), ou <quote +>Leaving directory</quote +> (A sair da directoria), quando ele muda de directoria de trabalho. dado que isto enche a lista de mensagens na janela de <guilabel +>Mensagens</guilabel +>, o &tdevelop; suprime estas mensagens por omissão. Assinale a opção se quiser saber que directorias o <command +>Make</command +> processou. </para> +<note +><para +>As alterações desta opção farão efeito apenas no processamento das mensagens novas. As mensagens antigas de navegação nas directorias ficarão à mesma visíveis quando você desligar esta funcionalidade. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-compile" +><guilabel +>Mensagens do Compilador</guilabel +></term> +<listitem> +<para +>O &tdevelop; faz um pré-processamento que a janela das <guilabel +>Mensagens</guilabel +> recebe durante os processos de compilação, de modo a filtrar a informação supérflua. Você poderá controlar o nível de detalhe que o &tdevelop; irá mostrar com as opções exclusivas deste campo. </para> +<variablelist> + <varlistentry> + <term +><guilabel +>Muito Curto</guilabel +></term> + <listitem +><para +>Mostra apenas os avisos, erros e os ficheiros que estão a ser compilados. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Curto</guilabel +></term> + <listitem +><para +>Suprime todas as opções do compilador e forma o resultado para ser mais legível. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Completo</guilabel +></term> + <listitem +><para +>Mostra todas as mensagens sem modificações. </para +></listitem> + </varlistentry> +</variablelist> + +<tip +><para +>Existe uma forma alternativa de mudar o detalhe do resultado do compilador. Basta carregar com o &RMB; na janela de <guilabel +>Mensagens</guilabel +> e seleccione o nível de detalhe adequado no menu de contexto. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-applications-font" +><guilabel +>Tipo de Letra da Janela</guilabel +> da <guilabel +>Saída da Aplicação</guilabel +></term> +<listitem> +<para +>A janela do <guilabel +>Resultado da Aplicação</guilabel +> é usada par amostrar as mensagens de erro e de estado das aplicações que são executadas dentro do &tdevelop;. Estas são informações que a aplicação manda normalmente para a consola quando é executada autonomamente. Por isso, não precisa de sair do IDE ao testar a aplicação em que está a trabalhar. </para> + +<para +>Para seleccionar um tipo de letra adequado para a <guilabel +>Janela do Resultado da Aplicação</guilabel +>, carregue no botão do <guilabel +>Tipo de Letra da Janela</guilabel +>, que mostra o tipo de letra seleccionado de momento (ele diz <quote +>Luxi Sans</quote +> na imagem acima). A janela normal do &kde; para <guilabel +>Seleccionar o Tipo de Letra</guilabel +> irá aparecer, no qual poderá seleccionar o tipo de letra a usar. </para> +<note +><para +>No primeiro arranque, o &tdevelop; inicializa esta configuração do tipo de letra com base no tipo de letra normal que o seu utilizador do &kde; tem configurada. <emphasis +>Esta configuração é fixa</emphasis +>, por isso, se você alterar as <menuchoice +><guimenuitem +>Preferências</guimenuitem +><guimenuitem +>Aparência & Temas</guimenuitem +><guimenuitem +>Tipos de Letra</guimenuitem +></menuchoice +> no <guilabel +>Centro de Controlo</guilabel +>, isto irá afectar esta selecção de tipo de letra do &tdevelop;. Você terá de seleccionar de novo explicitamente o tipo de letra da <guilabel +>Janela de Resultados da Aplicação</guilabel +>. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-main --> + +<sect2 id="setup-ui"> +<title +>Seleccionar a Interface do Utilizador</title> + +<indexterm zone="setup-ui"> + <primary +>interface do utilizador</primary> + <secondary +>mudar de modos</secondary +></indexterm> +<indexterm zone="setup-ui"> + <primary +>mudar de modo de interface</primary +></indexterm> + +<para +>Como já foi dito nos <link linkend="uimodes-survey" +>Modos Disponíveis de Interface do Utilizador</link +>, existem quatro formas diferentes no &tdevelop; para configurar o espaço de trabalho, sendo eles: </para> +<itemizedlist> + <listitem +><para> + <link linkend="ideal-desc" +>Modo IDEAl</link> + </para +></listitem> + <listitem +><para> + <link linkend="mdi-desc" +>Modo de Janelas com Sub-molduras</link> + </para +></listitem> + <listitem +><para> + <link linkend="tabbed-desc" +>Modo por Páginas</link> + </para +></listitem> + <listitem +><para> + <link linkend="toplevel-desc" +>Modo de Janelas de Topo</link> + </para +></listitem> +</itemizedlist> + +<para +>Para mudar o modo da interface do utilizador, seleccione a <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Configurar o KDevelop</guilabel +> irá aparecer, onde então terá de seleccionar <guilabel +>Interface do Utilizador</guilabel +> no campo do lado esquerdo. Isto levá-lo-á à página de configuração mostrada à direita.</para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface-0.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Seleccione um modo de interface de utilizador</phrase +></textobject> + <caption +><para +>Seleccione um modo de interface de utilizador </para +></caption> + </mediaobject> +</screenshot> + +<para +>Seleccione a opção exclusiva para o modo de interface do utilizador que deseja utilizar e carregue em <guibutton +>OK</guibutton +>. </para> + +<note +><para +>Não se esqueça de reiniciar o &tdevelop; para que estas selecções façam efeito. </para +></note> + +<para +>Você você tiver seleccionado o <guilabel +>modo IDEAl</guilabel +> ou o <guilabel +>modo de páginas</guilabel +>, irão ficar disponíveis mais duas secções: a <link linkend="setup-ui-tabs" +>Usar Tabulações</link +> e <link linkend="setup-ui-hover" +>Usar o Fechar ao Passar</link +>. Estas permitem-lhe configurar em que circunstâncias é que os separadores das páginas serão mostrados no topo das janelas dos documentos e se você poderá fechar o documento ao carregar no ícone da página. </para> + +<para +>Apenas no <guilabel +>modo de janelas IDEAl</guilabel +>, existirá ainda mais uma secção de configuração, a <link linkend="setup-ui-toolview" +>Disposição das Páginas</link +>, a qual permite de facto seleccionar entre vários tamanhos dos separadores de páginas que rodeiam a área de trabalho principal neste modo. </para> + +<variablelist> +<varlistentry> +<term id="setup-ui-tabs" +>Configurar a Visualização da Barra de Páginas dos Documentos</term> +<listitem> +<para +>No modo IDEAl e no modo de páginas existirão páginas com nomes no topo dos diferentes documentos por omissão, de modo que possa seleccionar facilmente vários documentos diferentes ao carregar com o &LMB;. Se preferir ter mais espaço para as janelas dos documentos na área de trabalho principal do &tdevelop;, você poderá mudar para outro comportamento na secção de configuração <guilabel +>Usa Tabulações</guilabel +>. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Sempre</guilabel +></term> + <listitem +><para +>Este é o modo por omissão — mostra uma página cujo separador tem um ícone e o nome do documento na área de trabalho principal do &tdevelop;. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Quando mais que uma</guilabel +></term> + <listitem +><para +>Não mostra o documento numa página, quando só existe de facto um documento aberto. Se existir mais do que um, todavia, o &tdevelop; irá mostrar a barra de páginas normalmente como aparece na selecção <guilabel +>Sempre</guilabel +>. Você poderá seleccionar este modo se trabalhar num único documento na maior parte do tempo, dado que oferece um pouco mais de espaço vertical. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Nunca</guilabel +></term> + <listitem +><para +>Nunca mostra nenhuma página de selecção de documentos. Você poderá preferir este modo se você usa raramente o rato para mudar de documentos. Fornece mais espaço vertical para todas as janelas de documentos. Para seleccionar outra janela de documento ou fechar alguma, use o menu <guimenu +>Janela</guimenu +> do &tdevelop;. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-hover" +>Configurar para Fechar um Documento com um 'Click' na sua Página</term> +<listitem> +<para +>Quando você tiver configurado o &tdevelop; para mostrar a barra de páginas dos documentos, seja sempre ou apenas quando é mostrado mais do que um documento na área de trabalho, você poderá adicionar mais funcionalidades aos separadores das páginas para além da sua capacidade de selecção de documentos. Use a secção de configuração <guilabel +>Usar o Fecho ao Passar</guilabel +> para tal. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Não</guilabel +></term> + <listitem +><para +>Este é o comportamento normal. Não é adicionada mais nenhuma funcionalidade extra às páginas. Elas poderão ser usadas apenas para seleccionar as janelas dos documentos com o &LMB;. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Sim</guilabel +></term> + <listitem +><para +>Quando você tiver seleccionado esta opção exclusiva, o &tdevelop; irá permitir fechar uma janela de um documento com um 'click' do &LMB;. Use o rato para apontar para o pequeno ícone do lado esquerdo do separador de páginas. Ele irá mudar para um símbolo de fecho. Agora, carregue com o &LMB; neste símbolo alterado para que o &tdevelop; feche a janela do documento correspondente. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Sim, Atrasado</guilabel +></term> + <listitem +><para +>Depois de seleccionar esta opção, o &tdevelop; permitirá fechar uma janela de um documento como é mostrado no caso do <guilabel +>Sim</guilabel +> descrito em cima. O ícone não irá mudar instantaneamente, contudo, havendo neste caso um pequeno atraso antes de o ícone aparecer. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-toolview" +>Configurar a Disposição das Páginas</term> +<listitem> +<para +>A secção de configuração <guilabel +>Disposição das Páginas</guilabel +> estará disponível apenas no modo IDEAl. Use estes botões para configurar a aparência das páginas que rodeiam a área de trabalho principal neste modo. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Ícones</guilabel +></term> + <listitem> + <para +>Cada página irá mostrar apenas um ícone. Se a ferramenta associada estiver visível, a página irá abrir e aparecerá um texto descritivo no seu separador. Você poderá usar este modo se trabalhar num monitor com uma resolução limitada. </para> + <para +>Os ícones não são muito descritivos, de qualquer forma. Se você quiser saber que ferramenta está associada a uma dada página, coloque o cursor do rato sobre ela e espere um segundo. Irá então aparecer uma dica com o nome da ferramenta. </para> + </listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Texto</guilabel +></term> + <listitem +><para +>Este é o modo de apresentação das ferramentas por omissão. Cada página mostra o nome da sua ferramenta associada. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Texto e Ícones</guilabel +></term> + <listitem +><para +>Se as ferramentas normais parecem demasiado planas para si e você está a trabalhar num monitor de alta resolução, você poderá seleccionar esta opção. Fará com que o nome da ferramenta associada seja mostrado em cada página, para além de um ícone à esquerda dele, tornando as páginas mais fáceis de compreender. Veja a imagem das <link linkend="folded-toolview-tabs" +>Páginas de Ferramentas Fechadas</link +> em baixo para um exemplo. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Páginas das Ferramentas Fechadas</term> +<listitem> +<para +>Se você seleccionou o modo IDEAl, com as páginas a mostrarem os textos (com ou sem os ícones a acompanhar), você não precisa de se preocupar em estar escondido por detrás de uma janela de ferramentas. Se uma das janelas das ferramentas ocupar mais espaço do que está disponível para mostrar todas as páginas (verticais), elas fechar-se-ão como é mostrado nesta figura: </para> + +<screenshot> + <mediaobject id="folded-toolview-tabs"> + <imageobject> + <imagedata fileref="folded-tabs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>As páginas de ferramentas fecham-se para não ficarem escondidas detrás de outra janela</phrase +></textobject> + <caption +><para +>As páginas de ferramentas fecham-se para não ficarem escondidas detrás de outra janela </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>A janela de ferramentas activa deverá ser mostrada fixa (sem sobreposição), partilhando a área de trabalho com outras janelas, para permitir esse fecho de páginas. Carregue no pequeno quadrado no contorno da janela para conseguir isto, tal como é mostrado no exemplo. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-ui --> + +<sect2 id="setup-editor"> +<title +>Seleccionar um Editor</title> + +<para +>O &tdevelop; permite-lhe seleccionar a sua ferramenta de edição de texto favorita. Marque o item <guilabel +>Editor</guilabel +> da árvore de selecção da lado esquerdo da janela <guilabel +>Configurar o KDevelop</guilabel +>. Será mostrada a seguinte janela à direita. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-editor.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Seleccionar um editor</phrase +></textobject> + <caption +><para +>Seleccionar um editor </para +></caption> + </mediaobject> +</screenshot> + +<para +>Para seleccionar um novo editor, carregue na seta da lista. Dependendo das interfaces dos componentes de edição com que a sua versão do &kde; foi compilada, irá aparecer uma lista dos editores que poderá seleccionar (veja a nota <link linkend="setup-editor-kparts" +>Importante</link +> em baixo para tal). Carregue no editor da sua preferência e carregue em <guilabel +>OK</guilabel +>. De momento, existem três possibilidades: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Editor de Texto Avançado Incorporado</guilabel +></term> + <listitem +><para +>Esta é a componente de edição normal do &kde;, a <application +>Kate</application +>. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Componente Embebida do Vim</guilabel +></term> + <listitem> + <para +>Esta oferece a aparência e comportamento do seu editor de base do &Linux; que é o <application +>vi</application +>. </para> + <note +><itemizedlist> + <listitem +><para +>Você precisa de ter uma aplicação <application +>Vim</application +> adequada instalada. Dê uma vista de olhos no <ulink url="http://www.freehackers.org/kvim/" +>KVim</ulink +> para mais informações. </para +></listitem> + <listitem +><para +>Para além disso, você precisa de configurar o componente KParts do Vim no <guilabel +>Centro de Controlo do &kde;</guilabel +> (<menuchoice +><guimenuitem +>Componentes do KDE</guimenuitem +><guimenuitem +>Configuração do Componente Vim</guimenuitem +></menuchoice +>) antes de o poder usar. </para +></listitem> + </itemizedlist +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Editor de Texto Baseado no Qt Designer</guilabel +></term> + <listitem +><para +>Este é o editor que o &Qt; oferece no seu componente <application +>Designer</application +>. </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Estas interfaces de edição estão completamente integradas no conceito de IDE do &tdevelop;. Em particular, a possibilidade de saltar para linha de código-fonte responsável por um dado erro, se carregar no texto da sua mensagem na janela de <guilabel +>Mensagens</guilabel +> é oferecida por elas. </para> + +<note +><para +>A mudança de editor não irá afectar os ficheiros já abertos. Existem duas possibilidades de prosseguir. Ou fecha todas as janelas de texto abertas e reabre-as uma a uma ou então simplesmente fecha o projecto inteiro e abre-o outra vez. As janelas serão então automaticamente abertas com a nova interface de edição de texto. </para +></note> + +<important id="setup-editor-kparts" +><para +>O &tdevelop; deixa-o usar as interfaces de edição que foram registadas no &kde; e que oferecem uma interface do KatePart. Se você acha que falta uma das selecções mostradas acima, verifique a sua instalação do &kde; para saber se o KPart foi instalado correctamente. </para +></important> +</sect2 +> <!-- setup-editor --> + +<sect2 id="setup-format"> +<title +>Seleccionar um Estilo de Formatação de Código</title> + +<para +>O &tdevelop; formata automaticamente o texto de código de um estilo predefinido. Este estilo é altamente configurável. </para> + +<note +><para +>A funcionalidade de nova formatação de código está disponível apenas para o C, o C++ e o &Java;, de momento. Em especial, você não a poderá usar para as linguagens de 'scripting' como o PHP. Isto é porque o &tdevelop; usa a aplicação <ulink url="http://astyle.sourceforge.net/" +>astyle</ulink +> para implementar esta funcionalidade. </para +></note> + +<para +>Para configurar um estilo de formatação específico, seleccione <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Personalizar o KDevelop</guilabel +> irá aparecer, onde terá de seleccionar o <guilabel +>Formatador de Código</guilabel +> na árvore da esquerda. Isto irá mostrar uma série de três páginas de configuração à direita, nomeadamente uma <link linkend="setup-format-general" +>Configuração Geral da Formatação</link +>, uma <link linkend="setup-format-indent" +>Configuração do Estilo de Indentação</link +> e <link linkend="setup-format-other" +>Outra Configuração de Formatação</link +>. </para> + +<tip +><para +>Todas as mudanças de estilo aplicam-se apenas ao ficheiro acabado de introduzir. Se você quiser mudar o estilo de formatação de um texto de código já existente, você terá de usar explicitamente o comando <menuchoice +><guimenu +>Editar</guimenu +><guimenuitem +>Reformatar o Código</guimenuitem +></menuchoice +>. </para +></tip> + +<note +><para +>A consequência exacta destas definições de formatação do estilo dependem do <link linkend="setup-editor" +>editor</link +> que usa. De momento, a maioria das configurações são adequadas para a componente de edição do Kate (o <quote +>Editor de Texto Avançado Incorporado</quote +>). Outros editores (⪚ o editor do Qt) poderão basear-se apenas na sua configuração própria. Você terá de experimentar neste caso para saber os efeitos exactos da configuração de estilo oferecida aqui. </para +></note> + +<warning +><para +>Poderão existir incompatibilidades entre a configuração do estilo aqui oferecida e o editor que usa, até mesmo nos casos extremos, em que poderá corromper os seus ficheiros. Certifique-se que tem uma cópia de segurança dos seus ficheiros de código antes de tentar usar a sua configuração com um editor incompatível com o &kde;. </para +></warning> + +<sect3 id="setup-format-general"> +<title +>Configuração Geral da Formatação</title> + +<para +>A página <guilabel +>Geral</guilabel +> da janela do <guilabel +>Formatador de Código</guilabel +> permite-lhe seleccionar um de cinco estilos predefinidos de formatação de código. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configuração geral do estilo de formatação de código</phrase +></textobject> + <caption +><para +>Configuração geral do estilo de formatação de código </para +></caption> + </mediaobject> +</screenshot> + +<para +>Será mostrado um exemplo de código formatado no campo à direita. Se nenhum dos estilos predefinidos é do seu agrado, você poderá carregar na opção de topo <guilabel +>Definido pelo utilizador</guilabel +> e definir as suas preferências de formatação de código nas outras duas páginas que ficarão disponíveis. </para> + +<note +><para +>De momento, só os estilos de formatação predefinidos é que serão demonstrados com um texto de exemplo. Se você decidir definir o seu próprio estilo, não será apresentado nenhum texto de exemplo. Você terá de experimentar no próprio texto do código actual para ajustar a configuração ao seu gosto. </para +></note> + +</sect3 +> <!-- setup-format-general --> + +<sect3 id="setup-format-indent"> +<title +>Configuração do Estilo de Indentação</title> + +<para +>Uma indentação adequada é a forma principal de melhorar a legibilidade do texto do código. Se você seleccionou a página <guilabel +>Indentação</guilabel +> na janela do <guilabel +>Formatador do Código</guilabel +>, ser-lhe-á apresentada uma série de opções de formatação, agrupadas em três opções, como as que aparecem a seguir. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-indent.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configuração do estilo da indentação do código</phrase +></textobject> + <caption +><para +>Configuração do estilo da indentação do código </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Configuração por Omissão</term> +<listitem> +<para +>As escolhas de formato predefinidas fazem com que o código lembre o estilo de formatação da ANSI:</para> + +<screen +>namespace espacoXpto +{ + int Xpto() + { + if (eOla) + { + ola(); + return 1; + } + else + return 0; + } +} +</screen> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-format-indent-filling" +>Definir o Tamanho e os Caracteres da Indentação</term> +<listitem> +<para +>As opções exclusivas agrupadas no grupo <guilabel +>Preenchimento</guilabel +>, definem como é que a indentação do código será feita.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Usar tabulações</guilabel +></term> + <listitem> + <para +>Isto fará com que o editor insira um carácter de tabulação por cada nível de indentação. O tamanho da tabulação está predefinido na configuração do editor (é normalmente de 8 ou 4 caracteres). Use o <menuchoice +><guimenu +>Configuração</guimenu +><guimenuitem +>Configurar o Editor...</guimenuitem +></menuchoice +> para o definir de novo. </para> + <note +><para +>O procedimento de definição da largura da tabulação actual depende do editor que seleccionou no passo de configuração em <link linkend="setup-editor" +>Seleccionar um Editor</link +>. Você terá de ver na ajuda correspondente do editor para descobrir como fazê-lo. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Usar espaços</guilabel +></term> + <listitem +><para +>Se você seleccionar esta opção, o editor irá introduzir um conjunto de espaços por cada nível de indentação. Mude o número do valor por omissão 2 para o tamanho que preferir. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Entidades Indentadas</term> +<listitem> +<para +>Isto define quais as entidades de (C/C++) que serão formatadas com uma indentação extra para além do nível de indentação actual.</para> + +<para +>Por omissão, só os <guilabel +>namespaces</guilabel +> (espaços de nomes) e os <guilabel +>labels</guilabel +> (identificadores) terão uma indentação extra. Você poderá querer experimentar com várias opções para se ajustar a essas indentações extra de acordo com o seu agrado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Continuação</term> +<listitem> +<para +>As opções aqui agrupadas aplicam-se aos casos em que o sistema de formatação de código reparte automaticamente as linhas de código grandes. Ele tem dois casos especiais em conta, nomeadamente os casos em que as indentações são demasiado grandes e é necessário haver espaço restante para o código e para as condições, que deverão ter níveis de indentação extra para que sejam suficientemente perceptíveis. </para> + +<note +><para +>Isto aplica-se aos <emphasis +>casos de mudanças de linha estáticas</emphasis +> apenas quando é usado um tamanho de linha máximo fixo no código. Se você configurar o seu editor para repartir dinamicamente as linhas apenas na visualização (o que é possível, na componente de edição do &kate;), os efeitos destas configurações não serão visíveis. </para +></note> + +<variablelist> + <varlistentry> + <term +><guilabel +>Máximo na instrução</guilabel +></term> + <listitem> + <para +>Esta configuração limita a indentação máxima possível para as linhas de continuação para que sobre espaço suficiente para manter o texto legível. Nenhuma linha de continuação será indentada para além do número de colunas que seleccionar neste campo. </para> + <para +>O tamanho por omissão está definido como 40 colunas de caracteres (metade de uma página de 80 colunas normal). Você poderá querer aumentar este valor para ter em conta o papel mais largo (⪚ se você usa a impressão no modo paisagem para o seu código) ou então diminui-lo se quiser ter em conta a configuração das margens nas suas impressões. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Mínimo nas condições</guilabel +></term> + <listitem> + <para +>As condições ou o código que se segue ⪚ a um operador de atribuição deverão ter normalmente uma indentação extra nas linhas de continuação para manter o texto legível. A quantidade desta indentação extra é aqui definida. </para> + <para +>O valor por omissão é igual a <quote +>Duas vezes o actual</quote +>, o que significa que as condições continuadas irão ter um nível de indentação extra em relação ao tamanho de indentação normal que seleccionou no grupo <link linkend="setup-format-indent-filling" +>Preenchimento</link +>. Você poderá alterar esta indentação extra para outro tamanho fixo (incluindo zero), usando as setas ou indicando o valor directamente. </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-format-indent --> + +<sect3 id="setup-format-other"> +<title +>Outras Configurações de Formatação</title> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-other.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Outra configuração do estilo de formatação do código</phrase +></textobject> + <caption +><para +>Outra configuração do estilo de formatação do código </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Controlar a posição das chavetas</term> +<listitem> +<para +>As opções no grupo (talvez mal chamado) <guilabel +>Parêntesis</guilabel +> controlam a posição das chavetas que delimitam os blocos no código em C/C++. Existem três possibilidades para você seleccionar.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Interrupção</guilabel +></term> + <listitem> + <para +>Esta insere uma quebra de linha antes de cada chaveta de abertura. Ambas as chavetas delimitadoras de um bloco serão colocadas ao mesmo nível de indentação que a instrução de topo do bloco.</para> + +<screen +>namespace espacoXpto +{ + int Xpto() + { + if (eOla) + { + ola(); + return 1; + } + else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Anexar</guilabel +></term> + <listitem> + <para +>Isto irá manter a chaveta de abertura de um bloco alinhada com a instrução de topo do bloco. As chavetas de fecho estarão ao mesmo nível de indentação que a instrução de topo do bloco. O <token +>else</token +> de uma instrução <token +>if</token +> será mantido em linha com a chaveta de fecho do bloco anterior. </para> +<screen +>namespace espacoXpto { + int Xpto() { + if (eOla) { + ola(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Estilo do Linux</guilabel +></term> + <listitem> + <para +>Este é um compromisso entre os estilos listados acima. As chavetas de delimitação dos blocos serão colocadas em linhas extra. As chavetas que abrem um bloco numa instrução condicional ou de ciclo serão mantidas na mesma linha. </para> +<screen +>namespace espacoXpto +{ + int Xpto() + { + if (eOla) { + ola(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controlar os Espaços Extra</term> +<listitem> +<para +>Por omissão, o &tdevelop; minimiza a utilização dos espaços no código. </para> + + +<screen +>if (eOla(argXpto)==valorOla) +</screen> + +<para +>Você poderá aumentar a legibilidade se forçar o sistema de formatação de código a inserir os espaços extra em posições especiais.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Adicionar espaços à volta dos parêntesis</guilabel +></term> + <listitem> + <para +>De facto, o que esta opção pretende fazer é adicionar espaços à volta do texto entre parêntesis. Isto aumenta a legibilidade dos argumentos das funções e das condições.</para> +<screen +>if ( eOla( argXpto )==valorOla ) +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Adicionar espaços à volta dos operadores</guilabel +></term> + <listitem> + <para +>Isto irá colocar espaços à volta dos operadores de atribuição e de comparação para aumentar a legibilidade.</para> +<screen +>if (eOla(argXpto) == valorOla) +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controlar a formatação das construções de uma linha</term> +<listitem> +<para +>Existem alguns casos em que você não quer que o sistema de formatação de código divida uma linha em duas. Para o código de C/C++, isto poderá ser controlado aqui.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Manter as instruções de uma linha</guilabel +></term> + <listitem +><para +>Isto mantém as instruções de uma linha em conjunto, mesmo nas situações em que elas excedem um tamanho máximo de linha. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Manter os blocos de uma linha</guilabel +></term> + <listitem +><para +>Isto mantém os blocos de uma única linha em conjunto, mesmo nas situações em que elas excedem um tamanho máximo de linha. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + + +</sect3 +> <!-- setup-format-other --> + +</sect2 +> <!-- setup-format --> + +<sect2 id="setup-snippets"> +<title +>Configurar a Ferramenta de Excertos de Código</title> + +<para +>Ao editar no &tdevelop; você poderá gravar excertos de código usados frequentemente como <link linkend="editing-snippets" +>Excertos de Código</link +>. Para configurar as capacidades da componente de excertos de código, seleccione a <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Configurar o KDevelop</guilabel +> irá aparecer, onde então terá de seleccionar <guilabel +>Excertos de Código</guilabel +> no campo do lado esquerdo. Isto levá-lo-á à página de configuração mostrada em baixo. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-snippets.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar a ferramenta de excertos de código</phrase +></textobject> + <caption +><para +>Configurar a Ferramenta de Excertos de Código </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Antevisão da Activação de um Excerto</term> +<listitem> +<para +>Assinale a opção <quote +><guilabel +>Mostrar o texto do excerto na dica</guilabel +></quote +> se você quiser ver o texto armazenado numa janela de dica de ferramentas, sempre que você deixar o cursor do rato sobre o título desse excerto de código.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Lidar com as Variáveis dos Excertos</term> +<listitem> +<para +>A ferramenta de <guilabel +>Excertos de Código</guilabel +> permite a definição de texto variável em locais bem definidos, sempre que desejar inserir um excerto num ficheiro. Para conseguir isto, os <guilabel +>Excertos de Código</guilabel +> têm o seu próprio mecanismo de variáveis. Você poderá configurar o seu comportamento no grupo <guilabel +>Variáveis</guilabel +>.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Separador</guilabel +></term> + <listitem +><para +>A ferramenta de <guilabel +>Excertos de Código</guilabel +> distingue as variáveis no texto, rodeando os nomes das variáveis com símbolos delimitadores especiais. Para usar o seu próprio delimitador, altere o valor predefinido <guilabel +>$</guilabel +> no campo <guilabel +>Delimitador</guilabel +>. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Método de introdução das variáveis</guilabel +></term> + <listitem +><itemizedlist> + <listitem +><para +><guilabel +>Uma janela para cada variável do excerto</guilabel +> – irá mostrar uma janela separada para cada variável que a ferramenta encontre ao inserir o excerto de código seleccionado. </para +></listitem> + <listitem +><para +><guilabel +>Uma janela para todas as variáveis do excerto</guilabel +> – irá mostrar uma janela comum, onde o utilizador terá de de preencher os valores de todas as variáveis antes de o excerto ser inserido </para +></listitem> + </itemizedlist +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-snippets --> + +<sect2 id="setup-fileselector"> +<title +>Configurar o Selector de Ficheiros</title> + +<para +>O &tdevelop; oferece um <guilabel +>Selector de Ficheiros</guilabel +> que, quando é carregado no arranque, permite navegar até chegar a qualquer ficheiro ou directoria do sistema. </para> + +<screenshot id="setup-fileselector-image"> + <mediaobject> + <imageobject> + <imagedata fileref="file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>O selector de ficheiros no modo IDEAl</phrase +></textobject> + <caption +><para +>O selector de ficheiros (modo IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<para +>O comportamento do <guilabel +>Selector de Ficheiros</guilabel +> é altamente configurável. Seleccione a <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Configurar o KDevelop</guilabel +> irá aparecer, onde então terá de seleccionar <guilabel +>Selector de Ficheiros</guilabel +> no campo do lado esquerdo. Isto levá-lo-á à página de configuração mostrada em baixo.</para> + + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar o selector de ficheiros</phrase +></textobject> + <caption +><para +>Configurar o selector de ficheiros </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Configurar a Barra de Ferramentas</term> +<listitem> +<para +>Existe uma barra de ferramentas no topo do <guilabel +>Selector de Ficheiros</guilabel +>, que poderá ser configurada como de costume no grupo <guilabel +>Barra de Ferramentas</guilabel +>.</para> + +<procedure id="setup-fileselector-add-action"> + <title +>Adicionar uma Acção à Barra de Ferramentas</title> + <step> + <para +>Seleccione um item na lista das <guilabel +>Acções seleccionadas</guilabel +> à direita, para que a acção nova seja então introduzida. </para> + </step> + <step> + <para +>Seleccione a acção a ser introduzida na lista de <guilabel +>Acções disponíveis</guilabel +> à esquerda. </para> + </step> + <step> + <para +>Carregue na seta direita (em cima) entre as duas listas. </para> + <para +>A acção será removida da lista de <guilabel +>Acções disponíveis</guilabel +> e será introduzida nas <guilabel +>Acções seleccionadas</guilabel +> por baixo do item seleccionado. </para> + </step> +</procedure> + +<procedure> + <title +>Remover uma Acção da Barra de Ferramentas</title> + <step> + <para +>Seleccione o item a ser removido da lista de <guilabel +>Acções seleccionadas</guilabel +> à direita. </para> + </step> + <step> + <para +>Carregue na seta para a esquerda (em baixo) entre as listas. </para> + <para +>O item seleccionado será removido da lista de <guilabel +>Acções seleccionadas</guilabel +> e colocada de novo na lista de <guilabel +>Acções disponíveis</guilabel +>. </para> + </step> +</procedure> + +<procedure> + <title +>Reordenar as Acções na Barra de Ferramentas</title> + <step> + <para +>Seleccione a acção a ser mudada de posição na lista de <guilabel +>Acções seleccionadas</guilabel +> à direita. </para> + </step> + <step> + <para +>Carregue nas setas para cima e para baixo, à direita desta lista. </para> + <para +>O item seleccionado será movido para cima ou para baixo na lista de <guilabel +>Acções seleccionadas</guilabel +>. </para> + </step> +</procedure> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-fileselector-autosync" +>Definir Quando o Conteúdo Deverá Mudar</term> +<listitem> +<para +>A actualização do conteúdo da janela do <guilabel +>Selector de Ficheiros</guilabel +> leva tempo e ocupa alguns recursos, especialmente ao mudar para outra directoria. Como tal, o <guilabel +>Selector de Ficheiros</guilabel +> está configurado por omissão de forma a que o seu conteúdo só se altera a pedido, &ie; quando você selecciona outra directoria ou quando desejar explicitamente actualizar o seu conteúdo. </para> + +<note +><para +>Carregue no botão <guilabel +>Actualizar</guilabel +> da barra de ferramentas para actualizar o conteúdo do <guilabel +>Selector de Ficheiros</guilabel +>. Esta barra de ferramentas não está disponível por omissão, todavia. Você precisa de a <link linkend="setup-fileselector-add-action" +>inserir</link +> primeiro. </para +></note> + +<para +>Você poderá configurar o <guilabel +>Selector de Ficheiros</guilabel +> para reflectir imediatamente certas alterações no seu trabalho. As opções do grupo <guilabel +>Auto-Sincronização</guilabel +> da janela de configuração são responsáveis por isto. </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Quando um documento ficar activo</guilabel +></term> + <listitem +><para +>Se você seleccionar esta opção, o conteúdo do <guilabel +>Selector de Ficheiros</guilabel +> será actualizado sempre que for para outro documento aberto, ⪚ quando você carrega na página da janela de edição respectiva no modo IDEAl. Se necessário, o <guilabel +>Selector de Ficheiros</guilabel +> irá mudar para a directoria a que este ficheiro pertence e actualizará a área visível para mostrar o conteúdo actual da mesma. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Quando um documento for aberto</guilabel +></term> + <listitem +><para +>Se você seleccionar esta opção, o conteúdo da janela do <guilabel +>Selector de Ficheiros</guilabel +> será actualizado sempre que um documento é aberto, ⪚ pela opção do menu <menuchoice +><guimenu +>Ficheiro</guimenu +><guimenuitem +>Abrir</guimenuitem +></menuchoice +>. Se necessário, o <guilabel +>Selector de Ficheiros</guilabel +> irá mudar para a directoria a que este ficheiro pertence e irá refrescar a visualização para mostrar o conteúdo actual. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Quando o selector de ficheiros ficar visível</guilabel +></term> + <listitem +><para +>Se seleccionar esta opção, o conteúdo do <guilabel +>Selector de Ficheiros</guilabel +> será actualizado sempre que ficar visível de novo. Se necessário, o <guilabel +>Selector de Ficheiros</guilabel +> irá mudar para a directoria a que este ficheiro pertence e irá refrescar a visualização para mostrar o conteúdo actual. </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Você poderá combinar estas opções para ajustar o comportamento da actualização do <guilabel +>Selector de Ficheiros</guilabel +> ao seu gosto. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controlar o Histórico nas Listas</term> +<listitem> +<para +>Existem duas listas na parte superior e na inferior da janela de conteúdo do <guilabel +>Selector de Ficheiros</guilabel +> que controlam a directoria a ser mostrada (a lista no topo) e os filtros a serem aplicados à janela de ficheiros (a lista de baixo). Um histórico das opções mais recentes é mantido no campo de selecção de cada lista. Você poderá configurar o número de itens do histórico da seguinte forma.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Recordar as localizações</guilabel +></term> + <listitem +><para +>Indique aqui o número máximo de selecções de directorias que a lista de cima deverá recordar. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Recordar os filtros</guilabel +></term> + <listitem +><para +>Indique aqui o número máximo de definições de filtros que a lista em baixo deverá recordar. </para +></listitem> + </varlistentry> + +<varlistentry> +<term +>Controlar o que Deverá Ser Recordado Entre Sessões</term> +<listitem> +<para +>Por omissão, o <guilabel +>Selector de Ficheiros</guilabel +> está configurado de forma a que mostre o conteúdo da sessão mais recente no próximo arranque do &tdevelop;. Você poderá alterar este comportamento no grupo de configuração <guilabel +>Sessão</guilabel +>. </para> + +<note +><para +>Se o &tdevelop; foi reiniciado automaticamente pelo gestor de sessões do &kde;, as alterações a estas opções não farão efeito. Neste caso, a configuração da localização e dos filtros da sessão mais recente do &kde; será sempre reposta. </para +></note> +</listitem> +</varlistentry> + + <varlistentry> + <term +><guilabel +>Repor a localização</guilabel +></term> + <listitem> + <para +>Desligue esta opção se não quiser que a localização apresentada seja guardada entre sessões. </para> + <note +><para +>Se você seleccionou uma das opções de <link linkend="setup-fileselector-autosync" +>auto-actualização</link +>, a localização apresentada poderá mudar automaticamente, independentemente do que foi recordado da sessão recente. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Repor os filtros</guilabel +></term> + <listitem> + <para +>Desligue esta opção se não quiser que os filtros apresentados sejam guardados entre sessões. </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-fileselector --> + +<sect2 id="setup-new-file-wizard"> +<title +>Configurar o Assistente de Ficheiros Novos</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!-- setup-new-file-wizard --> + +</sect1 +> <!-- setup-general --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-docu"> +<title +>Configurar a Documentação</title> + +<para +>O &tdevelop; contém uma funcionalidade de documentação muito poderosa que fornece o acesso a vários tipos de documentação extensa. Por exemplo, no modo IDEAl, você irá encontrar uma página de <guilabel +>Documentação</guilabel +> do lado direito da área de trabalho. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="documents-contents.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>A árvore de documentação do &tdevelop; no modo IDEAl</phrase +></textobject> + <caption +><para +>A árvore de documentação do &tdevelop; (modo IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>O &tdevelop; precisa de ter carregado o 'plugin' de <guilabel +>Documentação</guilabel +> para ver a árvore de documentação. Veja as <link linkend="setup-plugins" +>Ferramentas em 'Plugins'</link +> para mais informações. </para +></note> + +<para +>Você poderá configurar o conteúdo desta árvore de documentação se seleccionar a <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Configurar o KDevelop</guilabel +> irá aparecer, onde então terá de seleccionar <guilabel +>Documentação</guilabel +> no campo do lado esquerdo. </para> + +<para +>A <link linkend="configure-docu-general" +>página de configuração</link +> que é mostrada apresenta um conjunto de páginas de configuração, nomeadamente: </para> + +<simplelist> + <member +><link linkend="setup-docu-general" +>Colectâneas de Documentação</link +></member> + <member +><link linkend="setup-docu-textsearch" +>Pesquisa por Texto Completo</link +></member> + <member +><link linkend="setup-docu-other" +>Outro</link +></member> +</simplelist> + +<sect2 id="setup-docu-general"> +<title +>Configurar as Colectâneas de Documentação</title> + +<para +>A configuração da documentação foi dividida numa série de colectâneas de documentação, em que cada uma fornece o acesso aos ficheiros de documentação de um determinado formato e tipo de conteúdo únicos. Esta configuração controla quais os itens de documentação que serão listados na página de <guilabel +>Conteúdo</guilabel +> da funcionalidade de <guilabel +>Documentação</guilabel +> do &tdevelop;, e como é que o utilizador pode aceder aos detalhes da documentação, através de procuras indexadas e pelo texto completo. </para> +<para +>A página de <guilabel +>Documentação</guilabel +> oferece uma série de páginas de configuração que são ordenadas verticalmente como uma pilha de cartões de índice. Cada uma das páginas, de cada vez, irá abrir ao carregar no título do seu cartão de índice: </para> +<simplelist> + <member +><link linkend="setup-docu-general-qt" +>Colectânea de Documentação do &Qt;</link +></member> + <member +><link linkend="setup-docu-general-chm" +>Colectânea de Documentação CHM</link +></member> + <member +><link linkend="setup-docu-general-dox" +>Colectânea de Documentação do Doxygen</link +></member> + <member +><link linkend="setup-docu-general-toc" +>Colectânea de Documentação do TOC do &tdevelop;</link +></member> + <member +><link linkend="setup-docu-general-devhelp" +>Colectânea de Documentação do DevHelp</link +></member> + <member +><link linkend="setup-docu-general-custom" +>Colectânea de Documentação Personalizada</link +></member> +</simplelist> + +<para id="configure-docu-general"> +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar as colectâneas de documentação</phrase +></textobject> + <caption +><para +>Configurar as colectâneas de documentação </para +></caption> + </mediaobject> +</screenshot> +</para> + +<sect3 id="setup-docu-general-common"> +<title +>Estrutura Comum de Configuração da Documentação</title> + +<para +>Todas as páginas de configuração da página de <guilabel +>Documentação</guilabel +> usam uma disposição comum. Você irá encontrar os itens de documentação disponíveis de momento, listados na página aberta à esquerda, bem como uma série de botões à direita. </para> + +<variablelist> +<varlistentry> +<term id="setup-docu-buttons" +>Botões de Gestão da Lista de Documentação</term> +<listitem> +<para +>Existem três botões disponíveis para manter o conteúdo das páginas de configuração da documentação: </para> + +<variablelist> + <varlistentry> + <term +><guibutton +>Adicionar</guibutton +></term> + <listitem> + <para +>Abre uma janela de <guilabel +>Propriedades do Catálogo de Documentação</guilabel +>, tal como é mostrado em baixo, na qual poderá seleccionar a localização da fonte de documentação a adicionar, bem como lhe poderá atribuir um nome.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Editar</guibutton +></term> + <listitem> + <para +>Abre uma janela de <guilabel +>Propriedades do Catálogo de Documentação</guilabel +>, tal como é mostrado em baixo, na qual poderá alterar a localização da fonte de documentação a adicionar, bem como lhe poderá mudar o nome.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Remover</guibutton +></term> + <listitem> + <para +>Remove o item de documentação seleccionado da lista.</para> + <note +><para +>O item só será removido da lista. Todas as fontes de documentação permanecerão inalteradas. Você terá de as remover explicitamente por outros meios. </para +></note> + </listitem> + </varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-edit.png" format="PNG"/> + </imageobject> + <caption +><para +>Adicionar ou alterar um item de documentação </para +></caption> + </mediaobject> +</screenshot> + +<para +>O botão à direita do campo de <guilabel +>Localização</guilabel +> abre uma janela de directorias, cujos itens serão filtrados de acordo com o tipo de ficheiro da página de configuração seleccionada. </para> +<para +>O campo de <guilabel +>Título</guilabel +> poderá não estar acessível, dependendo do tipo de documentação a ser mantido. </para> +</listitem> +</varlistentry> +<varlistentry> +<term id="setup-docu-columns" +>Estrutura da Lista de Documentação</term> +<listitem> +<para +>Cada página de configuração de documentação mostra os itens de documentação listados numa tabela com quatro colunas: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>TOC</guilabel +></term> + <listitem> + <para +>Se esta opção estiver assinalada, este item de documentação irá aparecer na página de <guilabel +>Conteúdo</guilabel +> da funcionalidade de <guilabel +>Documentation</guilabel +> do &tdevelop;. </para> + <note +><para +>Se desligar a opção <guilabel +>TOC</guilabel +>, esta irá por sua vez desactivar as opções <guilabel +>Índice</guilabel +> e <guilabel +>Procurar</guilabel +> (ver em baixo). Como tal, você não poderá ter itens da colectânea de documentação indexados mas que não estejam visíveis no conteúdo. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Índice</guilabel +></term> + <listitem> + <para +>Se esta opção estiver assinalada, será criado um índice interno a partir deste item de documentação. Isto oferece um acesso rápido à documentação, através do uso das páginas de <guilabel +>Índice</guilabel +> e (opcionalmente) <guilabel +>Procurar</guilabel +> da funcionalidade de <guilabel +>Documentation</guilabel +> do &tdevelop;. </para> + <note> + <para +>O índice interno será criado da primeira vez que o utilizador seleccionar a página de <guilabel +>Índice</guilabel +>. Isto irá atrasar consideravelmente o primeiro acesso, porque o índice será lido do disco e depois é então colocado numa 'cache'. </para> + <para +>Todas as pesquisas subsequentes irão usar então esta 'cache' e, por isso, irão funcionar muito mais depressa. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Procurar</guilabel +></term> + <listitem> + <para +>Se esta opção estiver assinalada, o conteúdo deste item de documentação será incluído nas localizações de procura por texto completo da página <guilabel +>Procurar</guilabel +> da funcionalidade de <guilabel +>Documentation</guilabel +> do &tdevelop;. </para> + <note> + <para +>O &tdevelop; usa a colectânea de aplicações do 'htdig' para efectuar as pesquisas por texto completo. Esta pesquisa é feita sobre um índice interno que a plataforma do 'htdig' tem de criar antes de poder ser usada. </para> + <para +>Todas as alterações feitas na opção <guilabel +>Procurar</guilabel +> irão apenas afectar as pesquisas depois de reconstruir o índice da página <guilabel +>Procurar</guilabel +> da funcionalidade de <guilabel +>Documentation</guilabel +> do &tdevelop;. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Título</guilabel +></term> + <listitem +><para +>Este é o nome do item de Documentação que será mostrado na página de <guilabel +>Conteúdo</guilabel +> da funcionalidade de <guilabel +>Documentação</guilabel +> do &tdevelop;. </para +></listitem> + </varlistentry> +</variablelist> + +<note +><para +>As versões anteriores do &tdevelop; permitiam seleccionar os itens de documentação por projecto. Isto já não é mais possível. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-docu-general-common --> + +<sect3 id="setup-docu-general-qt"> +<title +>Colecções de documentação do &Qt;</title> + +<para +>Nesta página de configuração é configurada toda a documentação do &Qt;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar a colectânea de documentação do &Qt;</phrase +></textobject> + <caption +><para +>Configurar a colectânea de documentação do &Qt; </para +></caption> + </mediaobject> +</screenshot> + +<para +>Normalmente, o &tdevelop; irá preencher isto no seu primeiro arranque. Ele irá procurar pelos ficheiros de documentação normais <filename +>*.xml</filename +> e <filename +>*.dcf</filename +> da directoria de instalação do &Qt;. A tabela à esquerda irá listar os ficheiros que o &tdevelop; encontrou pelo seu título normal. </para> + +<para +>Se você tem uma instalação fora do normal, então poderá não existir nenhuma informação indicada, ou então os endereços irão apontar para locais inválidos (⪚ para outra instalação do &Qt; disponível no seu sistema). Você poderá ajustar os itens, usando os <link linkend="setup-docu-buttons" +>botões</link +> à direita da lista. </para> + +<note +><para +>O &tdevelop; irá usar os títulos já fornecidos pela documentação do &Qt; instalada. Por isso, o campo <guilabel +>Título</guilabel +> da janela de <guilabel +>Propriedades do Catálogo de Documentação</guilabel +> está inacessível. </para +></note> + +<para +>Por omissão, nem toda a documentação do &Qt; estará visível na página de <guilabel +>Conteúdo</guilabel +> da funcionalidade de <guilabel +>Documentation</guilabel +> do &tdevelop;. Use a opção <guilabel +>TOC</guilabel +> na <link linkend="setup-docu-columns" +>tabela de configuração</link +> para seleccionar a documentação a ser apresentada. </para> + +<para +>Se você quiser incluir mais alguma documentação específica do &Qt; nos índices de pesquisa ou na pesquisa por texto completo, use as opções de <guilabel +>Índice</guilabel +> e <guilabel +>Procurar</guilabel +> da <link linkend="setup-docu-columns" +>tabela de configuração</link +>. </para> + +</sect3 +> <!-- setup-docu-general-qt --> + +<sect3 id="setup-docu-general-chm"> +<title +>Configurar a Colectânea de Documentação CHM</title> + +<para +>Nesta página de configuração, você poderá recolher a documentação referente à norma de ficheiros de ajuda CHM da &Microsoft;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-chm.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar os ficheiros de documentação CHM normais da &Microsoft;</phrase +></textobject> + <caption +><para +>Configurar os ficheiros de documentação CHM normais da &Microsoft; </para +></caption> + </mediaobject> +</screenshot> + +<para +>Por omissão, esta página de configuração estará vazia (como é mostrado acima). Você poderá adicionar novos itens com os <link linkend="setup-docu-buttons" +>botões</link +> à direita do campo da lista. O &tdevelop; irá filtrar os ficheiros <filename +>*.chm</filename +> na janela de directoria associada aos botões <guibutton +>Adicionar</guibutton +> e <guibutton +>Editar</guibutton +>. </para> + +<para +>Para mais informações sobre o formatos dos ficheiros <filename +>*.chm</filename +> da &Microsoft;, veja ⪚ a Documentação do PHP - Formato CHM Extendido em <ulink url="http://de2.php.net/docs-echm.php" +>http://de2.php.net/docs-echm.php</ulink +>. </para> + +</sect3 +> <!-- setup-docu-general-chm --> + +<sect3 id="setup-docu-general-dox"> +<title +>Documentação Gerada pelo Doxygen</title> + +<para +>Nesta página de configuração, toda a documentação da &API; gerada pelo &doxygen; será configurada. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-dox.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurar a documentação da &API; gerada pelo Doxygen</phrase +></textobject> + <caption +><para +>Configurar a documentação da &API; gerada pelo Doxygen </para +></caption> + </mediaobject> +</screenshot> + +<para +>Em resumo, estas &API;s documentam a interface para as funções de certas bibliotecas. Para produzir a documentação da &API; desta página é usada a ferramenta <ulink url="http://www.stack.nl/~dimitri/doxygen/" +>&doxygen;</ulink +>. </para> +<para +>A documentação da &API; gerada pelo &doxygen; consiste numa série de ficheiros <filename +>HTML</filename +>, a começar pelo <filename +>index.html</filename +>. Adicionalmente, poderão existir ficheiros <filename +>tag</filename +> que contêm informações para se associar a documentações de &API; já existentes. Como tal, o &tdevelop; irá procurar pelo <filename +>index.html</filename +> e pelos ficheiros <filename +>*.tag</filename +> ao procurar pela documentação de &API; gerada pelo &doxygen;. </para> +<para +>Existem algumas restrições estruturais assumidas ao procurar pela documentação da &API; gerada pelo &doxygen;. A directoria na qual se encontra o ficheiro <filename +>index.html</filename +> deverá conter algumas sub-pastas com colectâneas de documentação separadas. Assume-se que cada uma destas sub-pastas contém um ficheiro <filename +>.tag</filename +> e uma subdirectoria <filename class="directory" +>html/</filename +>. </para> +<para +>Você poderá dar uma vista de olhos em <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/tdelibs-apidocs</filename +> para ter um exemplo de uma disposição de documentação de &API; em &doxygen;. </para> + +<note +><para +>O formato de documentação da &API; mais antigo do &kde;, o <ulink url="http://sirtaj.net/projects/kdoc/" +>KDoc</ulink +>, já não é mais suportado directamente. Se quiser usar à mesma essa documentação, você podê-la-á adicionar à mesma na página da <link linkend="setup-docu-general-custom" +>Colectânea Personalizada de Documentação</link +>. </para +></note> + +<para +>O &tdevelop; terá preenchido numa ligação a &API; actual das Bibliotecas do &kde;, desde que tivesse achado alguma na altura da instalação. Existem várias formas de o &tdevelop; a descobrir: </para> + +<itemizedlist> + <listitem +><para +>Ou você indicou no comando <command +>configure</command +> a opção <option +>--with-tdelibsdoxy-dir</option +>, quando compilou o &tdevelop; (veja o capítulo <link linkend="make-api" +>Como Obter a Documentação da &API; do &tdevelop;</link +>). </para +></listitem> + <listitem +><para +>Ou então o comando <command +>configure</command +> descobriu automaticamente uma &API; das Bibliotecas do &kde; gerada pelo &doxygen; num dos locais normais que ele conhece à partida. </para +></listitem> + <listitem +><para +>Ou, como último recurso, a pasta <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/tdelibs-apidocs/</filename +> foi encontrada no primeiro arranque do &tdevelop;. </para +></listitem> +</itemizedlist> + +<para +>Se o &tdevelop; não encontrou nenhuma documentação da &API; das Bibliotecas do &kde; gerada pelo &doxygen;, então a lista da <guilabel +>Documentação Gerada pelo Doxygen</guilabel +> aparecerá vazia. </para> + +<para +>Você poderá adicionar os seus próprios itens de documentação da &API; (⪚ dos seus projectos actuais), usando os <link linkend="setup-docu-buttons" +>botões</link +> à direita. Se os quiser incluir na pesquisa indexada ou por texto completo marque as opções <guilabel +>Índice</guilabel +> ou <guilabel +>Procurar</guilabel +> da <link linkend="setup-docu-columns" +>tabela de configuração</link +>. </para> + +<note +><para +>O &tdevelop; usa a informação do título do ficheiro <filename +>index.html</filename +>. Daí, o campo <guilabel +>Título</guilabel +> na janela de <guilabel +>Propriedades do Catálogo de Documentação</guilabel +> estar inacessível. </para +></note> + +<tip> + <para +>O sistema do &kde; fornece mais documentação da &API; do que apenas a &API; das Bibliotecas do &kde;. Você irá precisar de mais informações de interfaces se quiser, ⪚, incluir a componente do &kate; nos seus programas. Para esta &API; da componente do &kate;, você deverá compilar e instalar a &API; das Bibliotecas de Base do &kde; a partir do <ulink url="http://developer.kde.org/source/index.html" +>código</ulink +> (com os comandos <command +>make apidox</command +> e <command +>make install</command +> no código do <filename class="directory" +>tdebase</filename +>), adicionando então um item à lista <guilabel +>Documentação Gerada pelo Doxygen</guilabel +> como se segue: </para> + <screenshot +><mediaobject> + <imageobject> + <imagedata fileref="configure-adddialog-baselibs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Adicionar uma &API; de Base do &kde; à Lista</phrase +></textobject> + <caption +><para +>Adicionar uma &API; de Base do &kde; à Lista </para +></caption> + </mediaobject +></screenshot> + <para +>(Claro que deverá substituir a directoria <filename class="directory" +>/home/dev/o-meu-kde/</filename +> no campo <guilabel +>Localização</guilabel +> com a localização da sua instalação do &kde;). </para> +</tip> + +<note +><para +>Você precisa também de colocar a &API; do seu projecto actual nesta <guilabel +>Colectânea de Documentação do Doxygen</guilabel +>. As versões mais antigas do &tdevelop; colocavam-na na árvore de documentação ao nível do projecto. Isto já não é mais suportado. </para +></note> + +</sect3 +> <!-- setup-docu-general-dox --> + +<sect3 id="setup-docu-general-toc"> +<title +>Lidar com Documentação Estruturada (Ficheiros KDevelopTOC)</title> + +<para +>O bloco principal da árvore de documentação do &tdevelop; fornece o acesso imediato à documentação estruturada, seja esta local ou remota. Você poderá configurar isto na página da <guilabel +>Colectânea de Documentação do KDevelopTOC</guilabel +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-toc.png" format="PNG"/> + </imageobject> + <caption +><para +>Fornecer o acesso à documentação estruturada do KDevelopTOC </para +></caption> + </mediaobject> +</screenshot> + +<para +>O &tdevelop; vem com um conjunto de ficheiros KDevelopTOC predefinidos que são introduzidos automaticamente na tabela, na altura da instalação. Para manter o ambiente de trabalho fácil de gerir, só a documentação usada com maior frequência é que será marcada inicialmente para ser visualizada. Se você quiser ver outra documentação, marque a opção <guilabel +>TOC</guilabel +> na <link linkend="setup-docu-columns" +>tabela de configuração</link +>. </para> + +<para +>Os ficheiros KDevelopTOC não podem ser indexados para fazer uma pesquisa por texto completo, porque normalmente apontam para uma localização remota. Por outro lado, qualquer um desses ficheiros <filename +>.toc</filename +> poderá ter um índice definido manualmente, usando a marca <computeroutput +><index></computeroutput +>. Daí, a opção <guilabel +>Índice</guilabel +> ficará activa apenas quando o &tdevelop; encontrar uma marca <computeroutput +><index></computeroutput +> no ficheiro <filename +>.toc</filename +>. (Para mais detalhes, veja a descrição em baixo na secção de <link linkend="setup-docu-general-toc-files" +>Ficheiros de Índice do &tdevelop;</link +>.) </para> +<para +>A opção <guilabel +>Procurar</guilabel +> na <link linkend="setup-docu-columns" +>tabela de configuração</link +> ficará sempre desactivada. </para> + +<para +>Você poderá adicionar novos itens com os <link linkend="setup-docu-buttons" +>botões</link +> à direita da lista. O &tdevelop; irá filtrar os ficheiros <filename +>*.toc</filename +> na janela de directoria associada aos botões <guibutton +>Adicionar</guibutton +> e <guibutton +>Editar</guibutton +>. </para> + +<note +><para +>Só nas versões mais antigas do &tdevelop; é que o botão <guibutton +>Remover</guibutton +> irá alterar os ficheiros <filename +>*.toc</filename +> em disco, como tal a operação de remoção é segura agora. </para +></note> + +</sect3 +> <!-- setup-docu-general-toc --> + +<sect3 id="setup-docu-general-toc-files"> +<title +>Ficheiros de índice do &tdevelop;</title> + +<para +>Existe uma funcionalidade especial associada a isto. Para ilustrá-la, siga estes passos: Na árvore de documentação, escolha um item ligeiramente abaixo da documentação do &Qt;/&kde; (⪚, o <quote +>Livro de Programação no KDE2 (kde.org)</quote +>). Carregue no sinal de mais (+) ao lado dele. Irá abrir uma árvore, na qual você poderá navegar pelos capítulos subsequentes que se encontram vários níveis abaixo, tudo de forma desligada. Porém, se você seleccionar finalmente um dos capítulos, o &tdevelop; irá em muitos dos casos tentar aceder a um ficheiro de documentação <emphasis +>remoto</emphasis +>. </para> + +<para +>A razão por detrás disto e não só navegar localmente pela documentação remota sem desperdiçar recursos de acesso à rede, mas também para oferecer ao programador um acesso simples e estruturado à documentação que precisa. Com as ferramentas aqui oferecidas, uma pessoa poderá aceder a quase qualquer documentação local ou remota de forma estruturada, mesmo que o documento original seja um só ou a sua estrutura original seja diferente. Tudo o que é preciso é o acesso aos ficheiro e/ou partes dos outros ficheiros que são legíveis no &konqueror;. </para> + +<para +>Esse acesso estruturado é possível com a utilização de <quote +>ficheiros de índice</quote +> especiais, os quais são identificados pela extensão <filename +>.toc</filename +>. Qualquer um desses ficheiros de índice do &tdevelop; contêm uma descrição estruturada em &XML; do documento a ser acedido. </para> + +<variablelist> +<varlistentry> +<term +>Directoria Normal dos Ficheiros de Índice do &tdevelop;</term> +<listitem> +<para +>Quando o &tdevelop; foi instalado, normalmente foi colocada uma série de ficheiros <filename +>.toc</filename +> predefinidos na directoria <filename class="directory" +>$KDEDIR/share/apps/kdevdoctreeview/tocs</filename +>. Estes são ficheiros de texto estruturado relativamente simples. Você poderá olhar para eles com um editor de texto ou com outra funcionalidade de apresentação de texto. </para> +</listitem> +</varlistentry +></variablelist> + +<!-- FIXME: Lauri Watts (2005-05-03) This could be marked up a whole lot --> +<!-- more clearly with the sgmltags stuff. Making a note to do that once --> +<!-- this first revision is done. --> + +<variablelist id="toc-file-structure"> + <title +>Estrutura Básica dos Ficheiros de Índice do &tdevelop;</title> + <varlistentry> + <term +>cabeçalho</term> + <listitem> + <simplelist> + <member> + <computeroutput +><!DOCTYPE tdeveloptoc></computeroutput> + </member> + <member> + <computeroutput +><tdeveloptoc></computeroutput> + </member> + <member> + <emphasis +>(título)</emphasis> + </member> + <member> + <emphasis +>(endereço de base)</emphasis> + </member> + <member> + <emphasis +>(estrutura do conteúdo)</emphasis> + </member> + <member> + <emphasis +>(estrutura do índice)</emphasis> + </member> + <member> + <computeroutput +></tdeveloptoc></computeroutput> + </member> + </simplelist> + <para +>Esta estrutura em &XML; será processada pelo 'plugin' de <guilabel +>Documentação</guilabel +> do &tdevelop; para configurar o conteúdo da árvore de documentação e para guiar o utilizador na navegação pela documentação. Ele contém toda a informação necessária para mostrar os títulos e aceder ao conteúdo do ficheiro de documentação. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>title</term> + <listitem> + <simplelist> + <member +><computeroutput +><title></computeroutput +> <emphasis +>(algum texto de título)</emphasis +> <computeroutput +></title></computeroutput +> </member> + </simplelist> + <para +>Este é o título que o &tdevelop; irá mostrar nos níveis básicos da árvore de documentação. </para> + <note +><para +>Este título apresentado não pode de momento ser alterado pelo utilizador. Se você quiser mostrar outro texto, você terá de alterar manualmente o item <computeroutput +><title></computeroutput +> no ficheiro <filename +>.toc</filename +>. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>endereço de base</term> + <listitem> + <simplelist> + <member +><computeroutput +><base href="</computeroutput +> <emphasis +>(&URL; do documento de base)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + </simplelist> + <para +>Este &URL; aponta para a localização em que todos os ficheiros desta documentação se localizam. Será inserida no início de cada &URL; de secção na seguinte lista da estrutura do conteúdo. Por isso, se você ⪚ obter alguma documentação de um servidor remoto, tudo o que precisa para mostrar os ficheiros nesta nova localização é mudar o &URL; da <computeroutput +><base></computeroutput +>. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>estrutura do conteúdo</term> + <listitem> + <simplelist> + <member +><computeroutput +><tocsect1 name="</computeroutput +> <emphasis +>(título da secção)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; da secção)</emphasis +> <computeroutput +>"></computeroutput +> </member> + <member +>...</member> + <member +><computeroutput +><tocsectn name="</computeroutput +> <emphasis +>(título da secção)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; da secção)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member +>...</member> + <member> + <computeroutput +></tocsect1></computeroutput> + </member> + </simplelist> + <para +>Toda a informação restante de navegação e de acesso é guardada numa série de pares <computeroutput +><tocsecti></computeroutput +> ... <computeroutput +></tocsecti></computeroutput +> aninhados. Cada <emphasis +>i</emphasis +> corresponde a um nível consecutivo de aninhamento abaixo do nível <emphasis +>n</emphasis +>, correspondente à secção de documentação finalmente apresentada. </para> + <para +>Todos os itens <computeroutput +><tocsecti></computeroutput +> devem ter um atributo <computeroutput +>name="xxx"</computeroutput +> associado a eles (o "xxx" representa o título actual). Isto será mostrado como o título do nível na árvore de documentação. Ele irá corresponder a uma secção da documentação actual. </para> + <para +>Poderá existir um atributo <computeroutput +>url=""</computeroutput +> associado ao nível de aninhamento <emphasis +>i</emphasis +>. Quando o utilizador carregar no título de uma secção da documentação, o &tdevelop; irá tentar aceder ao ficheiro na localização indicada pelo endereço de base combinado com o &URL; da secção. </para> + <para +>O item <computeroutput +><tocsectn/></computeroutput +> precisa de ter um atributo <computeroutput +>url=""</computeroutput +>, de qualquer forma. Este <computeroutput +><tocsectn/></computeroutput +> final não vem aos pares, mas será sim fechado por um <computeroutput +>/</computeroutput +> antes do carácter <computeroutput +>></computeroutput +>. </para> + <note +><para +>Qualquer endereço resultante da combinação do endereço de base e do &URL; da secção precisam de apontar para um ficheiro de texto visível. Normalmente, este será um ficheiro estruturado em HTML. É possível fazer referência a 'âncoras' num desses ficheiros, usando a notação normal do '#', com o formato: <filename +>/url-de-base/url-da-seccao#ancora</filename +>. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>estrutura do índice</term> + <listitem> + <simplelist> + <member> + <computeroutput +><index></computeroutput> + </member> + <member +><computeroutput +><entry name="</computeroutput +> <emphasis +>(título do índice)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; da secção do índice)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member> + <computeroutput +></index></computeroutput> + </member> + </simplelist> + <para +>O índice é uma lista simples de itens de índice - pares de títulos e &URL;s. O índice não é obrigatório. </para> + </listitem> + </varlistentry> +</variablelist> +<!-- FIXME: End --> + +</sect3 +> <!-- setup-docu-general-toc-files --> + +<sect3 id="setup-docu-general-devhelp"> +<title +>Documentação do DevHelp</title> + +<para +>A documentação do DevHelp é outra forma de aceder à documentação estruturada. Ele usa os ficheiros de índice estruturados identificados por uma extensão <filename +>.devhelp</filename +> semelhante aos <link linkend="setup-docu-general-toc-files" +>ficheiros TOC do &tdevelop;</link +> para aceder à documentação do ambiente de trabalho do GNOME 2. </para> +<para +>Você poderá controlar quais os ficheiros do DevHelp que deverão estar acessíveis na página de configuração da <guilabel +>Colectânea de Documentação do DevHelp</guilabel +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-devhelp.png" format="PNG"/> + </imageobject> + <caption +><para +>Fornecer a documentação do DevHelp </para +></caption> + </mediaobject> +</screenshot> + +<para +>Os ficheiros do DevHelp originalmente estavam acessíveis no 'site' Web do <ulink url="http://lidn.sourceforge.net/" +>LiDN</ulink +>, mas estes parece que não são mantido já há algum tempo. A documentação do DevHelp mais recente está disponível na página Web para <ulink url="http://htmlhelp.berlios.de/books/devhelp.php" +>Obter os Livros do DevHelp</ulink +>. </para> + +<para +>Quando o &tdevelop; é instalado, ele irá tentar procurar todos os ficheiros <filename +>.devhelp</filename +> nos locais-padrão do sistema, ⪚ nas sub-pastas de <filename class="directory" +>/opt/gnome/share/</filename +>. Inicialmente, estes ficheiros não serão marcados para serem visualizados. Se quiser ver outra documentação, marque a opção <guilabel +>TOC</guilabel +> da <link linkend="setup-docu-columns" +>tabela de configuração</link +>. </para> + +<para +>Você poderá adicionar novos itens com os <link linkend="setup-docu-buttons" +>botões</link +> à direita da lista. O &tdevelop; irá filtrar os ficheiros <filename +>*.toc</filename +> na janela de directoria associada aos botões <guibutton +>Adicionar</guibutton +> e <guibutton +>Editar</guibutton +>. </para> + +</sect3 +> <!-- setup-docu-general-devhelp --> + +<sect3 id="setup-docu-general-custom"> +<title +>Configurar as Colectâneas de Documentação Personalizadas</title> + +<para +>Isto é para o seu próprio fim. Você poderá adicionar quase qualquer tipo de documentação, desde que possa ser mostrada pelos 'plugins' do &konqueror;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-custom.png" format="PNG"/> + </imageobject> + <caption +><para +>Fornecer a documentação personalizada </para +></caption> + </mediaobject> +</screenshot> + +<para +>Normalmente, esta colecção estará vazia no primeiro arranque do &tdevelop;. Foi preenchido deliberadamente um item para mostrar a estrutura do item. </para> +<para +>O tratamento é relativamente simples aqui. Use os <link linkend="setup-docu-buttons" +>botões</link +> à direita da lista para adicionar, editar ou remover os itens dos documentos. O &tdevelop; não irá filtrar nada da janela de directorias que esteja associado aos botões <guibutton +>Adicionar</guibutton +> e <guibutton +>Editar</guibutton +>. </para> + +<para +>Você terá de seleccionar explicitamente os itens para os mostrar na funcionalidade de documentação do &tdevelop;. Marque a opção <guilabel +>TOC</guilabel +> do item na <link linkend="setup-docu-columns" +>tabela de configuração</link +>. </para> + +<note +><para +>A documentação personalizada não pode ser indexada ou pesquisada. Como tal, as opções <guilabel +>Índice</guilabel +> e <guilabel +>Procurar</guilabel +> não farão efeito, como é mostrado acima. </para +></note> + +</sect3 +> <!--- setup-docu-general-custom --> + +</sect2 +> <!-- setup-docu-general --> + +<sect2 id="setup-docu-textsearch"> +<title +>Configurar os Índices de Pesquisa de Texto</title> + +<para +>(... ainda não escrito ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-doctree-textsearch.png" format="PNG"/> + </imageobject> + <caption +><para +>Configurar os índices de pesquisa de texto </para +></caption> + </mediaobject> +</screenshot> + +</sect2 +> <!-- setup-docu-textsearch --> + +<sect2 id="setup-docu-other"> +<title +>Outras Configurações de Documentação</title> + +<para +>(... ainda não escrito ...) </para> + +</sect2 +> <!-- setup-docu-other --> + +</sect1 +> <!-- setup-docu --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-advanced"> +<title +>Configuração Avançada</title> + +<para +>(... ainda não escrito ...) </para> + +<sect2 id="setup-plugins"> +<title +>Ferramentas em 'Plugins'</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- setup-plugins --> + +<sect2 id="setup-abbrev"> +<title +>Abreviaturas para a Completação de Palavras</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- setup-abbrev --> + +<sect2 id="setup-menu-standard"> +<title +>Adicionar Aplicações Normais do &kde; ao Menu Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- setup-menu-standard --> + + +<sect2 id="setup-menu-external"> +<title +>Adicionar Aplicações Externas aos Menus</title> + +<para +>(... ainda não escrito ...) </para> + +<sect3 id="setup-menu-external-tools"> +<title +>Adicionar ao Menu Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> +</sect3 +> <!-- setup-menu-external-tools --> + +<sect3 id="setup-menu-external-filecontext"> +<title +>Adicionar ao Menu de Contexto dos Ficheiros</title> + +<para +>(... ainda não escrito ...) </para> +</sect3 +> <!-- setup-menu-external-filecontext --> + +<sect3 id="setup-menu-external-dircontext"> +<title +>Adicionar ao Menu de Contexto das Directorias</title> + +<para +>(... ainda não escrito ...) </para> +</sect3 +> <!-- setup-menu-external-dircontext --> + +</sect2 +> <!-- setup-menu-external --> + +</sect1 +> <!-- setup-advanced --> + +</chapter +> <!-- setup --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/survey-manual.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/survey-manual.docbook new file mode 100644 index 00000000000..342e7db4f89 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/survey-manual.docbook @@ -0,0 +1,329 @@ +<chapter id="survey-manual"> +<title +>O que Este Manual Contém</title> + +<para +>Este manual do utilizador pretende descrever o conteúdo e a utilização do Ambiente de Desenvolvimento Integrado ou IDE &tdevelop; &kdevrelease;, do ponto de vista de um utilizador. Não é um manual de programação, nem descreve o processo de desenvolvimento em detalhe. O seu único objectivo é guiá-lo a lidar com o IDE. </para> +<para +>Aqui poderá descobrir informações sobre os seguintes tópicos: </para> +<variablelist> +<varlistentry> +<term +><link linkend="getting-started" +>Introdução ao &tdevelop; — Uma Visita Guiada</link +> </term> +<listitem> +<para +>Dá-lhe uma introdução rápida ao uso deste &IDE;, introduzindo os passos básicos para trabalhar num projecto.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="tdevelop-survey" +>Introdução às Funcionalidades do &tdevelop;</link +></term> +<listitem> +<para +>Extende a vista guiada no capítulo anterior, dando uma visão geral sobre o que está incluído dentro do &tdevelop; e põe-o perante a aparência e comportamento deste &IDE;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="setup" +>Configurar o &tdevelop;</link +></term> +<listitem> +<para +>Mostra como poderá adequar o &IDE; às suas necessidades.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="applicationwizard" +>Como começar: o &appwizard;</link +></term> +<listitem> +<para +>Descreve as bases de como configurar um projecto novo no &tdevelop;, usando o &appwizard; incorporado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="editing" +>Ferramentas de edição</link +></term> +<listitem> +<para +>Tudo o que necessita para escrever os ficheiros de código: usar o editor, procurar texto localmente e a nível do projecto, até à integração de ficheiros e classes novos no projecto.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="file-browsers" +>Os Navegadores de Ficheiros</link +></term> +<listitem> +<para +>Demonstra várias ferramentas para olhar para a estrutura do seu projecto e como aceder aos ficheiros com que deseja trabalhar.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="class-browsers" +>Os Navegadores de Classes</link +></term> +<listitem> +<para +>Descreve uma das ferramentas mais poderosas do &tdevelop;, que lhe permite navegar pelas dependências de classes e lhe permite criar e aceder facilmente às classes e métodos que necessita. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="documentation" +>Documentação</link +></term> +<listitem> +<para +>Mostra como aceder à rica documentação que o &tdevelop; oferece e diz-lhe como criar a documentação para o seu projecto, consistindo numa documentação de &API; poderosa e clara, que lhe dá uma ideia geral de todo o código do seu projecto, assim como a documentação do utilizador baseada em DocBook.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="project-management" +>Compilação e Gestão de Projectos</link +></term> +<listitem> +<para +>Lida com a criação e gestão do seu projecto; descreve as bases do 'autoconf' e do 'automake', para além de como configurar Makefiles personalizadas e como usar as opções do compilador ou do 'make' para ajustar a sua aplicação de acordo com as suas necessidades.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="adv-build-management" +>Gestão de Compilações Avançada</link +></term> +<listitem> +<para +>Olha para as formas de manter várias configurações de compilação, para compilar de forma cruzada para diversas plataformas ou para fazer um sistema embebido, usando a biblioteca <application +>Qt/embedded</application +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="debugger" +>A Interface do Depurador</link +></term> +<listitem> +<para +>Descreve como usar a interface incorporada do depurador <application +>gdb</application +>, para que possa descobrir os erros sem sair do &tdevelop;.</para> +</listitem> +</varlistentry> + +<!-- ### Currently disabled. Probably too specialized programming stuff. Check later again. + <listitem +><para> + <link linkend="python" +>Python</link +> — an overview of how to create Python-based applications in &tdevelop;. + </para +></listitem> + <listitem +><para> + <link linkend="php" +>PHP</link +> — an overview of how to create PHP-based HTML applications in &tdevelop;. + </para +></listitem +>//--> + +<varlistentry> +<term +><link linkend="cvs" +>Usar o CVS</link +></term> +<listitem> +<para +>Diz-lhe como é que pode manter o seu projecto com o sistema de controlo de versões CVS; uma prioridade, especialmente se vários programadores trabalharem no mesmo projecto.</para> +</listitem> +</varlistentry> +</variablelist> + +<!-- + <listitem +><para> + <link linkend="tdevelop-scripting" +>Scripting &tdevelop;</link +> — describes how to add scripts to automate &tdevelop;. + </para +></listitem> + + + <listitem +><para> + Some commonly used information has been put into the <emphasis +>appendix</emphasis +>. Amongst others this consists of: +--> +<para +>Alguma informação usada normalmente foi colocada no <emphasis +>apêndice</emphasis +>. Entre outras, esta consiste de: </para> + +<variablelist> +<varlistentry> +<term +><link linkend="tdevelop-install" +>Instalar o &tdevelop;</link +></term> +<listitem> +<para +>Diz-lhe como obter o &tdevelop; e como o pôr a funcionar.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<varlistentry> +<term +><link linkend="nutshell" +>De Algibeira — Dicas e Truques</link +></term> +<listitem> +<para +>Uma referência rápida aos comandos e acções mais usados. É também um guia rápido para resolver os problemas comuns ao lidar com o &tdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="unixdev" +>Desenvolvimento em &UNIX;</link +></term> +<listitem> +<para +>Uma visão histórica da programação no sistema &UNIX;, as ferramentas principais necessárias e porque é que necessita de um &IDE;.</para> +</listitem> +</varlistentry> + +<!-- + <listitem +><para> + <link linkend="app-menus" +>Menus and Toolbars Overview</link +> — provides you with a short overall view of the menu and toolbar selections available. + </para +></listitem> + + <listitem +><para> + <link linkend="app-shortcuts" +>Shortcut Keys</link +> — the keys you can use to work with &tdevelop; without resorting to the mouse. + </para +></listitem> +--> + +<varlistentry> +<term +><link linkend="app-files" +>Ficheiros de Configuração Usados pelo &tdevelop;</link +></term> +<listitem +><para +>Indica os ficheiros que o &tdevelop; usa para gravar a sua informação interna. Isto é particularmente útil, no caso de algo correr mal com a sua configuração.</para> +</listitem> +</varlistentry> + +<varlistentry +><term> +<link linkend="plugin-tools" +>Ferramentas em 'Plugins'</link> +</term +><listitem +><para +>Indica as ferramentas em 'plugins' que poderá usar para adequar as capacidades do &tdevelop; às suas necessidades. </para +></listitem +></varlistentry> + +<!-- + <listitem +><para> + <link linkend="plugin-tools" +>Plugin tools</link +> — provides you with an overview of the parts which make up &tdevelop; and how you can tailor it to suit your needs by only loading the parts that are necessary, both IDE and project-wide. + </para +></listitem> +--> +<varlistentry +><term +> +<link linkend="app-uimodes-examples" +>Exemplos dos Modos de Interface do Utilizador do KDevelop </link> +</term +><listitem +><para +>Mostra alguns modos de interface do utilizador. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-misc-info" +>Mais Informações </link +> </term +><listitem +><para +>Como obter informações, comunicar erros, etc. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-changelog" +>Changelog </link> +</term +><listitem +><para +>Mostra o histórico desta documentação. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-bibliography" +>Bibliografia </link +> +</term +><listitem +><para +>Bibliografia </para +></listitem +></varlistentry> + +</variablelist +> + <!-- + <listitem +><para> + <link linkend="documentation-index" +>Index </link +> — + </para +></listitem> +--> + + +</chapter> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-install.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-install.docbook new file mode 100644 index 00000000000..5c72c7a8712 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-install.docbook @@ -0,0 +1,1288 @@ +<appendix id="tdevelop-install"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Instalar o &tdevelop;</title> + +<indexterm zone="tdevelop-install"> + <primary +>instalação</primary +></indexterm> + +<para +>Você irá encontrar aqui todos os passos necessários para compilar e instalar o IDE do &tdevelop;: <itemizedlist> + <listitem +><para +>O <link linkend="tdevelop-install-howto" +>Como obter o &tdevelop;</link +> concentra-se principalmente em como obter o código mais recente do CVS. </para +></listitem> + <listitem +><para +>Os <link linkend="requirements" +>requisitos do &tdevelop;</link +> listam os programas e bibliotecas que irá necessitar de ter instalados para compilar com sucesso o IDE. </para +></listitem> + <listitem +><para +>A <link linkend="compile-and-install" +>compilação e instalação do &tdevelop;</link +> irá conduzi-lo por todos os passos de compilação e instalação da aplicação. </para +></listitem> + <listitem +><para +>O <link linkend="make-api" +>Como obter uma documentação da &API; do &tdevelop;</link +> diz-lhe o que é uma API e como você poderá usar uma dessas ferramentas para navegar pelo código do &tdevelop;. </para +></listitem> +</itemizedlist> +</para> + +<sect1 id="tdevelop-install-howto"> +<title +>Como obter o &tdevelop;</title> + +<indexterm zone="tdevelop-install-howto"> + <primary +>obter o &tdevelop;</primary +></indexterm> +<indexterm zone="tdevelop-install-howto"> + <primary +>&tdevelop;</primary> + <secondary +>obter</secondary +></indexterm> + +<para +>O &tdevelop; está disponível de forma binária para várias distribuições do &Linux; como a SuSE, a RedHat entre outras. Estes binários estão inseridos num pacote, em grande parte em RPMs, para uma instalação mais simples. Para instalar, siga as instruções normais que são dadas para a sua distribuição. </para> +<para +>Você também poderá obter o código-fonte do &tdevelop;, compilá-lo e instalá-lo você mesmo. Este código poderá ser obtido na página pessoal do projecto em <ulink url="http://www.tdevelop.org" +>http://www.tdevelop.org</ulink +> ou através do <ulink url="http://download.kde.org" +>'site' FTP do &kde;</ulink +>. </para> + +<sect2 id="howto-cvs"> +<title +>Obter Versões Diárias do &tdevelop; a partir do &CVS;</title> + +<indexterm zone="howto-cvs"> + <primary +>CVS</primary +></indexterm> + +<para +>Se você quiser estar a acompanhar os desenvolvimentos actuais, estão disponíveis as imagens do repositório anónimo do &CVS;. O nome do módulo é <emphasis +>tdevelop</emphasis +> em <filename class="directory" +>:pserver:anonymous@anoncvs.kde.org:/home/kde</filename +>. </para> + +<sect3 id="howto-cvs-co"> +<title +>'Checkout' Inicial do &CVS;</title> + +<indexterm zone="howto-cvs-co"> + <primary +>'checkout'</primary +></indexterm> +<indexterm zone="howto-cvs-co"> + <primary +>&tdevelop;</primary> + <secondary +>CVS</secondary> + <tertiary +>'checkout'</tertiary +></indexterm> + +<para +>Para obter uma versão inicial do &tdevelop;, você precisa de obtê-la a partir do &CVS; anónimo. Para efectuar esta operação, com o nome de <emphasis +>checkout</emphasis +>, basta seguir estes passos. </para> + +<note +><para +>Iremos assumir que você irá querer pôr a sua cópia do &tdevelop; na pasta <filename class="directory" +>codigo_kde3</filename +> da sua directoria pessoal (a <filename class="directory" +>~</filename +>) . </para +></note> + +<informalexample +><simplelist> + <member +># Criar a directoria de destino, se necessário: </member> + <member +><prompt +>~> </prompt +> <userinput +>mkdir codigo_kde3</userinput +> </member> + <member +><prompt +>~> </prompt +> <userinput +>cd codigo_kde3</userinput +> </member> + <member +><prompt +>~/codigo_kde3> </prompt +> <userinput +>cvs -z3 -d :pserver:anonymous@anoncvs.kde.org:/home/kde co tdevelop</userinput +> </member> + <member +><prompt +>~/codigo_kde3> </prompt +> <userinput +>cd tdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><para +>Logo que tenha conseguido obter a sua versão do &tdevelop;, você poderá estar a par das alterações com o procedimento de actualização mostrado na secção a seguir. </para +></note> + +<important +><para +>Mantenha a carga no servidor baixa. <emphasis +>Por favor não faça a transferência completa ('checkout'), sempre que queira ter o seu &tdevelop; actualizado!</emphasis +> Utilize para isto uma actualização de CVS. </para +></important> + +<para +>Agora, você poderá compilar a sua versão do &tdevelop;, tal como é mostrada no capítulo de <link linkend="compile-and-install" +>Compilação e Instalação do &tdevelop;</link +>. </para> + +</sect3 +> <!-- howto-cvs-co --> + +<sect3 id="howto-cvs-up"> +<title +>Manter a Sua Cópia do &CVS; Actual</title> + +<indexterm zone="howto-cvs-up"> + <primary +>actualizar</primary +></indexterm> +<indexterm zone="howto-cvs-up"> + <primary +>&tdevelop;</primary> + <secondary +>CVS</secondary> + <tertiary +>actualizar</tertiary +></indexterm> + +<para +>Depois de você ter obtido (e compilado com sucesso) o &tdevelop; a partir do CVS, tal como foi mostrado em cima, você poderá querer mantê-lo actualizado, de modo a obter todas as modificações. Para isso, siga estes passos (Iremos assumir de novo que você colocou a sua cópia do &tdevelop; na directoria <filename class="directory" +>codigo_kde3</filename +>.) </para> +<para +>Repare no comando <command +>up</command +> (= <emphasis +>update</emphasis +>), colocado em vez do <command +>co</command +> (que significa <emphasis +>checkout</emphasis +>). </para> + +<informalexample +><simplelist> + <member +><prompt +>~> </prompt +> <userinput +>cd codigo_kde3</userinput +> </member> + <member +><prompt +>~/codigo_kde3> </prompt +> <userinput +>cvs -z3 -d :pserver:anonymous@anoncvs.kde.org:/home/kde up tdevelop</userinput +> </member> + <member +><prompt +>~/codigo_kde3> </prompt +> <userinput +>cd tdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><para +>Dê uma vista de olhos nas mensagens que o &CVS; produz, durante a sequência da actualização. Os passos exactos na sequência de compilação dependem disto. </para +></note> + +<para +>Agora, você poderá compilar uma nova versão do &tdevelop;, tal como é apresentado no capítulo das <link linkend="compile-and-install-make-cvs" +>Considerações especiais de compilação do &CVS;</link +>. </para> +</sect3 +> <!-- howto-cvs-up --> + +</sect2 +> <!-- howto-cvs --> + +</sect1 +> <!-- howto --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="requirements"> +<title +>Requisitos do &tdevelop;</title> + +<indexterm zone="requirements"> + <primary +>requisitos</primary +></indexterm> +<indexterm zone="requirements"> + <primary +>&tdevelop;</primary> + <secondary +>requisitos</secondary +></indexterm> +<indexterm zone="requirements"> + <primary +>GNU</primary> + <secondary +>requisitos</secondary +></indexterm> + +<para +>Para poder compilar e usar o &tdevelop; com sucesso, você precisa dos seguintes programas e bibliotecas. Eles estão disponíveis na maioria das plataformas como pacotes das próprias distribuições e, como tal, poderão ser instalados facilmente. </para> + +<itemizedlist> +<title +>Necessário:</title> + <listitem> + <para +><application +>gcc/g++</application +> ≥ 2.95.3 (ou compatível) <indexterm> + <primary +>gcc</primary> + <secondary +>requisitos</secondary +></indexterm> + <indexterm> + <primary +>g++</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="gcc.gnu.org" +>gcc.gnu.org</ulink +> </para> + </listitem> + <listitem> + <para +><application +>make da &GNU;</application +> (ou compatível) <indexterm> + <primary +>make</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.gnu.org/software/make" +>www.gnu.org/software/make</ulink +> </para> + </listitem> + <listitem> + <para +>&perl; 5.004 (ou superior) <indexterm> + <primary +>Perl</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.perl.com" +>www.perl.com</ulink +> </para> + </listitem> + <listitem> + <para +><application +>autoconf</application +> ≥ 2.52 <indexterm> + <primary +>autoconf</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.gnu.org/software/autoconf" +>www.gnu.org/software/autoconf</ulink +> </para> + </listitem> + <listitem> + <para +><application +>automake</application +> ≥ 1.6 <indexterm> + <primary +>automake</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.gnu.org/software/automake" +>www.gnu.org/software/automake</ulink +> </para> + </listitem> + <listitem> + <para +><application +>flex</application +> 2.5.4 (ou superior) <indexterm> + <primary +>flex</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.gnu.org/software/flex" +>www.gnu.org/software/flex</ulink +> </para> + </listitem> + <listitem> + <para +>&Qt; ≥ 3.0.3 (ou superior) <indexterm> + <primary +>Qt</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.trolltech.com/products/qt" +>www.trolltech.com/products/qt</ulink +> </para> + </listitem> + <listitem> + <para +><application +>KDE</application +> ≥ 3.0.2 <indexterm> + <primary +>KDE</primary> + <secondary +>requisitos</secondary +></indexterm> + </para> + <para +>Disponível em <ulink url="www.kde.org" +>www.kde.org</ulink +> </para> + </listitem> +</itemizedlist> + +<itemizedlist> +<title +>Opcional:</title> + <listitem +><para +>A ferramenta de navegação no código <emphasis +><application +>ctags</application +></emphasis +>, a partir do 'site' <ulink url="http://ctags.sourceforge.net" +>http://ctags.sourceforge.net</ulink +>, que lhe permite aceder rapidamente às declarações e definições, através de uns simples 'clicks' nos nomes dos itens, dentro do editor. <indexterm +><primary +>ctags</primary +></indexterm> + </para +></listitem> + <listitem +><para +>O <emphasis +><application +>dot</application +></emphasis +>, um compilador de linguagens gráficas, do <ulink url="http://www.graphviz.org" +>http:/www.graphviz.org</ulink +>. Esta ferramenta é necessária, em conjunto com o &doxygen;, se você quiser ter as relações entre as classes desenhadas graficamente (o que é altamente recomendado). <indexterm +><primary +>dot</primary +></indexterm> + </para +></listitem> + <listitem +><para +>A ferramenta de documentação <emphasis +>&doxygen;</emphasis +>, do <ulink url="http://www.doxygen.org" +>http://www.doxygen.org</ulink +>, se você quiser gerar documentação de APIs concisa e poderosa para os seus projectos. <indexterm +><primary +>doxygen</primary +></indexterm> + </para +></listitem> + <listitem +><para +>O <emphasis +><application +>valgrind</application +></emphasis +> de <ulink url="http://developer.kde.org/~sewardj/" +>http://developer.kde.org/~sewardj/</ulink +>, que lhe ajuda a encontrar problemas de gestão de memória nas suas aplicações. <indexterm +><primary +>valgrind</primary +></indexterm> + </para +></listitem> + <listitem +><para +>O <emphasis +><application +>CVS</application +></emphasis +> do <ulink url="http://www.cvshome.org" +>http://www.cvshome.org</ulink +> se você quiser usar o sistema de controlo de versões &CVS;. <indexterm> + <primary +>CVS</primary> + <secondary +>requisitos</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Qualquer outro compilador e/ou ferramenta, para o caso de você querer programar noutra linguagem/plataforma que não o C++/&kde; ou queira usar alguma funcionalidade especial. </para +></listitem> +</itemizedlist> + +<note> +<orderedlist> + <listitem> + <para +>Você poderá dar uma volta à necessidade do &autoconf; ≥ 2.52 e do &automake; ≥ 1.6. Basta remover a directoria <filename class="directory" +>admin</filename +> da directoria de instalação do seu &tdevelop; e escrever <indexterm> + <primary +>autoconf</primary> + <secondary +>a circunvecção da versão necessita</secondary +></indexterm> + <indexterm> + <primary +>automake</primary> + <secondary +>a circunvecção da versão necessita</secondary +></indexterm> + <indexterm> + <primary +>versão necessária</primary> + <secondary +>circunvecção para o 'autoconf'/'automake'</secondary +></indexterm> + </para> + <informalexample +><simplelist> + <member +><prompt +>(a-sua-directoria-do-tdevelop)> </prompt +> <userinput +>ln -s $KDEDIR/share/apps/tdelibs/admin admin</userinput +></member> + </simplelist +></informalexample> + <para +>na consola. Isto faz com que o &tdevelop; use a configuração normal da directoria <filename class="directory" +>admin</filename +> do &kde; em alternativa. </para> + </listitem> + <listitem> + <para +>Tenha cuidado em <emphasis +>não misturar as versões do &Qt;</emphasis +>. Associe sempre o &tdevelop; à mesma versão do &Qt; com que as suas bibliotecas do &kde; foram compiladas. Caso contrário, você poderá obter comportamentos <emphasis +>muito estranhos</emphasis +>. </para> + </listitem> +</orderedlist> +</note> + +</sect1 +> <!-- requirements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compile-and-install"> +<title +>Compilação e Instalação do &tdevelop;</title> + +<indexterm zone="compile-and-install"> + <primary +>&tdevelop;</primary> + <secondary +>compilação</secondary +></indexterm> +<indexterm zone="compile-and-install"> + <primary +>&tdevelop;</primary> + <secondary +>instalação</secondary +></indexterm> + +<para +>Logo que todos os requisitos tenham sido cumpridos, você está pronto para compilar e instalar o &tdevelop;. Este apêndice irá discutir os passos necessários para o fazer. </para> +<itemizedlist> + <listitem +><para +>Os <link linkend="compile-and-install-preliminaries" +>Passos Preliminares</link +> dizem-lhe como configurar um ambiente adequado. </para +></listitem> + <listitem +><para +>O <link linkend="compile-and-install-make" +>Compilar o &tdevelop;</link +> lida com a obtenção do código do &tdevelop; a partir do &cvs;, como o preparar para o processo de instalação e finalmente mostra os passos necessários para compilar e instalar o &tdevelop;. </para +></listitem> + <listitem +><para +>O <link linkend="compile-and-install-options" +>Algumas Notas Sobre as Opções do 'Configure'</link +> diz-lhe como executar o &tdevelop; se tiver sido instalado numa localização que não a directoria do &kde;. </para +></listitem> +</itemizedlist> + +<sect2 id="compile-and-install-preliminaries"> +<title +>Passos Preliminares</title> + +<indexterm zone="compile-and-install-preliminaries"> + <primary +>preliminares</primary> + <secondary +>Instalação do &tdevelop;</secondary +></indexterm> +<indexterm zone="compile-and-install-preliminaries"> + <primary +>KDEDIR</primary +></indexterm> +<indexterm zone="compile-and-install-preliminaries"> + <primary +>QTDIR</primary +></indexterm> +<indexterm zone="compile-and-install-preliminaries"> + <primary +>LD_LIBRARY_PATH</primary +></indexterm> +<indexterm zone="compile-and-install-preliminaries"> + <primary +>LIBRARY_PATH</primary +></indexterm> +<indexterm zone="compile-and-install-preliminaries"> + <primary +>PATH</primary +></indexterm> + +<para +>Antes de entrar na sequência da consola, você precisa de se certificar que todas as bibliotecas e ferramentas estão disponíveis no sistema de compilação. Para conseguir isto, algumas variáveis de ambiente precisam de estar convenientemente definidas. Os passos reais a efectuar dependem da linha de comandos da consola que você utiliza. </para> + +<note +><para +>Para evitar ter de escrever todos os comandos que definem as variáveis de ambiente necessárias de cada vez que deseja compilar, você deverá colocá-las no seu ficheiro <filename +>.bashrc</filename +> ou <filename +>.cshrc</filename +>. Desta forma, as variáveis de ambiente serão configuradas convenientemente sempre que você iniciar a linha de comandos. </para +></note> + +<sect3 id="compile-and-install-preliminaries-bash"> +<title +>Configurar o Ambiente para a Linha de Comandos Bash</title> + +<para +>Se você usar a linha de comandos 'bash', adicione as seguintes linhas: </para> + +<informalexample +><simplelist> + <member +><userinput +>export KDEDIR=</userinput +>(local da sua instalação do KDE)</member> + <member +><userinput +>export QTDIR=</userinput +>(local da sua biblioteca Qt)</member> + <member +><userinput +>export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH</userinput +></member> + <member +><userinput +>export LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH</userinput +></member> + <member +><userinput +>export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH</userinput +></member> +</simplelist +></informalexample> +<para +></para> + +</sect3 +> <!-- compile-and-install-preliminaries-bash --> + +<sect3 id="compile-and-install-preliminaries-tcsh"> +<title +>Configurar o Ambiente para a Linha de Comandos Tcsh</title> + +<para +>Se você usar a linha de comandos 'tcsh', adicione as seguintes linhas: </para> +<para> +<informalexample +><simplelist> + <member +><userinput +>setenv KDEDIR </userinput +>(local da sua instalação do KDE)</member> + <member +><userinput +>setenv QTDIR </userinput +>(local da sua biblioteca Qt)</member> + <member +><userinput +>setenv LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH</userinput +></member> + <member +><userinput +>setenv LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH</userinput +></member> + <member +><userinput +>setenv PATH $QTDIR/bin:$KDEDIR/bin:$PATH</userinput +></member> +</simplelist +></informalexample> +</para> + +</sect3 +> <!-- compile-and-install-preliminaries-tcs --> + +</sect2 +> <!-- compile-and-install-preliminaries --> + +<sect2 id="compile-and-install-make"> +<title +>Compilar o &tdevelop;</title> + +<indexterm zone="compile-and-install-make"> + <primary +>make</primary> + <secondary +>Instalação do &tdevelop;</secondary +></indexterm> +<indexterm zone="compile-and-install-make"> + <primary +>compilação</primary> + <secondary +>&tdevelop;</secondary +></indexterm> + +<note +><para +>Na discussão a seguir, assumimos que você colocou o código do seu &tdevelop; na directoria <filename class="directory" +>~/codigo_kde3/tdevelop</filename +>. </para +></note> + +<sect3 id="compile-and-install-make-cvs"> +<title +>Considerações Especiais de Compilação do &CVS;</title> + +<para +>No caso de você usar uma imagem do &tdevelop; do &CVS;, os passos de compilação iniciais dependem se você fez um 'checkout' completo ou se apenas actualizou o código. </para> + +<variablelist> +<varlistentry> +<term id="compile-and-install-make-cvs-co" +>Após um 'Checkout' de CVS</term> +<listitem> +<para +>Você deverá <emphasis +>inicializar o sistema de compilação</emphasis +> depois de um 'checkout' completo. O mesmo se aplica de cada vez que você inicia a extracção do zero. Escreva: </para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make -f admin/Makefile.common cvs-clean</userinput +> </member +></simplelist +></informalexample> +<para +>e depois <emphasis +>todos</emphasis +> os passos a seguir. </para> +<note +><para +>Você poderá necessitar de acesso ao repositório do &CVS; para a limpeza, se alguns ficheiros corrompidos ou em falta precisarem de ser reconstruídos. </para +></note> +<important +><para +>O comando <command +>cvs-clean</command +> irá <emphasis +>remover todos os ficheiros</emphasis +> que não pertençam ao &CVS; na directoria! Certifique-se que salvaguarda todas as informações valiosas, antes de executar este comando de limpeza. </para +></important> +</listitem> +</varlistentry> + +<varlistentry> +<term id="compile-and-install-make-cvs-up" +>Após uma Actualização do CVS</term> +<listitem> +<para +>O próximo passo depende do resultado da sequência de actualização do &CVS;. Se você obteve algo do género do que se segue (repare na marca U ou P à esquerda, o que indica que o ficheiro foi alterado): </para> + +<screen +>U /uma_directoria_qualquer/Makefile.am +</screen> +<para +>ou se você fez uma extracção completa, você precisa de fazer: </para> +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make -f Makefile.cvs</userinput +> </member +></simplelist +></informalexample> +<para +>antes de prosseguir com <emphasis +>todos</emphasis +> os passos a seguir. </para> +</listitem> +</varlistentry> +</variablelist> +</sect3 +> <!-- compile-and-install-make-cvs --> + +<sect3 id="compile-and-install-make-basic"> +<title +>Sequência Básica de Comandos do <command +>make</command +></title> + +<para +>Logo que o sistema básico do 'make' tenha sido configurado desta forma, você precisa de decidir o tipo de sistema do &tdevelop; que você deseja usar. Isto é feito com o seguinte passo do 'configure' que compila a <filename +>Makefile</filename +> real que o comando <command +>make</command +> irá usar. </para> + +<note +><para +>Você poderá ignorar a opção <option +>--prefix</option +> das seguintes linhas de comando do <command +>configure</command +> se você quiser que o &tdevelop; seja instalado na directoria predefinida do &kde;. Veja o capítulo com <link linkend="compile-and-install-options" +>Algumas notas sobre as opções do <command +>configure</command +></link +> para saber mais sobre o assunto. </para +></note> + +<variablelist> +<varlistentry> +<term +>Uma Versão Compilada com Depuração</term> +<listitem> +<para +>Se você quiser manter um registo do que a sua aplicação &tdevelop; faz durante a sua execução, poderá criar uma versão compilada com informações de depuração. Basta correr o comando <command +>configure</command +> para o fazer: </para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>./configure --enable-debug=full --prefix=(onde-está-o-seu-kde3)</userinput +> </member +></simplelist +></informalexample> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Uma Versão Compilada para Produção</term> +<listitem> +<para +>Se você só quiser usar o &tdevelop; tal-como-está (mais pequeno e mais rápido) basta a versão para produção. O <command +>configure</command +> fica deste modo da seguinte forma.</para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>./configure --prefix=(onde-está-o-seu-kde3)</userinput +> </member +></simplelist +></informalexample> + +<note> +<para +>Se você quiser criar a sua própria <link linkend="make-api" +>documentação da API</link +> para o &tdevelop;, você precisa de incluir ainda mais outra opção do comando <command +>configure</command +>: </para> +<informalexample +><simplelist> + <member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>./configure --</userinput +>(opções-acima) <userinput +>\</userinput +></member +> <member +><userinput +>--with-tdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/tdelibs-apidocs</userinput +></member> +</simplelist +></informalexample> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Compilar e Instalar o &tdevelop;</term> +<listitem> +<para +>O <command +>configure</command +> irá verificar o sistema e criar uma <filename +>Makefile</filename +> de acordo com o que encontrou. O comando <command +>make</command +> irá usar esta <filename +>Makefile</filename +> por omissão. Deste modo, o </para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make</userinput +> </member +></simplelist +></informalexample> +<para +>será suficiente. Se necessário, obtenha agora permissões de 'root' se fizer </para> +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> +<para +>e indique a senha do 'root'. Instale então agora a aplicação: </para> +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make install</userinput +> </member +></simplelist +></informalexample> +<para +>E foi tudo. Se você instalou o &tdevelop; na directoria por omissão do &kde;, você poderá agora correr o IDE. Caso contrário, serão necessários alguns passos adicionais como é demonstrado na secção <link linkend="compile-and-install-options-dir" +>Directoria de instalação personalizada</link +> em baixo. </para> + +<note> + <para +>De facto, já terão sido instaladas normalmente três aplicações baseadas no &tdevelop;: </para> + <itemizedlist> + <listitem +><para +>O IDE do &tdevelop; — este é o local onde você normalmente irá trabalhar.</para +></listitem> + <listitem +><para +>O navegador de documentação do Assistente do &tdevelop; autónomo — isola todas as funcionalidades poderosas de documentação do IDE &tdevelop; numa ferramenta separada. Isto pode ser útil quando desejar procurar por alguma documentação de programação mas não queira iniciar o IDE por completo.</para +></listitem> + <listitem +><para +>O Desenhador do &tdevelop; — aumenta o &Qt; User Interface Designer, adicionando os elementos específicos do &kde; e integra-se bem no IDE &tdevelop;.</para +></listitem> + </itemizedlist> +</note> +</listitem> +</varlistentry> +</variablelist> + + +</sect3 +> <!-- compile-and-install-make-basic --> +</sect2 +> <!-- compile-and-install-make --> + + +<sect2 id="compile-and-install-options"> +<title +>Algumas Notas sobre as Opções do <command +>configure</command +></title> + +<sect3 id="compile-and-install-options-dir"> +<title +>Directoria de Instalação Personalizada</title> + +<indexterm zone="compile-and-install-options-dir"> + <primary +>&tdevelop;</primary> + <secondary +>instalação</secondary> + <tertiary +>directoria personalizada</tertiary +></indexterm> +<indexterm zone="compile-and-install-options-dir"> + <primary +>directoria personalizada</primary +></indexterm> +<indexterm zone="compile-and-install-options-dir"> + <primary +>KDEDIRS</primary +></indexterm> +<indexterm zone="compile-and-install-options-dir"> + <primary +>kbuildsycoca</primary +></indexterm> + +<para +>Por omissão, o <command +>configure</command +> prepara o IDE para ser instalado na directoria predefinida do &kde;. Isto é necessário porque o &tdevelop; assume o acesso directo a algumas ferramentas e componentes que se encontram aí. Se você quiser usar a sua própria directoria de instalação, você terá de dizer isso ao <command +>configure</command +> com a opção <option +>--prefix</option +>: </para> +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>./configure --prefix=(onde-está-o-seu-kde3)</userinput +> </member +></simplelist +></informalexample> +<para +>Existe uma contrapartida se o fizer. Você precisa de arranjar uma forma de o &tdevelop; aceder às ferramentas e componentes necessários na directoria do &kde;. (Você poderá à mesma usar o IDE sem o fazer, mas terá as capacidades bastante restritas). </para> +<para +>Invoque uma linha de comandos e execute os seguintes comandos antes de iniciar o &tdevelop; na linha de comandos. </para> + +<note +><para +><emphasis +>Tenha cuidado em usar o plural:</emphasis +> É o <quote +><envar +>KDEDIRS</envar +></quote +>, não apenas o <quote +><envar +>KDEDIR</envar +></quote +>) </para +></note> + +<informalexample +><simplelist> + <member +><prompt +>(a-sua-directoria-do-tdevelop)> </prompt +> <userinput +>export KDEDIRS=/usr/local/kde:/opt/kde3</userinput +> </member> + <member +><prompt +>~> </prompt +> <userinput +>kbuildsycoca</userinput +> </member> + <member +>(Agora inicie o &tdevelop;:) </member> + <member +><prompt +>~> </prompt +> <userinput +>tdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><simplelist> + <member +>A variável de ambiente <envar +>KDEDIRS</envar +> precisa de apontar para <emphasis +>a lista de directorias activas do &kde;</emphasis +> do seu sistema. É usado</member> + <member +><filename class="directory" +>/usr/local/kde</filename +>:<filename class="directory" +>/opt/kde3</filename +></member> + <member +>apenas como exemplo.</member> + <member +>A directoria <filename class="directory" +>/usr/local/kde</filename +> poderá, por exemplo, conter uma versão incompleta do &kde; que você tenha compilado para fins de depuração e a <filename class="directory" +>/opt/kde3</filename +> poderá, por sua vez, conter a versão normal do &kde; para a sua distribuição usada no dia-a-dia.</member> +</simplelist +></note> + +<para +>Numa linha de comandos 'tcsh' você precisa de definir as variáveis de ambiente usando: </para> +<informalexample +><simplelist +><member +><prompt +>~> </prompt +> <userinput +>setenv KDEDIRS /usr/local/kde:/opt/kde3</userinput +> </member +></simplelist +></informalexample> +<para +>O comando <command +>kbuildsycoca</command +> (<quote +>build system control cache</quote +> ou <quote +>construir a 'cache' de controlo do sistema</quote +>) procura as bibliotecas e coloca em 'cache' a sua localização e versão, para que o &tdevelop; possa então encontrá-las. A contrapartida é que leva bastante tempo — e tem de ser corrida sempre que você você invoque a linha de comandos para iniciar o &tdevelop; a partir de uma directoria não-predefinida. Você poderá querer colocar os comandos acima num 'script' para reduzir o esforço de escrita. </para> +<para +>(Você poderá também colocar as mesmas linhas no seu <filename +>.bashrc</filename +> ou <filename +>.cshrc</filename +>, mas isso não é aconselhável, dado que o <command +>kbuildsycoca</command +> irá então ser executado sempre que você chamar a linha de comandos). </para> + +<note +><para +>O comando <command +>kbuildsycoca</command +> não se executa a partir da raiz. Você terá de o invocar com um utilizador que não o 'root'. (Mas <emphasis +>não é uma boa ideia</emphasis +>, de qualquer forma, programar com o utilizador 'root'!) </para +></note> +</sect3 +> <!-- compile-and-install-options-dir --> + +<!-- ### put a sect3 with other configuration options here --> + +</sect2 +> <!-- compile-and-install-options --> + +</sect1 +> <!-- compile-and-install --> + +<sect1 id="make-api"> +<title +>Como Obter a Documentação da API do &tdevelop;</title> + +<indexterm zone="make-api"> + <primary +>API</primary> + <secondary +>&tdevelop;</secondary +></indexterm> +<indexterm zone="make-api"> + <primary +>&tdevelop;</primary> + <secondary +>API</secondary +></indexterm> +<indexterm zone="make-api"> + <primary +>compilação</primary> + <secondary +>&tdevelop;</secondary> + <tertiary +>API</tertiary +></indexterm> +<indexterm zone="make-api"> + <primary +>configure</primary> + <secondary +>API do &tdevelop;</secondary +></indexterm> + +<para +>API é a abreviatura de <quote +>Application Program Interface</quote +> ou <quote +>Interface de Programação de Aplicações</quote +>. De facto, uma interface de programação desse tipo é um conjunto de descrições (&ie;, convenções de chamadas) pelas quais uma aplicação acede ao sistema operativo ou a outros serviços. No nosso contexto, todavia, foi adoptada uma definição mais abrangente. A API de uma aplicação do &kde; ou do &Qt; é um resumo das interfaces das classes e dos métodos, uma sinopse a ser usada como um dicionário para navegar pelo código. </para> +<para +>Existe uma versão da API mais actual disponível na <ulink url="http://www.tdevelop.org/HEAD/doc/api/html/index.html" +>página Web do KDevelop</ulink +>. Ele será actualizado automaticamente a cada 24 horas, para que você se possa manter a par. </para> +<para +>Bem, esta versão poderá ser usada apenas para leitura na Internet. Mas, de qualquer forma, você poderá criar também a sua própria documentação da API a partir do código do &tdevelop;. Para o fazer, você precisa de dizer ao sistema do 'automake' onde encontrar a API das KDELIBS no seu sistema. Isto é feito com a opção <option +>--with-tdelibsdoxy-dir</option +> no comando <command +>configure</command +>:, quando se preparar para compilar o código do &tdevelop;: </para> + +<informalexample +><simplelist> + <member +><prompt +>~/codigo_kde/tdevelop> </prompt +> <userinput +>./configure --</userinput +>(opções-normais)<userinput +> \</userinput +> </member> + <member> + <userinput +>--with-tdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/tdelibs-apidocs</userinput> + </member> +</simplelist +></informalexample> + +<para +>(o <command +>make</command +> irá substituir o <varname +>$KDEDIR</varname +> pela sua directoria real do &kde;). Depois disso, execute um comando <command +>make</command +> <link linkend="compile-and-install-make-basic" +>normal</link +>. Depois de o IDE do &tdevelop; ter sido criado, você terá a opção para criar a API também. Para isso, você terá de executar </para> +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make apidocs</userinput +> </member +></simplelist +></informalexample> + +<para +>Isto irá criar um ficheiro <filename +>Doxyfile</filename +> na sua directoria de base do &tdevelop; que irá, por sua vez, ser processado pela aplicação <application +>DOxygen</application +> para criar um conjunto grande de ficheiros <filename +>.html</filename +> com a API. Quando o processo relativamente longo de criação da API chegar finalmente ao fim, você terá de instalar a API tal como se fosse instalar o IDE &tdevelop; em si. Obtenha as permissões de super-utilizador, se necessário, </para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> + +<para +>e indique a senha do 'root'. Instale então os ficheiros da API: </para> + +<informalexample +><simplelist +><member +><prompt +>~/codigo_kde3/tdevelop> </prompt +> <userinput +>make install-apidox</userinput +> </member +></simplelist +></informalexample> + +<para +>Quando isto tiver sido feito, o <command +>make</command +> informá-lo-á sobre a directoria onde você poderá finalmente ver o conteúdo da documentação da API. Lembre-se deste endereço, dado que o poderá usar tanto no &konqueror; como dentro do &tdevelop;, no caso de você ter configurado o código do &tdevelop; como um projecto sobre o qual trabalhar. </para> + +<note +><para +>Você irá ver provavelmente um grande conjunto de mensagens de aviso e/ou erro durante a criação da API executada pelo <application +>Doxygen</application +>. É melhor ignorá-las, dado que são apenas do interesse dos programadores do &tdevelop;. Se a geração da API chegar alguma vez ao fim com sucesso, os ficheiros da API em <filename +>.html</filename +> serão válidos. </para +></note> + +</sect1 +> <!-- make-api --> + +</appendix +> <!-- tdevelop-install --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-scripting.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-scripting.docbook new file mode 100644 index 00000000000..0764dce87c5 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-scripting.docbook @@ -0,0 +1,74 @@ +<chapter id="tdevelop-scripting"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Ian</firstname +><surname +>Geiser</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Usar 'Scripts' no KDevelop</title> + +<sect1 id="running-scripts"> +<title +>Executar os 'Scripts'</title> +<para +>Para aceder a um 'script' que esteja disponível ao &tdevelop;, use o menu <menuchoice +><guimenu +>Ferramentas</guimenu +><guimenuitem +>'Scripts'</guimenuitem +></menuchoice +>. Se não existir esse menu, então não estão nenhuns 'scripts' disponíveis no KDevelop. </para> +</sect1> + +<sect1 id="adding-scripts"> +<title +>Adicionar 'Scripts'</title> +<para +>Logo que tenha adicionado o suporte do KScript à sua aplicação anfitriã, a adição dos 'scripts' é igualmente simples. Os programas são compostos em duas partes, um ficheiro 'desktop' que contém os meta-dados sobre o programa e o programa em si. Esta aproximação foi usada devido à segurança e à simplicidade. O ficheiro 'desktop' oferece meta-dados para os menus e para o tipo de programa. Isto evita que a aplicação-anfitriã tenha de inspeccionar cada um dos programas. Um exemplo desse ficheiro é mostrado abaixo: </para> +<para +>O exemplo acima demonstra as partes principais que o KScript irá procurar. O primeiro item, o "Name", é o nome que irá aparecer ao utilizador na aplicação-anfitriã e o "Comment" será mostrado normalmente como uma dica. O "Type" é o mais importante. Este é usado para seleccionar o motor de 'scripts' adequado para executar o programa. De momento, os tipos disponíveis para o KDE são o "ShellScript/bash" e o "JavaScript/kjs". O próximo passo é criar o programa em si. Para o exemplo acima, o tipo de programa usado é o "ShellScript/bash". O motor de 'scripts' 'shellscript' oferece algumas coisas para o programador. O primeiro elemento é o ID de DCOP da aplicação anfitriã. Este é passado ao programa como primeiro argumento. Isto significa que, em todo o lado no programa, o valor de "$1" irá devolver o ID de DCOP do anfitrião. É mostrado um exemplo de programa abaixo: </para> + +<para +>Este programa é bastante simples e apenas executa um comando, passando o texto do primeiro documento ao resultado do "ls -l"</para> + +<para +>Uma das ferramentas mais úteis ao desenvolver programas para as aplicações é a aplicação KDCOP.</para> +<figure id="screenshot-kdcop" float="1"> + <title +>KDCOP - Navegar nas Interface de DCOP no &tdevelop;</title> + <mediaobject> + <imageobject +><imagedata fileref="kdcop_browsing.png"/></imageobject> + </mediaobject> +</figure> + +<para +>A ferramenta KDCOP permite aos programadores dos 'scripts' navegarem e depurar as interfaces actuais da aplicação anfitriã. O KDCOP também oferece uma funcionalidade gira que permite aos utilizadores seleccionar um método e arrastar o código actual para o seu editor de texto. Isto simplifica a utilização para as pessoas que não conheçam os métodos de DCOP da linguagem de desenvolvimento. De momento, o KDCOP suporta o KJSEmbed, o Python, e a UNIX Shell para aceder ao DCOP.</para> + +<para +>Logo que o 'script' esteja completo, está pronto a ser instalado. Os programadores das aplicações deverão documentar a localização que será percorrida à procura destes programas. No caso do exemplo anterior do Kate, os programa estão localizados em "$KDEDIRS/share/apps/kate/scripts".</para> + +<figure id="screenshot-scripts" float="1"> + <title +>'Scripts' do &tdevelop; no Sistema de Ficheiros</title> + <mediaobject> + <imageobject +><imagedata fileref="script_location.png"/></imageobject> + </mediaobject> +</figure> + +<para +>O ficheiro 'desktop' do programa, bem como o programa associado, deverão estar na mesma pasta. Para os programadores do 'script', também se recomenda que todos os recursos dos outros programas, como os ficheiros UI ou os ficheiros de dados, deverão estar também na pasta de programas. No exemplo acima, o programa irá aparecer no menu "Ferramentas->'Scripts' do KDE". Uma coisa importante para os programadores de 'scripts' repararem é que não deverão executar operações que possam bloquear durante bastante tempo ou entrar num ciclo de eventos. Isto deve-se ao facto de a versão actual da interface de 'scripts' estar vocacionada para as tarefas automatizadas que executem até terminar. Isto está a ser pensado e extendido para o KDE 4. </para> + +</sect1> + + +</chapter> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-survey.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-survey.docbook new file mode 100644 index 00000000000..575935943fd --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/tdevelop-survey.docbook @@ -0,0 +1,740 @@ +<chapter id="tdevelop-survey"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Introdução às Funcionalidades do &tdevelop;</title> + +<indexterm zone="tdevelop-survey"> + <primary +>&tdevelop;</primary> + <secondary +>introdução</secondary +></indexterm> +<indexterm zone="tdevelop-survey"> + <primary +>vista geral</primary +></indexterm> +<indexterm zone="tdevelop-survey"> + <primary +>introdução</primary +></indexterm> + +<para +>O &tdevelop; integra um conjunto de ferramentas, programas e modelos numa interface de utilizador comum. Basicamente, consiste em <itemizedlist> + <listitem +><para +>vários <link linkend="uimodes-survey" +>modos de interface de utilizador</link +> com os quais você poderá seleccionar a aparência e comportamento do espaço de trabalho, </para +></listitem> + <listitem +><para +>um <link linkend="applicationwizard" +>&appwizard;</link +> que o ajuda a configurar um novo projecto, </para +></listitem> + <listitem +><para +>vários <link linkend="makesystems" +>sistemas de gestão de projectos</link +> que o ajudam a compilar e a gerir o seu projecto, </para +></listitem> + <listitem +><para +>algumas <link linkend="editing" +>ferramentas de edição</link +> para trabalhar nos textos do seu programa </para +></listitem> + <listitem +><para +>vários <link linkend="file-browsers" +>navegadores de ficheiros</link +> que lhe oferecem várias vistas sobre o seu sistema de ficheiros, </para +></listitem> + <listitem +><para +>vários <link linkend="class-browsers" +>navegadores de classes</link +> para o ajudarem a gerir as classes e as suas relações entre si no seu projecto de programação orientada por objectos, </para +></listitem> + <listitem +><para +>uma <link linkend="debugger" +>interface para o depurador</link +> para procurar e remover os erros do programa dentro do &tdevelop;, e </para +></listitem> + <listitem +><para +>várias <link linkend="plugin-tools" +>ferramentas em 'plugins'</link +>, ou seja, módulos extensíveis que podem ser carregados durante a execução e a pedido. Isto permite-lhe activar apenas as funcionalidades que você realmente necessita. </para +></listitem> + <listitem +><para +>um conjunto de outras ferramentas auxiliares de diagnóstico, documentação e optimização. </para +></listitem> +</itemizedlist> +</para> + +<note> + <para +>De facto existem três aplicações baseadas no &tdevelop;: </para> + <itemizedlist> + <listitem +><para +>O IDE do &tdevelop; — este é o local onde você normalmente irá trabalhar.</para +></listitem> + <listitem +><para +>O navegador de documentação do Assistente do &tdevelop; autónomo — isola todas as funcionalidades poderosas de documentação do IDE &tdevelop; numa ferramenta separada. Isto pode ser útil quando desejar procurar por alguma documentação de programação mas não queira iniciar o IDE por completo.</para +></listitem> + <listitem +><para +>O Desenhador do &tdevelop; — aumenta o &Qt; User Interface Designer, adicionando os elementos específicos do &kde; e integra-se bem no IDE &tdevelop;.</para +></listitem> + </itemizedlist> +</note> + + +<sect1 id="uimodes-survey"> +<title +>Modos de Interface do Utilizador Disponíveis</title> + +<indexterm zone="uimodes-survey"> + <primary +>&tdevelop;</primary> + <secondary +>modos de interface do utilizador</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>interface do utilizador</primary> + <secondary +>modos do &tdevelop;</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Modos de interface</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Janelas-Filhas</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Janelas em Páginas</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Janelas de Topo</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>IDEAl</primary +></indexterm> + +<para +>O &tdevelop; oferece aos programadores quatro modos de interface do utilizador (carregue no nome do modo para ver um exemplo): <itemizedlist> + <listitem +><para +><link linkend="ideal-desc" +>IDEAl</link +></para> + <para +>Esta é uma nova aproximação de interfaces de utilizador que optimiza tanto o espaço de trabalho como a actuação intuitiva sobre as ferramentas. </para> + <itemizedlist> + <listitem +><para +>Todas as janelas de ferramentas estão acopladas numa disposição em páginas à volta da área da janela principal. Elas agrupam-se à esquerda, em baixo e à direita, de acordo com os serviços fornecidos. </para +></listitem> + <listitem +><para +>As janelas de edição e de navegação estarão empilhadas numa grande janela de páginas a meio da área da janela principal. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="mdi-desc" +>Janelas-Filhas</link +></para> + <itemizedlist> + <listitem +><para +>Todas as janelas de ferramentas estão inicialmente acopladas à janela principal.</para +></listitem> + <listitem +><para +>As janelas de edição e de navegação irão existir como janelas de topo dentro de uma área de visualização da janela principal.</para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="tabbed-desc" +>Janelas em Páginas</link +></para> + <itemizedlist> + <listitem +><para +>Todas as janelas de ferramentas estão inicialmente acopladas à janela principal. </para +></listitem> + <listitem +><para +>As janelas de edição e de navegação irão estar empilhadas numa janela com várias páginas separadas. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="toplevel-desc" +>Janelas de Topo</link +></para> + <itemizedlist> + <listitem +><para +>Todas as janelas de edição, navegação e de ferramentas serão janelas de topo directamente no ecrã. </para +></listitem> + <listitem +><para +>A janela principal só irá conter o menu, as barras de ferramentas e a barra de estado. </para +></listitem> + </itemizedlist> + </listitem> + +</itemizedlist> +</para> + +<sect2 id="uimodes-switch"> +<title +>Como Mudar de Modos de Interface do Utilizador:</title> + +<indexterm zone="uimodes-switch"> + <primary +>interface do utilizador</primary> + <secondary +>mudar de modos</secondary +></indexterm> +<indexterm zone="uimodes-switch"> + <primary +>mudar de modo de interface</primary +></indexterm> + +<para +>Para mudar o modo da interface do utilizador, seleccione a <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Configurar o KDevelop...</guimenuitem +> </menuchoice +> no menu. A janela para <guilabel +>Configurar o KDevelop</guilabel +> irá aparecer, onde então terá de seleccionar <guilabel +>Interface do Utilizador</guilabel +> no campo do lado esquerdo. Isto levá-lo-á à página de configuração mostrada em baixo. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface.png" format="PNG"/> + </imageobject> + <caption +><para +>Seleccione um modo de interface de utilizador </para +></caption> + </mediaobject> +</screenshot> + +<para +>(As versões mais antigas do &tdevelop; oferecem apenas a secção de selecção do modo de topo). </para> + +<para +>Na secção do <guilabel +>Modo Principal de Interface do Utilizador</guilabel +>, seleccione a opção exclusiva do modo de interface de utilizador com que deseja trabalhar. </para> +<para +>Dependendo do modo de interface de utilizador que seleccionou, as outras secções de configuração ficarão disponíveis, nas quais poderá ajustar mais detalhes da aparência e comportamento às suas preferências. Veja o capítulo sobre como <link linkend="setup-ui" +>Seleccionar a Interface do Utilizador</link +> para mais detalhes. </para> + +<note +><para +>Não se esqueça de reiniciar o &tdevelop; para que as suas selecções façam efeito. </para +></note> + +</sect2 +> <!-- uimodes-switch --> + +<sect2 id="maximize-workspace"> +<title +>Como Maximizar a Área do Espaço de Trabalho</title> + +<indexterm zone="maximize-workspace"> + <primary +>&tdevelop;</primary> + <secondary +>espaço de trabalho</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>&tdevelop;</primary> + <secondary +>maximizar o espaço de trabalho</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interface do utilizador</primary> + <secondary +>espaço de trabalho</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interface do utilizador</primary> + <secondary +>barra de menu</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interface do utilizador</primary> + <secondary +>modo de ecrã completo</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>modo de ecrã completo</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>barra de menu</primary> + <secondary +>esconder/mostrar</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>esconder a barra de menu</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>mostrar a barra de menu</primary +></indexterm> + +<para +>Para maximizar o espaço, existe um modo de janelas de ecrã completo que expande a área da janela principal até aos extremos do ecrã. O espaço adicional poderá ser reclamado de volta se esconder a barra de menu. E, claro, você poderá esconder qualquer barra de ferramentas como é normal nas aplicações do <application +>KDE</application +>. </para> + +<variablelist> +<varlistentry> +<term +>Modo de Ecrã Completo</term> +<listitem> +<para +>Para mudar de ou para o modo de ecrã completo seleccione <menuchoice +> <guimenu +>Ver</guimenu +> <guimenuitem +>Modo de Ecrã Completo</guimenuitem +> </menuchoice +> no menu ou carregue em <keycombo +>&Ctrl;&Shift;<keycap +>F</keycap +></keycombo +>. Existe também um ícone <guiicon +>Modo de Ecrã Completo</guiicon +> na <guilabel +>Barra de Navegação</guilabel +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Esconder/Mostrar o Menu</term> +<listitem> +<para +>Para <emphasis +>esconder</emphasis +> o menu seleccione <menuchoice +> <guimenu +>Configuração</guimenu +> <guimenuitem +>Mostrar o Menu</guimenuitem +> </menuchoice +> nas opções de menu ou carregue em <keycombo +>&Ctrl;<keycap +>M</keycap +> </keycombo +>. Você poderá também incluir um <guiicon +>Mostrar o Menu</guiicon +> numa barra de ferramentas adequada, p.ex., na <guilabel +>Barra de Navegação</guilabel +> para esse fim. Para <emphasis +>voltar a mostrar</emphasis +> o menu você precisa de carregar em <keycombo +>&Ctrl;<keycap +>M</keycap +></keycombo +> ou de usar o ícone <guiicon +>Mostrar o Menu</guiicon +>, se estiver disponível. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- maximize-workspace --> + +</sect1 +> <!-- uimodes-survey --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="ui-elements"> +<title +>Elementos da Interface do Utilizador</title> + +<para +>(... ainda não escrito ...) </para> + +<sect2 id="ui-elements-workarea"> +<title +>A Área de Trabalho</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-workarea --> + +<sect2 id="ui-elements-titlebar"> +<title +>A Barra de Título do &tdevelop;</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-titlebar --> + +<sect2 id="ui-elements-statusbar"> +<title +>A Barra de Estado do &tdevelop;</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-statusbar --> + +<sect2 id="ui-elements-menubar"> +<title +>A barra de menu</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-menubar --> + +<sect2 id="ui-elements-toolbars"> +<title +>As Barras de Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-toolbars --> + +<sect2 id="ui-elements-treetoolviews"> +<title +>As Janelas em Árvore</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-treetoolviews --> + +<sect2 id="ui-elements-outputtoolviews"> +<title +>As Janelas dos Resultados das Ferramentas</title> + +<para +>(... ainda não escrito ...) </para> +</sect2 +> <!-- ui-elements-outputtoolviews --> + +</sect1 +> <!-- ui-elements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makesystems"> +<title +>Sistemas de Gestão de Projectos</title> + +<indexterm zone="makesystems"> + <primary +>gestão de projectos</primary +></indexterm> + +<para +>Globalmente, um projecto basear-se-á num sistema de gestão de projecto qualquer. O &tdevelop; oferece quatro <emphasis +>sistemas de gestão de projectos</emphasis +> que o programador poderá seleccionar ao criar um novo projecto. <itemizedlist> + <listitem +><para +>Os <link linkend="automake-project" +>projectos do Automake</link +> usam as ferramentas de desenvolvimento normais da &GNU;. </para +></listitem> + <listitem +><para +>Os <link linkend="qmake-project" +>projectos do QMake</link +> usam o gestor de projectos QMake da Trolltech. </para +></listitem> + <listitem +><para +>Os <link linkend="ant-project" +>projectos de ANT</link +> usam o gestor de projectos ANT do Apache para a programação em &Java;. </para +></listitem> + <listitem +><para +>Os <link linkend="custom-project" +>projectos personalizados</link +> necessitam que você faça a gestão das suas próprias <filename +>Makefiles</filename +>. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-project"> +<title +>Projectos Automake</title> + +<indexterm zone="automake-project"> + <primary +>projectos</primary> + <secondary +>automake</secondary +></indexterm> +<indexterm zone="automake-project"> + <primary +>automake</primary> + <secondary +>projectos</secondary +></indexterm> + +<para +>Os projectos criados com o &automanag; do &tdevelop; tornam bastante simples a utilização das ferramentas normais da &GNU; para os programadores. Eles possibilitam <itemizedlist> + <listitem +><para +>uma melhor forma de gerar <filename +>Makefile</filename +>s e </para +></listitem> + <listitem +><para +>uma forma segura e boa de se adaptar facilmente entre vários sistemas de comandos <filename +>configure</filename +> gerados pelo Automake. </para +></listitem> +</itemizedlist> +</para> +</sect2 +> <!-- automake-project --> + +<sect2 id="qmake-project"> +<title +>Projectos QMake</title> + +<indexterm zone="qmake-project"> + <primary +>projectos</primary> + <secondary +>qmake</secondary +></indexterm> +<indexterm zone="qmake-project"> + <primary +>qmake</primary> + <secondary +>projectos</secondary +></indexterm> + +<para +>Para os programadores que gostam da flexibilidade e comportamento do sistema QMake do &Qt;, o &tdevelop; oferece a possibilidade de lidar com os projectos baseados em QMake (os ficheiros .pro) na sua interface gráfica. </para> +<para +>Para mais informações sobre o gestor de projectos QMake veja o <quote +>Guia de Utilizador do qmake</quote +>, que deverá estar incluído na sua distribuição, ou dê uma vista de olhos na página de <ulink url="http://doc.trolltech.com/" +>Documentação da TROLLTECH</ulink +> onde você poderá encontrar a documentação do QMake para a sua versão da <quote +>Plataforma de Desenvolvimento de Aplicações Gráficas em C++ Qt</quote +>. </para> +</sect2 +> <!-- qmake-project --> + +<sect2 id="ant-project"> +<title +>Projectos ANT (Projectos em &Java;)</title> + +<indexterm zone="ant-project"> + <primary +>projectos</primary> + <secondary +>ant</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>ant</primary> + <secondary +>projectos</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>projectos</primary> + <secondary +>Java</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>Java</primary> + <secondary +>projectos</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>desenvolvimento</primary> + <secondary +>Java</secondary +></indexterm> + +<para +>Os programadores em &Java; poderão querer usar o gestor de projectos ANT do projecto Apache para os seus projectos. Para configurar um novo projecto de ANT no &tdevelop; seleccione <menuchoice +><guimenu +>Projecto</guimenu +> <guimenuitem +>Novo Projecto...</guimenuitem +> <guimenuitem +>Java</guimenuitem +> <guimenuitem +>Projecto de Ant</guimenuitem +> <guimenuitem +>Aplicação</guimenuitem +></menuchoice +>. </para> +<para +>Para mais informações veja a página do <ulink url="http://ant.apache.org/" +>Projecto Ant do Apache</ulink +>. </para> +</sect2 +> <!-- ant-project --> + +<sect2 id="custom-project"> +<title +>Projectos Personalizados</title> + +<indexterm zone="custom-project"> + <primary +>projectos</primary> + <secondary +>personalizado</secondary +></indexterm> +<indexterm zone="custom-project"> + <primary +>projectos personalizados</primary +></indexterm> +<indexterm zone="custom-project"> + <primary +>Makefile</primary> + <secondary +>projectos personalizados</secondary +></indexterm> + +<para +>Se você preferir manter as suas próprias <filename +>Makefiles</filename +> para o seu projecto, você poderá usar a opção de projectos personalizados do &tdevelop;. Isto poderá ser adequado para os projectos estruturados de forma anormal ou se deseja ter um controlo absoluto no processo do <command +>make</command +>. </para> +<para +>Todavia, se você não <emphasis +>precisa de facto</emphasis +> da flexibilidade extra e do controlo do gestor de projectos personalizados, você deverá pensar no Autoproject ou num dos outros gestores de projectos, porque facilitam consideravelmente os processos de compilação e distribuição do programa. </para> +</sect2 +> <!-- custom-project --> + +<sect2 id="makesystems-distribution"> +<title +>Como Distribuir a sua Aplicação</title> + +<indexterm zone="makesystems-distribution"> + <primary +>distribuição</primary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>aplicação</primary> + <secondary +>distribuição</secondary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>pacotes binários</primary +></indexterm> + +<para +>A distribuição das suas aplicações não necessita que o utilizador final tenha nada de diferente instalado, a não ser <itemizedlist> + <listitem +><para +>um compilador apropriado,</para +></listitem> + <listitem +><para +>um editor de ligações, e</para +></listitem> + <listitem +><para +>as bibliotecas de desenvolvimento apropriadas,</para +></listitem> +</itemizedlist> +</para> +<para +>o que, pelo menos para as aplicações em C++, é normalmente o caso. Mas você pode também distribuir os <emphasis +>pacotes binários</emphasis +> da sua aplicação. De qualquer forma, o utilizador final do seu produto não precisa do &tdevelop; instalado. </para> +<para +>Para fornecer o seu código, aconselhamo-o a incluir também o <emphasis +>ficheiro do projecto</emphasis +> do &tdevelop;. Isto torna muito simples para os outros programadores — se usarem também o &tdevelop; — poder trabalhar com o seu código. </para> +<para +>Para os projectos onde os <emphasis +>vários programadores</emphasis +> estão envolvidos, talvez trabalhando em sítios diferentes, poderá ser este o caso de qualquer forma. Por isso, você poderá garantir a consistência das <filename +>Makefiles</filename +> para não ter problemas. </para> +<para +>Especialmente nas aplicações multilingues, os <emphasis +>tradutores</emphasis +> não irão lidar de facto com o código-fonte, excepto nos casos que necessitem de correcções para permitir o suporte de traduções. </para> + +</sect2 +> <!-- makesystems-distribution --> + +</sect1 +> <!-- makesystems --> + +</chapter +> <!-- tdevelop-survey --> diff --git a/tde-i18n-pt/docs/tdevelop/tdevelop/unixdev.docbook b/tde-i18n-pt/docs/tdevelop/tdevelop/unixdev.docbook new file mode 100644 index 00000000000..2f7d543bfd0 --- /dev/null +++ b/tde-i18n-pt/docs/tdevelop/tdevelop/unixdev.docbook @@ -0,0 +1,641 @@ +<appendix id="unixdev"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Desenvolvimento em &UNIX;</title> + +<indexterm zone="unixdev" +><primary +>desenvolvimento</primary +></indexterm> +<indexterm zone="unixdev"> + <primary +>&UNIX;</primary> + <secondary +>desenvolvimento</secondary +></indexterm> + +<sect1 id="history"> +<title +>Algumas Notas Históricas</title> + +<indexterm zone="history" +><primary +>história</primary +></indexterm> +<indexterm zone="history" +><primary +>linguagens de 'scripting'</primary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>história</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>'pipe'</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>linha de comandos</secondary +></indexterm> +<indexterm zone="history"> + <primary +>'shell'</primary> + <secondary +>&UNIX;</secondary +></indexterm> + +<para +>Desde o início, o &UNIX; tem mantido dois paradigmas de programação bastante diferentes. Um é o mundo das <emphasis +>linguagens de programação das aplicações e do sistema</emphasis +>, onde algum código-fonte é traduzido para código-máquina por um programa de tradução, normalmente um <emphasis +>compilador</emphasis +> ou um <emphasis +>interpretador</emphasis +>. A linguagem de programação C é um exemplo. O &UNIX; foi o primeiro 'kernel' de sistema operativos a ser criado numa dessas linguagens de alto nível, em vez de ser feito em Assembly altamente orientado à máquina, como era feito antes dessa altura. (De facto, a linguagem C foi mesmo inventada para escrever o 'kernel' do &UNIX; e os programas associados num computador PDP-11 da DEC.) </para> +<para +>O outro paradigma é o mundo das <emphasis +>linguagens de 'scripting'</emphasis +>. Este mundo evoluiu com a invenção da linha de comandos do &UNIX;, que era a interface do utilizador com o sistema operativo — e ao mesmo tempo uma linguagem de programação de muito alto nível. Um 'script' da linha de comandos é criado a partir de um conjunto de pequenos programas utilitários, como p.ex. o <command +>grep</command +>, o <command +>sed</command +> ou o <command +>find</command +>. Cada um desses utilitários é desenhado para uma tarefa estritamente definida. O truque é cada utilitário pode ser ligado a outro através de um mecanismo simples de transporte, chamado de <emphasis +>pipe</emphasis +>, o qual direcciona o resultado do utilitário anterior para o canal de introdução de dados do utilitário a seguir. Isto cria uma ferramenta de programação muito poderosa e altamente flexível. </para> +<para +>À medida que o tempo foi evoluindo, também ambos os mundos foram evoluindo. Embora o C ainda seja usado principalmente como uma linguagem de programação de sistemas, o C++, como uma variante do C, enriqueceu com extensões orientadas a objectos e com genericidade e encontrou o seu lugar para o desenvolvimento de aplicações complexas nos anos 90. Existem outras linguagens de programação diversas, e mesmo algumas linguagens mais antigas ainda têm lugar — o FORTRAN77 e o Ada p.ex. ainda têm a sua força nas aplicações numéricas. </para> +</sect1 +> <!-- history --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-scripting-languages"> +<title +>Linguagens de 'Scripting' Contemporâneas</title> +<para +>Na área do 'scripting', houve um ligeiro desvio da linha de comandos, que sofre de problemas de portabilidade, para as linguagens que unificam todas as funcionalidades comuns necessárias para as suas bibliotecas-padrão, embora sejam à mesma capazes de interagir com o exterior através de 'pipes' se necessário. </para> +<para +>Todas essas linguagens de 'scripting' têm em comum o facto de serem altamente portáveis entre as variantes de &UNIX;, &Microsoft; &Windows;, &Mac; OS ou até mesmo o VMS. Do mesmo modo, todas elas têm implementações distribuídas de forma gratuita. </para> + +<sect2 id="unixdev-SL-Perl"> +<title +>&perl;</title> + +<indexterm zone="unixdev-SL-Perl" +><primary +>Perl</primary +></indexterm> +<indexterm zone="unixdev-SL-Perl"> + <primary +>linguagens de 'scripting'</primary> + <secondary +>Perl</secondary +></indexterm> + +<para +>O <ulink url="http://www.perl.com" +>&perl;</ulink +> tornou-se popular como uma linguagem de processamento de texto e de administração de sistemas. No início da World Wide Web, os 'scripts' CGI escritos em &perl; eram uma forma usada em grande medida para criar páginas Web dinâmicas a partir de bases de dados. Hoje em dia, este método foi substituído em grande parte pelo 'plugin' <command +>mod_perl</command +> do servidor Web &apache;. Entre as potencialidades do &perl; encontra-se o seu suporte incorporado para correspondência de expressões regulares avançado e o seu arquivo rico de módulos distribuídos gratuitamente. </para> +<para +>Para mais informações veja o 'site' Web do <ulink url="http://cpan.org/" +>Comprehensive Perl Archive Network (<acronym +>CPAN</acronym +>)</ulink +>. </para> +</sect2 +> <!-- unixdev-SL-Perl --> + +<sect2 id="unixdev-SL-Python"> +<title +>Python</title> + +<indexterm zone="unixdev-SL-Python" +><primary +>Python</primary +></indexterm> +<indexterm zone="unixdev-SL-Python"> + <primary +>linguagens de 'scripting'</primary> + <secondary +>Python</secondary +></indexterm> + +<para +>O <ulink url="http://www.python.org" +>&python;</ulink +> brilha pela elegância do seu sistema de classes e pela facilidade e flexibilidade com que as bibliotecas externas conseguem ser incorporadas, de forma a aparecerem como classes e funções normais do &python;. Em contraste com o &perl;, o &python; tem uma &API; embebida clara e concisa, o que o torna a linguagem de escolha para tornar os programas em C ou C++ utilizáveis em 'scripts'. </para> +</sect2 +> <!-- unixdev-SL-Python --> + +<sect2 id="unixdev-SL-PHP"> +<title +>PHP</title> + +<indexterm zone="unixdev-SL-PHP" +><primary +>PHP</primary +></indexterm> +<indexterm zone="unixdev-SL-PHP"> + <primary +>linguagens de 'scripting'</primary> + <secondary +>PHP</secondary +></indexterm> + +<para +>O <ulink url="http://www.php.net" +>&php;</ulink +> foi inventado como uma linguagem directamente incorporada nas páginas &HTML; e, por consequência, tem as suas utilizações principais a distribuir conteúdo dinâmico na Web. </para> +</sect2 +> <!-- unixdev-SL-PHP --> +</sect1 +> <!-- unixdev-scripting-languages --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<sect1 id="unixdev-hl-script"> +<title +>'Scripting' de Alto-Nível</title> + +<para +>As aplicações de &UNIX; de alto-nível normalmente perdem a velocidade e flexibilidade dos mecanismos de 'scripting' da linha de comandos tradicional. Isto é especialmente verdadeiro no mundo das interfaces gráficas do utilizador (&GUI;) como ⪚ o &kde;. </para> +<para +>Têm existido algumas tentativas de oferecer mecanismos semelhantes que irão funcionar num nível aplicacional mais elevado, como o <link linkend="unixdev-corba" +>CORBA</link +> e, no ambiente do &kde;, o <link linkend="unixdev-dcop" +>&DCOP;</link +>. </para> + +<sect2 id="unixdev-corba"> +<title +>O Protocolo CORBA</title> + +<indexterm zone="unixdev-corba" +><primary +>CORBA</primary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>linguagens de 'scripting'</primary> + <secondary +>CORBA</secondary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>comunicação</primary> + <secondary +>CORBA</secondary +></indexterm> + +<para +>O <ulink url="http://www.omg.org/gettingstarted/corbafaq.htm" +>CORBA</ulink +> (<emphasis +>Common Object Request Broker Architecture</emphasis +>) é uma tentativa para permitir as aplicações informáticas trabalharem em conjunto numa rede. Foi originada pelo comité normativo, privado e independente do distribuidor da <ulink url="http://www.omg.org" +>OMG</ulink +> (Object Management Group). </para> +<para +>Os programas baseados em CORBA usam o protocolo-padrão IIOP para comunicarem. As implementações baseadas no IIOP estão disponíveis num vasto conjunto de sistemas operativos, linguagens de programação e redes, sendo assim multi-plataforma. </para> +<para +>A desvantagem principal do CORBA é a sua velocidade relativamente baixo. Embora isto possa ser suportável em redes, é um grande entrave para as comunicações entre aplicações num ambiente sem rede, como por exemplo o &kde; a correr num único computador. </para> + +</sect2 +> <!-- unixdev-corba --> + +<sect2 id="unixdev-dcop"> +<title +>A Interface de &DCOP;</title> + +<indexterm zone="unixdev-dcop" +><primary +>DCOP</primary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>linguagens de 'scripting'</primary> + <secondary +>DCOP</secondary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>comunicação</primary> + <secondary +>DCOP</secondary +></indexterm> + +<para +>Outra evolução do 'scripting' semelhante ao &UNIX; é o protocolo <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +><emphasis +>DCOP</emphasis +></ulink +>, o qual foi destinado à comunicação entre as aplicações do &kde; para ultrapassar as limitações do CORBA. </para> +<para +>O &DCOP; significa <emphasis +>Desktop COmmunikation Protocol</emphasis +> e está implementado como um mecanismo simples de IPC/RPC para operar sobre 'sockets'. De facto, isto fornece funcionalidades semelhantes às do mecanismo tradicional de 'pipes' do &UNIX;. </para> +<para +>O 'scripting' de linha de comandos tradicional é baseado em programas utilitários relativamente pequenos que foram desenhados para funcionarem de uma forma textual muito restrita. O &DCOP; permite aos programas gráficos elaborados comunicarem uns com os outros de uma forma muito semelhante. Isto permite ⪚ a um programa do &kde; enviar mensagens a outro programa do &kde; ou receber dados do mesmo para os seus objectivos próprios. </para> +<para +>Existem desvantagens, contudo. Para usar o &DCOP; um programa precisa de ser desenhado para conter uma interface &DCOP; especial. Para além disso, o processo de comunicação do &DCOP; corre de forma um pouco lenta. De qualquer forma, ele confere muito do poder e da flexibilidade do 'scripting' em &UNIX; para os programas de alto nível que se baseiam numa interface gráfica para o utilizador. </para> +<para +>Para mais informações, veja o artigo <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +>DCOP: Desktop COmmunications Protocol</ulink +> ou a referência da &API; da <ulink url="developer.kde.org/documentation/library/cvs-api/dcop/html/index.html" +>biblioteca do Desktop Communication Protocol &DCOP;</ulink +> para a biblioteca de &DCOP; do &kde;. </para> +</sect2 +> <!-- unixdev-dcop --> + +</sect1 +> <!-- unixdev-hl-script --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-buildsystems"> +<title +>Sistemas de Compilação</title> + +<para +>Excepto nos casos muito simples, o seu projecto irá consistir de um grande conjunto de blocos de construção de código-fonte, estando cada um deles colocado num ficheiro separado para uma manutenção mais simples. Para pôr isto a correr, você terá de traduzir efectivamente todas estas coisas em algumas unidades de linguagem da máquina, num formato adequado que permita ao sistema operativo carregar e executar o programa. </para> +<para +>Para conseguir isto, as ferramentas básicas que necessárias são <itemizedlist> + <listitem +><para +>um <emphasis +>editor de texto</emphasis +> para escrever os ficheiros de código-fonte, </para +></listitem> + <listitem +><para +>um programa de tradução, normalmente um <emphasis +>compilador</emphasis +> para transformar o código-fonte em ficheiros-objecto, </para +></listitem> + <listitem +><para +>um <emphasis +>criador de bibliotecas</emphasis +> que junta os ficheiros-objecto em bibliotecas, para os poder reutilizar facilmente sem ter de os recompilar. </para +></listitem> + <listitem +><para +>um <emphasis +>editor de ligações</emphasis +> que junta os vários ficheiros-objecto e bibliotecas todos num único executável, </para +></listitem> + <listitem +><para +>um <emphasis +>sistema de compilação</emphasis +> que forneça alguns meios de gerir todas estas coisas e — não esquecer </para +></listitem> + <listitem +><para +>um <emphasis +>depurador</emphasis +> para (assim se espera) poder encontrar todos os erros no programa e possivelmente algumas outras ferramentas de diagnóstico para ter tudo a correr sem problemas. </para +></listitem> +</itemizedlist> +</para> + +<para +>Quando você tem um projecto grande que consiste possivelmente em centenas de ficheiros de código-fonte, o processo de compilação pode-se tornar bastante trabalhoso. Você não irá querer recompilar todos os ficheiros de cada vez que você tenha alterado apenas alguns deles. Em vez disso, você só deseja compilar aqueles ficheiros que são afectados pelas modificações. De um mode geral, não é óbvio saber quais é que são. </para> +<para +>Quando você ⪚ mudar o protótipo de uma função num ficheiro de inclusão, você terá de compilar todos os ficheiros que incluam este. Se o seu projecto contiver assim tantos ficheiros, você poder-se-á esquecer de um ou dois deles, se tiver de fazer esse trabalho manualmente. Como tal, é necessária alguma forma de automatização. </para> + +<sect2 id="unixdev-buildsystems-make"> +<title +>O Processo Make</title> + +<indexterm zone="unixdev-buildsystems-make"> + <primary +>make</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>Makefile</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>regra</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>recompilações</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>alvo</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>dependências</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>comandos</primary +></indexterm> + +<para +>Uma ferramenta que toma conta das recompilações é o <command +>make</command +>. Ele mantém um registo de todo o trabalho, usando um conjunto de <emphasis +>regras</emphasis +> que descrevem o que fazer no caso de algum pedaço de informação (normalmente um ficheiro de código ou um ficheiro-objecto) ser alterado. Todas as regras que pertencem a um dado projecto são guardadas num ficheiro chamado <filename +>Makefile</filename +> que é processado pelo <command +>make</command +> de cada vez que você deseja actualizar o seu trabalho. </para> +<para +>Cada regra consiste em vários blocos de construção, nomeadamente <itemizedlist> + <listitem +><para +>um <emphasis +>alvo</emphasis +>, ou seja, o ficheiro a ser criado </para +></listitem> + <listitem +><para +>um conjunto de <emphasis +>dependências</emphasis +>, basicamente os nomes daqueles ficheiros de que o alvo depende (⪚, o nome de um ficheiro de código, onde então o alvo será o nome do ficheiro-objecto a ser criado) e </para +></listitem> + <listitem +><para +>os <emphasis +>comandos</emphasis +> que serão executados para <quote +>criar</quote +> o alvo (&ie;, para o compilar ou para ligar outros ficheiros-objecto em conjunto para formar um programa executável). </para +></listitem> +</itemizedlist> +</para> +<para +>Basicamente, o comando <command +>make</command +> irá ler as regras uma a seguir à outra, verificar cada ficheiro na lista de dependências de um determinado alvo e criar esse alvo de novo, se algum destes ficheiros foi alterado, usando os comandos indicados na regra. </para> +<para +>Existem várias possibilidades adicionais para controlar um processo do 'make' e, deste modo, uma <filename +>Makefile</filename +> poderá deste modo ficar bastante complexa. Não poderemos entrar em detalhes aqui. Contudo, recomendamos que você se vá acostumando à sintaxe do <command +>make</command +>. Mesmo que você não o use directamente, a compreensão dos fundamentos do sistema de compilação poderá ser útil. Veja o <ulink url="info://make/Top" +> <quote +>Manual do Make da GNU</quote +></ulink +> para mais informações. </para> +<para +>Para mais detalhes específicos do &tdevelop;, veja o capítulo sobre a <link linkend="project-management" +>Gestão de Projectos e Compilações</link +> deste manual. </para> +<para +>Existem vários tutoriais disponíveis; veja as <link linkend="automake-references" +>referências</link +> no capítulo sobre gestão dos projectos e das compilações. </para> +</sect2 +> <!-- unixdev-buildsystems-make --> + +</sect1 +> <!-- unixdev-buildsystems --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-guidevelopment"> +<title +>Desenvolvimento de &GUI;s</title> + +<indexterm zone="unixdev-guidevelopment"> + <primary +>GUI</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>interface gráfica do utilizador</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>interface do utilizador</primary> + <secondary +>GUI</secondary +></indexterm> + +<para +>Os programadores de aplicações estão incumbidos normalmente em ter não só de criar as bibliotecas e a lógica dos programas, mas também em fornecer interfaces de utilizador que sejam tanto intuitivas como funcionais. A maioria dos programadores recebem pouca ou nenhuma formação na programação de GUIs e, como tal, as interfaces do utilizador resultantes poderão ficar mal desenhadas. </para> +<para +>Ao longo dos anos, alguns princípios de desenho foram evoluindo. É altamente recomendado que adira a eles. Desta forma, as suas interfaces de utilizador irão reter uma aparência e comportamento comuns, factores que os utilizadores da sua aplicação irão agradecer. </para> +<para +>Para a programação de &GUI;s no &kde;, existe um guia de estilo disponível. Ele está nas <ulink url="http://developer.kde.org/documentation/standards/kde/style/basics/index.html" +>Linhas-Guia de Interfaces do Utilizador do &kde;</ulink +> na página dos programadores do &kde;. </para> +<para +>Poderá ser encontrada uma breve introdução aos princípios de desenho de interfaces <ulink url="http://axp16.iie.org.mx/Monitor/v01n03/ar_ihc2.htm" +>aqui</ulink +>. </para> + +</sect1 +> <!-- unixdev-guidevelopment --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-ide"> +<title +>Integrar os Conceitos e as Ferramentas – o IDE</title> + +<indexterm zone="unixdev-ide"> + <primary +>IDE</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>ambiente integrado de desenvolvimento</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>desenvolvimento</primary> + <secondary +>IDE</secondary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>ambiente</primary> + <secondary +>IDE</secondary +></indexterm> + +<para +>Existem várias ferramentas separadas disponíveis para quase todos os passos do processo de programação — planeamento, edição, gestão de ficheiros e processos de compilação, depuração, documentação, entre muitas outras coisas. Mas, logo que os projectos cresçam, o processo de programação tornar-se-ão bastante complicados. </para> +<para +>Muito do trabalho repetitivo tem de ser feito ao desenhar, compilar e depurar um programa. Muito do trabalho pode-se poupar através do uso de modelos e 'scripts'. O restante é feito mantendo, de forma simples, as ferramentas disponíveis facilmente e com capacidades de comunicarem umas com as outras através de uma &GUI; comum. </para> +<para +>Por exemplo—não seria conveniente que um depurador fosse capaz de abrir o ficheiro de código em questão num editor e colocasse o cursor directamente sobre a posição do erro que foi encontrado? </para> +<para +>Para conseguir um esquema desses mais facilmente, os <emphasis +>Ambientes de Desenvolvimento Integrados</emphasis +> (&IDE;s) foram criados. Um &IDE; desse género integra todos os modelos, ferramentas e programas necessários no processo de desenvolvimento num único ambiente. </para> +<para +>Para a plataforma do &kde;, o &tdevelop; é desses &IDE;s. Ele contém um conjunto vasto de ferramentas que facilitam o desenvolvimento e manutenção dos programas, mesmo para as diferentes linguagens de programação e pelas várias plataformas. </para> + +<sect2 id="unixdev-ide-tdevelop"> +<title +>Funcionalidades Básicas do &tdevelop; &kdevrelease;</title> + +<indexterm zone="unixdev-ide-tdevelop"> + <primary +>&tdevelop;</primary> + <secondary +>funcionalidades</secondary +></indexterm> +<indexterm zone="unixdev-ide-tdevelop"> + <primary +>funcionalidades</primary +></indexterm> + +<!-- ### copied from web page, needs to be updated --> + +<itemizedlist> + <listitem> + <para +>Gere todas as <emphasis +>ferramentas de desenvolvimento</emphasis +> necessárias para a programação em C++, como o compilador, o editor de ligações, o depurador e o sistema de compilações.</para> + </listitem> + <listitem> + <para +>Contém um <emphasis +>&appwizard;</emphasis +> que gera aplicações completas e prontas a funcionar.</para> + </listitem> + <listitem> + <para +>Permite ao utilizador seleccionar um <emphasis +>editor integrado</emphasis +>, baseado no editor do programador &kwrite; ou no <application +>QEditor</application +> da Trolltech ou noutro qualquer.</para> + </listitem> + <listitem> + <para +>Um <emphasis +>gerador de classes</emphasis +>, para poder criar classes novas e integrá-las no projecto actual.</para> + </listitem> + <listitem> + <para +><emphasis +>Gestão de ficheiros</emphasis +> para o código, os ficheiros de inclusão, documentação, etc., a incluir no projecto.</para> + </listitem> + <listitem> + <para +>A assistência na <emphasis +>criação de manuais do utilizador da aplicação</emphasis +>, feitos com as ferramentas do &kde;.</para> + </listitem> + <listitem> + <para +><emphasis +>Documentação da &API;</emphasis +> automática e baseada em &HTML; para as classes de um projecto com referências cruzadas para as bibliotecas utilizadas.</para> + </listitem> + <listitem> + <para +><emphasis +>Suporte para internacionalização</emphasis +>, o que permite aos tradutores adicionarem a sua língua-alvo a um projecto com facilidade, incluindo o suporte para o &kbabel;.</para> + </listitem> + <listitem> + <para +>O suporte para a gestão de um projecto através de um de vários <emphasis +>sistemas de controlo de versões</emphasis +> (⪚, o &CVS;), fornecendo uma interface simples de utilizar para as funções mais necessárias.</para> + </listitem> + <listitem> + <para +>Uma interface para um <emphasis +>depurador</emphasis +> integrado.</para> + </listitem> + <listitem> + <para +>Um emulador da <emphasis +>consola de texto</emphasis +>.</para> + </listitem> + <listitem> + <para +><emphasis +>Realce de sintaxe</emphasis +> nos ficheiros de código.</para> + </listitem> + <listitem> + <para +><emphasis +>Completação automática de código</emphasis +> para as variáveis das classes, os métodos das mesmas, os argumentos das funções, entre outras coisas.</para> + </listitem> + <listitem> + <para +><emphasis +>Modelos para criar vários projectos</emphasis +> (módulos do &kcontrol;, 'applets' do &kicker; (painel), KIOSlaves, 'plugins' do &konqueror; e estilos do ecrã).</para> + </listitem> + <listitem> + <para +>Quatro <emphasis +>janelas de navegação em árvore</emphasis +> para mudar facilmente entre ficheiros de código, ficheiros de inclusão, classes e documentação, eliminando a necessidade de um gestor de ficheiros externo.</para> + </listitem> + <listitem> + <para +><emphasis +>Suporte para compilações cruzadas</emphasis +>, com a possibilidade de indicar vários compiladores diferentes, opções de compilação, arquitecturas-alvo, &etc;</para> + </listitem> + <listitem> + <para +>Suporte para <emphasis +>projectos do Qt/Embedded</emphasis +> (como o Zaurus e o iPAQ).</para> + </listitem> + <listitem> + <para +><emphasis +>Inclusão de vários programas</emphasis +> que necessite para programar, adicionando-os ao menu <guimenuitem +>Ferramentas</guimenuitem +>, de acordo com as suas necessidades individuais.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- unixdev-ide-tdevelop --> + +</sect1 +> <!-- unixdev-ide --> + +</appendix +> <!-- unixdev --> + |