diff options
Diffstat (limited to 'tde-i18n-it/docs/kdevelop')
122 files changed, 29321 insertions, 0 deletions
diff --git a/tde-i18n-it/docs/kdevelop/Makefile.am b/tde-i18n-it/docs/kdevelop/Makefile.am new file mode 100644 index 00000000000..5c1b8e5bc2d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = it +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-it/docs/kdevelop/Makefile.in b/tde-i18n-it/docs/kdevelop/Makefile.in new file mode 100644 index 00000000000..6e7f153c18c --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/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/kdevelop +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +kdeinitdir = @kdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = it +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kde_app_devel kdevelop kdearch +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @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/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.am b/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.am new file mode 100644 index 00000000000..5c1b8e5bc2d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = it +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.in b/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.in new file mode 100644 index 00000000000..9808a6d0a9f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kde_app_devel/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/kdevelop/kde_app_devel +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +kdeinitdir = @kdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = it +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kde_app_devel/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=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/kdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kde_app_devel/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-it/docs/kdevelop/kde_app_devel/index.cache.bz2 b/tde-i18n-it/docs/kdevelop/kde_app_devel/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..cf1a6bac187 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kde_app_devel/index.cache.bz2 diff --git a/tde-i18n-it/docs/kdevelop/kde_app_devel/index.docbook b/tde-i18n-it/docs/kdevelop/kde_app_devel/index.docbook new file mode 100644 index 00000000000..2328a4ad9b9 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kde_app_devel/index.docbook @@ -0,0 +1,1864 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kdevelop "<application +>KDevelop</application +>"> + <!ENTITY kappname "&kdevelop;"> + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Italian "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Manuale di programmazione di &kdevelop;</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 +>Il manuale utente per lo sviluppo di applicazioni C++ per l'ambiente desktop KDE con l'IDE &kdevelop;</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KDevelop</keyword> +<keyword +>IDE</keyword> +<keyword +>sviluppo</keyword> +<keyword +>programmazione</keyword> +</keywordset> + +</bookinfo> + +<chapter id="chapter1"> +<title +>Introduzione</title> +<para +>I sistemi Unix, che da un lato stanno diventando sempre più popolari anche ai principianti per i loro vantaggi di stabilità e funzionalità dall'altro deludono perché le applicazioni non hanno un aspetto uniforme e si comportano diversamente l'una dall'altra. Con KDE gli sviluppatori hanno uno strumento quasi perfetto per creare applicazioni di prima qualità per i sistemi desktop Unix. Quindi KDE viene sempre più scelto come base per la progettazione di applicazioni e gli sviluppatori vogliono sfruttare le possibilità offerte da questo sistema. </para> + +<sect1 id="c1s1"> +<title +>Cosa si dovrebbe già conoscere</title> +<para +>Per usare al meglio questo manuale di programmazione, si presuppone la conoscenza della programmazione con il linguaggio C/C++, in caso contrario si dovrebbe familiarizzare con questo linguaggio. Le informazioni sul linguaggio C++ sono disponibili in forma stampata nella propria libreria o in formato elettronico su Internet. Non è richiesta la conoscenza di progettazione di interfacce grafiche (GUI), siccome questo manuale illustra la progettazione di applicazioni KDE, che include sia una introduzione al toolkit Qt che l'uso delle librerie KDE e la progettazione delle interfacce utente. Inoltre si dovrebbe conoscere &kdevelop; leggendo il Manuale Utente di &kdevelop;, che contiene una descrizione delle funzionalità di questo IDE. </para> +</sect1> + +<sect1 id="c1s2"> +<title +>Informazioni sul manuale</title> +<para +>Questo manuale è stato scritto per fornire agli sviluppatori una introduzione alla progettazione di applicazioni KDE utilizzando l'ambiente di sviluppo integrato KDevelop. </para> +<para +>I capitoli seguenti contengono una introduzione alla creazione di progetti, forniscono una spiegazione del codice sorgente che viene generato e mostrano come arricchirlo con altri oggetti come barre degli strumenti, barre dei menu e viste. </para> +<para +>Viene discusso dettagliatamente la creazione di widget personalizzati e le impostazioni dei widget predefiniti. </para> +<para +>Infine vengono illustrati vari argomenti che completano la conoscenza della progettazione e aiutano a risolvere ulteriori problemi come l'aggiunta della documentazione API e la stesura dei manuali. </para> +<sect2 id="c1s2s1"> +<title +>Nel prossimo capitolo</title> +<para +>Verranno mostrati i concetti di base per l'utilizzo delle librerie Qt e KDE, spiegando come costruire le applicazioni illustrate nel tutorial incluso con Qt usando &kdevelop;. In questo modo i principianti vedranno subito i primi risultati e impareranno l'uso delle funzionalità più importanti di &kdevelop; </para> +</sect2> + +<sect2 id="c1s2s2"> +<title +>Nei capitoli seguenti</title> +<para +>Si imparerà: <itemizedlist> +<listitem +><para +>a creare una applicazione con la procedura guidata per le applicazioni</para +></listitem> +<listitem +><para +>a conoscere lo schema del progetto</para +></listitem> +<listitem +><para +>il significato del codice già creato</para +></listitem> +<listitem +><para +>a creare le proprie viste</para +></listitem> +<listitem +><para +>a espandere le funzionalità delle applicazioni con finestre di dialogo, barre dei menu e barre degli strumenti</para +></listitem> +<listitem +><para +>a rendere l'applicazione amichevole per l'utente con le funzioni di aiuto</para +></listitem> +<listitem +><para +>a scrivere la documentazione in linea</para +></listitem> +</itemizedlist> +</para> +</sect2> + +</sect1> + +<sect1 id="c1s3"> +<title +>Ulteriori informazioni</title> +<para +>Informazioni aggiuntive sulla programmazione con Qt/KDE sono disponibili attraverso diverse fonti: <itemizedlist> +<listitem +><para +>Programming with Qt di Matthias Kalle Dalheimer</para +></listitem> +<listitem +><para +><ulink url="www.kdevelop.org" +>Il manuale utente di KDevelop, fornito con l'IDE KDevelop</ulink +></para +></listitem> +<listitem +><para +><ulink url="doc.trolltech.com" +>La documentazione di riferimento delle librerie Qt</ulink +></para +></listitem> +<listitem +><para +><ulink url="developer.kde.org" +>Il sito dello sviluppatore KDE</ulink +></para +></listitem> +</itemizedlist> +</para> +<para +>Si può cercare aiuto sottoscrivendo varie mailing list, i cui indirizzi sono disponibili nei siti web menzionati e nei newsgroup usenet dedicati agli utenti di KDE e dei sistemi Unix, così come quelli dedicati ai linguaggi di programmazione C e C++. </para> +<para +>Per avere aiuto con KDevelop inviare le richieste alla mailing list all'indirizzo <email +>kdevelop@kdevelop.org</email +>. Ricordarsi che il gruppo di KDevelop non effettua supporto tecnico nel caso in cui la propria applicazione non funzioni a causa di errori di implementazione o errate impostazioni del sistema operativo, ma è dedicato allo sviluppo di strumenti che permettono di programmare applicazioni. Per questo motivo viene chiesto a tutti gli utenti di usufruire della mailing list solo per problemi riguardanti l'IDE stesso, per segnalazioni di bug e suggerimenti per migliorare le funzionalità dell'ambiente di sviluppo. </para> +</sect1> + +</chapter> + +<chapter id="chapter2"> +<title +>Le librerie KDE e Qt</title> +<para +>La società norvegese TrollTech (<ulink url="http://www.trolltech.com" +>http://www.trolltech.com</ulink +>) fornisce uno strumento per la programmazione (toolkit) di GUI chiamato Qt. GUI sta per "Graphical User Interface", quindi le applicazioni Qt appaiono con pulsanti, finestre, ecc. permettendo all'utente l'inserimento e la visualizzazione dei dati inseriti. Questo strumento è necessario agli sviluppatori di applicazioni grafiche funzionanti con il sistema X-Window di Unix, in quanto X non ha una propria interfaccia utente predefinita. Anche se sono disponibili altri strumenti per la creazione di interfacce grafiche, Qt offre alcune tecniche vantaggiose per rendere semplice la loro progettazione. Inoltre Qt è disponibile anche per la piattaforma Microsoft Windows, permettendo di sviluppare applicazioni per entrambe le piattaforme. </para> +<para +>Il gruppo KDE (<ulink url="http://www.kde.org" +>http://www.kde.org</ulink +>), si formò con l'obiettivo di rendere più facile l'uso dei sistemi Unix, e decise di utilizzare gli strumenti Qt per sviluppare un gestore di finestre per X-Window e una varietà di strumenti inclusi nei pacchetti di KDE. L'ambiente desktop KDE contiene come componenti principali il gestore di finestre kwm, il gestore dei file kfm ed il pannello di esecuzione kpanel, oltre a varie applicazioni e utility. Dopo l'uscita di KDE molti sviluppatori si interessarono a questo nuovo ambiente e a quello che poteva offrire. Le librerie KDE contengono i principali metodi e classi per rendere l'aspetto di tutte le applicazioni uniforme e coerente, in modo che l'utente ne tragga vantaggio dovendosi abituare ad un solo uso delle applicazioni, senza preoccuparsi dei pulsanti o delle finestre di dialogo. I programmi KDE si integrano con il desktop e se vengono usate tutte le funzionalità delle librerie possono interagire con il gestore file con il trascinamento, utilizzare la gestione della sessione e molto altro. </para> +<para +>Sia Qt che le librerie KDE sono implementate in C++, e le applicazioni che le utilizzano sono scritte principalmente in questo linguaggio. Nel prossimo capitolo verranno analizzate queste librerie per vedere cosa contengono e come vengono create le applicazioni Qt e KDE. </para> + +<sect1 id="c2s1"> +<title +>Il toolkit Qt</title> +<para +>Come detto la libreria Qt è un insieme di strumenti che offrono tutti gli elementi grafici usati per applicazioni GUI che sono necessari per la programmazione su X-Window. Oltre a questo gli strumenti offrono: <itemizedlist> +<listitem +><para +>Un completo insieme di classi e metodi pronti per l'uso anche per la programmazione di applicazioni non grafiche</para +></listitem> +<listitem +><para +>Una buona soluzione per l'interazione con l'utente tramite metodi virtuali e il meccanismo dei segnali e degli slot</para +></listitem> +<listitem +><para +>Un insieme di elementi GUI predefiniti chiamati "widget" che possono essere facilmente usati per creare elementi visibili</para +></listitem> +<listitem +><para +>Finestre che vengono usate frequentemente nelle applicazioni come finestre di avanzamento e finestre di dialogo per i file.</para +></listitem> +</itemizedlist> +</para> +<para +>La conoscenza delle classi Qt è molto importante, anche se si desidera programmare solo applicazioni KDE. Per capire i concetti di base sulla costruzione e compilazione di applicazioni GUI si esaminerà prima un programma Qt di esempio, e in seguito si estenderà l'esempio ad un programma KDE. </para> + +<sect2 id="c2s1s1"> +<title +>La prima applicazione Qt</title> +<para +>Normalmente i programmi in C++ devono contenere una funzione <function +>main()</function +>, che è il punto di partenza della loro esecuzione. Siccome devono essere visibili graficamente in finestre e devono interagire con l'utente, per prima cosa si deve sapere come visualizzarli. Come esempio si esaminerà il primo tutorial incluso nella documentazione di riferimento in linea di Qt e verranno spiegate le fasi di esecuzione e le modalità di visualizzazione dell'applicazione: <programlisting +>#include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton hello( "Hello world!", 0 ); +hello.resize( 100, 30 ); + +a.setMainWidget( &hello ); +hello.show(); +return a.exec(); +} +</programlisting> +</para> +<para +>Questa applicazione disegna soltanto una finestra contenente un pulsante che ha come testo "Hello world!". Come per tutte le applicazioni basate su Qt è necessario creare per prima cosa una istanza della classe <classname +>QApplication</classname +>, rappresentata dalla variabile a. </para> +<para +>Successivamente il programma crea una istanza della classe <classname +>QPushButton</classname +> chiamata hello, che rappresenta il pulsante. Il costruttore di hello riceve una stringa come parametro, contenente il testo visualizzato nel pulsante. </para> +<para +>Poi viene chiamato il metodo <methodname +>resize()</methodname +> del pulsante hello. Esso cambia la grandezza predefinita del widget (che in questo caso è <classname +>QPushButton</classname +>) che è stato creato, impostandolo con una lunghezza di 100 pixel e una altezza di 30 pixel. Infine viene chiamato il metodo setMainWidget() dell'oggetto a e il metodo show() di hello. La QApplication viene infine eseguita con l'istruzione <methodname +>a.exec()</methodname +> che farà entrare l'applicazione nel ciclo degli eventi principale (main event loop) dove attenderà fino alla restituzione di un valore intero al sistema operativo e terminerà la sua esecuzione. </para> +</sect2> + +<sect2 id="c2s1s2"> +<title +>La documentazione di riferimento per Qt</title> +<para +>Adesso si effettuerà un veloce esame della documentazione di riferimento delle librerie Qt. Avviare &kdevelop; e selezionare "Qt" dall'albero nella linguetta della documentazione. Il browser della documentazione si aprirà mostrando la pagina iniziale. Questa sarà il primo posto in cui ricercare informazioni su Qt, sulle sue classi e sulle funzioni disponibili. Il programma qui sopra è il primo della sezione dei tutorial. Per avere informazioni sulle classi <classname +>QApplication</classname +> e <classname +>QPushButton</classname +> selezionare "Lista delle classi in ordine alfabetico" e cercare il loro nome. Seguire il collegamento per visualizzare la documentazione relativa alla classe. </para> +<para +>In alternativa si può consultare la <ulink url="doc.trolltech.com" +>documentazione Qt</ulink +> di Trolltech. </para> +<para +>Per <classname +>QApplication</classname +> si potranno vedere il costruttore e tutti gli altri metodi forniti da questa classe. Se si segue il collegamento verranno mostrate ulteriori informazioni sull'uso e sul significato del metodo, che sono molto utili quando non si ricorda il corretto utilizzo o si vuole vedere un esempio. Questo vale anche per la documentazione delle librerie KDE, che utilizzano un sistema simile; perciò questo è tutto quello che si deve sapere sulla consultazione della documentazione di riferimento. </para> +<sect3 id="c2s1s2s1"> +<title +>Capire l'esempio</title> +<para +>Iniziando con <classname +>QApplication</classname +> si troveranno tutti i metodi utilizzati in questo primo esempio: <itemizedlist> +<listitem +><para +>il costruttore <methodname +>QApplication()</methodname +></para +></listitem> +<listitem +><para +>il metodo <methodname +>setMainWidget()</methodname +></para +></listitem> +<listitem +><para +>il metodo <methodname +>exec()</methodname +></para +></listitem> +</itemizedlist> +</para> +<para +>Capire perché vengono usati questi metodi è molto semplice: <orderedlist> +<listitem +><para +>Si crea una istanza della classe <classname +>QApplication</classname +> con il costruttore, così si possono usare gli elementi della GUI forniti da Qt</para +></listitem> +<listitem +><para +>Si crea un widget che sarà contenuto nella finestra del programma</para +></listitem> +<listitem +><para +>Si imposta il widget come il widget grafico principale per a</para +></listitem> +<listitem +><para +>Si esegue l'istanza di <classname +>QApplication</classname +> di nome a</para +></listitem> +</orderedlist +> +</para> +<para +>Il secondo oggetto del nostro programma è il pulsante, una istanza della classe <classname +>QPushButton</classname +>. Tra i due costruttori che creano una istanza del pulsante verrà usato il secondo: esso accetta un testo, che è l'etichetta del pulsante; in questo caso è la stringa "Hello World!". Dopo si chiama il metodo <methodname +>resize()</methodname +> per modificare la dimensione del pulsante - il pulsante deve essere più largo per rendere la stringa completamente visibile. </para> +<para +>Qual è lo scopo del metodo <methodname +>show()</methodname +>? Come la maggior parte dei widget, la classe <classname +>QPushButton</classname +> ha una singola ereditarietà e la sua classe base è <classname +>QButton</classname +>. Seguire il collegamento relativo alla classe <classname +>QButton</classname +>; verranno visualizzati molti altri widget che ereditano da <classname +>QPushButton</classname +>, che saranno illustrati in seguito per spiegare il meccanismo segnale/slot. Siccome il metodo <methodname +>show()</methodname +> non è elencato deve essere un metodo ereditato. La classe <classname +>QButton</classname +> eredita da <classname +>QWidget</classname +>. Seguendo nuovamente il collegamento saranno mostrati un gruppo di metodi forniti da quest'ultima classe, tra cui il metodo <methodname +>show()</methodname +>. Ora si può capire cosa accade nell'esempio: <orderedlist> +<listitem +><para +>Si crea una istanza di <classname +>QPushButton</classname +> usando il secondo costruttore in modo da impostare il testo del pulsante</para +></listitem> +<listitem +><para +>Si ridimensiona il widget in base al suo contenuto</para +></listitem> +<listitem +><para +>Si imposta il widget come quello principale dell'istanza a della classe <classname +>QApplication </classname +></para +></listitem> +<listitem +><para +>Si indica al widget di mostrarsi sul video chiamando <methodname +>show()</methodname +>, un metodo derivato dalla classe <classname +>QWidget</classname +></para +></listitem> +</orderedlist> +</para> +<para +>Dopo aver chiamato il metodo <methodname +>exec()</methodname +> l'applicazione è visibile all'utente e mostra una finestra con il pulsante contente "Hello World!". Nota: I programmi GUI hanno un comportamento piuttosto diverso dalle applicazioni procedurali: l'applicazione entra nel cosiddetto "ciclo principale degli eventi" ("main event loop"), dove attende le azioni dell'utente e reagisce ad esse. Anche nelle applicazioni Qt il programma deve essere in questo ciclo per poter gestire gli eventi. La prossima sezione spiega brevemente cosa offrono le librerie Qt per la gestione degli eventi generati dell'utente. </para> +<note +><para +>Per gli utenti più esperti: il pulsante non ha la dichiarazione del genitore nel costruttore, quindi è un widget top-level e viene eseguito in un ciclo di eventi locale che non ha bisogno di attendere il ciclo principale degli eventi. Vedere la documentazione della classe QWidget e la guida di riferimento della libreria KDE</para> +</note +> + +</sect3> +</sect2> + +<sect2 id="c2s1s3"> +<title +>Interazione con l'utente</title> +<para +>Dopo la lettura dell'ultima sezione si dovrebbe conoscere: <itemizedlist> +<listitem +><para +>Cosa fornisce la libreria Qt per le applicazioni GUI</para +></listitem> +<listitem +><para +>Come viene creato un programma che utilizza Qt e </para +></listitem> +<listitem +><para +>Dove e come trovare, tramite il browser della documentazione, le informazioni riguardanti le classi che si vogliono usare</para +></listitem> +</itemizedlist +> +</para> +<para +>Ora passiamo a dare "vita" all'applicazione elaborando gli eventi dell'utente. Generalmente l'utente ha due modi per interagire con un programma: il mouse e la tastiera. Per entrambi l'interfaccia grafica utente deve fornire metodi per intercettare le azioni e metodi che eseguono qualcosa in risposta a queste azioni. </para +> +<para +>Il sistema grafico invia tutti gli eventi di interazione all'applicazione corrispondente. La classe <classname +>QApplication</classname +> li invia alla finestra attiva come oggetti <classname +>QEvent</classname +> e i widget dovranno decidere cosa farne. Un widget riceve l'evento ed elabora <methodname +>QWidget::event(QEvent*)</methodname +>, il quale decide quale evento è stato eseguito e come reagire; <methodname +>event()</methodname +> è il gestore principale degli eventi. In seguito il metodo <methodname +>event()</methodname +> passa l'evento ai cosiddetti filtri di evento che determinano cosa è successo e cosa fare con l'evento. Se non esiste un filtro assegnato come responsabile per l'evento, saranno chiamati i gestori specializzati per quell'evento. Quindi possiamo decidere tra: <itemizedlist> +<listitem +><para +>Eventi di tastiera -- tasti 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 +>Tutti gli input dagli altri tasti:</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 +>Movimenti del mouse:</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 +>Azioni del pulsante del mouse</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 +>Eventi della finestra contenente il 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 +>Notare che tutte le funzioni degli eventi sono virtuali e protette; quindi si possono reimplementare gli eventi per i propri widget e specificare come essi debbano rispondere. <classname +>QWidget</classname +> contiene inoltre qualche altro metodo virtuale che può essere utile nei programmi. </para> +</sect2> +<sect2 id="c1s2s4"> +<title +>Interazione degli oggetti attraverso segnali e slot</title> +<para +>Si è giunti al più ovvio vantaggio degli strumenti Qt: il meccanismo dei segnali e degli slot. Questi offrono una comoda soluzione all'interazione tra oggetti, che in X-Window viene normalmente risolta con funzioni di callback. Siccome questa comunicazione richiede una programmazione rigorosa e a volte rende la creazione di interfacce grafiche molto difficile (come riportato della documentazione Qt e dimostrato in Programming with Qt di K.Dalheimer), Troll Tech ha inventato un nuovo sistema, dove gli oggetti emettono segnali che possono essere connessi ai metodi dichiarati come slot. Il programmatore C++ deve solamente conoscere alcune cose riguardo questo meccanismo: <itemizedlist> +<listitem +><para +>la dichiarazione di una classe che usa i segnali e gli slot deve contenere la macro Q_OBJECT all'inizio (senza il punto e virgola) e deve ereditare dalla classe <classname +>QObject</classname +> </para +></listitem> +<listitem +><para +>un segnale può essere emesso tramite la parola chiave emit, es: emit signal(parametri); dall'interno di qualunque membro di una classe che permette l'uso di segnali e slot </para +></listitem> + +<listitem +><para +>tutti i segnali utilizzati dalle classi che non sono ereditati devono essere aggiunti alla dichiarazione di classe in una sezione dedicata ai segnali </para +></listitem> +<listitem +><para +>tutti i metodi che possono essere connessi ad un segnale sono dichiarati in sezioni con la parola chiave aggiuntiva slot, es: public slot: all'interno della dichiarazione della classe </para +></listitem> +<listitem +><para +>il compilatore per i meta-oggetti moc deve essere eseguito sul file di intestazione per espandere le macro e produrre l'implementazione (che non è necessario conoscere). I file di output dal moc saranno successivamente compilati anche dal compilatore C++. </para +></listitem> +</itemizedlist> +</para> +<para +>Un'altra strada per utilizzare i segnali senza derivare da <classname +>QObject</classname +> è utilizzare la classe <classname +>QSignal</classname +> - vedere la documentazione di riferimento per ulteriori informazioni ed esempi di utilizzo. Nel seguito si presuppone che si stia derivando dalla classe <classname +>QObject</classname +>. </para> +<para +>In questo modo la classe può inviare ovunque segnali ed avere degli slot a cui collegare tali segnali. Utilizzando i segnali non ci si deve preoccupare di chi li riceverà - si deve solo emettere il segnale e connettere un qualunque slot che risponderà all'evento. Inoltre gli slot possono essere utilizzati come normali metodi durante l'implementazione. </para> +<para +>Per connettere un segnale ad uno slot si devono utilizzare i metodi <methodname +>connect()</methodname +> messi a disposizione dalla classe <classname +>QObject</classname +> o, quando disponibile, metodi speciali forniti dagli oggetti per impostare la connessione ad un determinato segnale. </para> + +<sect3 id="c1s2s4s1"> +<title +>Semplice utilizzo</title> +<para +>Per illustrare l'interazione tra gli oggetti si estenderà il primo esempio aggiungendo una semplice connessione: <programlisting +>#include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton hello( "Hello world!" , 0); +hello.resize( 100, 30 ); + +a.setMainWidget( &hello ); + +QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); + +hello.show(); +return a.exec(); +} +</programlisting> +</para> +<para +>Come si può vedere, l'unica modifica richiesta per dare maggiore interazione al pulsante consiste nell'utilizzare il metodo <methodname +>connect()</methodname +>: tutto quello che si deve aggiungere è <methodname +>connect(&hello,SIGNAL( clicked() ), &a,SLOT( quit() ))</methodname +>. Cosa significa? La dichiarazione del metodo <methodname +>connect()</methodname +> nella classe QObject è: </para> +<para +><methodname +>bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) </methodname +></para> +<para +>Si deve specificare come primo parametro un puntatore ad una istanza di <classname +>QObject</classname +> che trasmette il segnale, ovvero che può emettere questo segnale; poi si specifica il segnale che si vuole connettere. Gli ultimi due parametri sono l'oggetto ricevitore che fornisce uno slot, seguito dalla funzione membro che in effetti è lo slot che sarà eseguito dopo l'emissione del segnale. </para> +<para +>Utilizzando i segnali e gli slot gli oggetti dei proprio programma potranno interagire tra loro facilmente senza dipendere esplicitamente dal tipo dell'oggetto ricevente. Nei capitoli seguenti verrà spiegato come utilizzare in maniera produttiva questo meccanismo. Ulteriori informazioni sui segnali e gli slot possono essere trovati nella <ulink url="developer kde.org/documentation/library/libraryref.html" +>Guida di riferimento della libreria KDE</ulink +> e nella <ulink url="doc.trolltech.com" +>documentazione Qt di riferimento</ulink +>. </para> +</sect3> +</sect2> +</sect1> + +<sect1 id="c2s3"> +<title +>Cosa fornisce KDE</title> +<sect2 id="c2s3s1"> +<title +>Le librerie KDE 3.x</title> +<para +>Le principali librerie KDE che verranno utilizzate per la creazione di applicazioni KDE sono: <itemizedlist> +<listitem +><para +>la libreria kdecore, contenente tutte le classi degli elementi senza rappresentazione grafica che forniscono funzionalità all'applicazione </para +></listitem> +<listitem +><para +>la libreria kdeui, contenente gli elementi dell'interfaccia grafica come barre dei menu, barre degli strumenti, ecc. </para +></listitem> +<listitem +><para +>la libreria kfile, contenente le finestre di dialogo per la selezione di file </para +></listitem> +</itemizedlist> +</para> +<para +>Inoltre KDE offre le seguenti librerie, dedicate a soluzioni specifiche: <itemizedlist> +<listitem +><para +>la libreria kdefx, contenente pixmap, effetti grafici e KStyle, l'estensione di QStyle </para +></listitem> +<listitem +><para +>la libreria khtml, contenente il componente html di KDE </para +></listitem> +<listitem +><para +>la libreria kjs, contenente il supporto JavaScript di KDE </para +></listitem> +<listitem +><para +>la libreria kio, contenente l'accesso a basso livello ai file di rete </para +></listitem> +<listitem +><para +>la libreria kparts, contenente il supporto per il riutilizzo delle applicazioni estendibili ed incapsulabili </para +></listitem> +</itemizedlist> +</para> +<para +>Successivamente si vedrà cosa è necessario per trasformare la prima applicazione Qt in una KDE. </para> +</sect2> +<sect2 id="c2s3s2"> +<title +>Esempio di application KDE</title> +<para +>Scrivere una applicazione KDE non è molto più difficile che scrivere una applicazione Qt. Per usare le funzionalità di KDE si devono solo usare alcune altre classi e nient'altro. Come esempio verra discussa la versione modificata del precedente esempio Qt: <programlisting +>#include <kapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +KApplication a( argc, argv ); + +QPushButton hello( "Hello world!", 0 ); +hello.resize( 100, 30 ); + +a.setTopWidget( &hello ); + +QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); + +hello.show(); +return a.exec(); +} +</programlisting> +</para +> +<para +>Per prima cosa è stata cambiata la classe <classname +>QApplication</classname +> con la classe <classname +>KApplication</classname +>. Inoltre è stato cambiato il metodo <methodname +>setMainWidget()</methodname +> usato precedentemente con il metodo <methodname +>setTopWidget</methodname +>, che viene usato da <classname +>KApplication</classname +> per impostare il widget principale. Ecco qua! La prima applicazione KDE è pronta - ora si deve solo indicare al compilatore il percorso di inclusione di KDE e al linker di collegare la libreria kdecode con l'opzione -lkdecore. </para> +<para +>Ora che si conosce cosa fornisce la funzione <function +>main()</function +>, come rendere visibile l'applicazione e come gli oggetti interagiscono con l'utente, nel prossimo capitolo verrà creata una applicazione con &kdevelop;. Potremo quindi applicare e verificare quanto detto precedentemente. </para> +<para +>Prima di proseguire si dovrebbe consultare la documentazione di riferimento di Qt, in particolare le classi <classname +> QApplication</classname +>, <classname +>QWidget</classname +> e <classname +>QObject</classname +>, e la documentazione della libreria kdecore per la classe <classname +>KApplication </classname +>. Il <ulink url="developer.kde.org/documentation/library/libraryref.html" +>manuale di riferimento delle librerie KDE</ulink +> include una descrizione completa sulle chiamate ai costruttori delle classi <classname +>QApplication</classname +> e <classname +> KApplication</classname +> e l'elaborazione degli argomenti a linea di comando. </para> +</sect2> +</sect1> + +</chapter> + +<chapter id="chapter3"> +<title +>Creare una nuova applicazione</title> + +<sect1 id="c3s1"> +<title +>La procedura guidata per le applicazioni</title> +<para +>La procedura guidata per le applicazioni permette di iniziare a lavorare ad un nuovo progetto con &kdevelop;. Tutti i progetti vengono prima creati dalla procedura guidata, e in seguito si possono compilare e ampliare. A seconda dei propri obiettivi si può scegliere il tipo di progetto: <itemizedlist> +<listitem +><para +>KDE Application Framework: include la struttura di una applicazione KDE completa </para +></listitem> +<listitem +><para +>QMake Project: crea una di applicazione basata sul sistema di configurazione qmake di Trolltech </para +></listitem> +<listitem +><para +>Simple hello world program: crea un programma C++ testuale senza il supporto GUI </para +></listitem> +<listitem +><para +>Molti altri schemi di programma </para +></listitem> +</itemizedlist> +</para> +<para +>In questo capitolo verrà spiegato come attivare la procedura guidata per le applicazioni e come generare una applicazione KDE. Il primo passo della trattazione sarà la creazione di un semplice progetto. Per tutti gli altri tipi di progetto il metodo da usare è lo stesso, ma il numero di opzioni potrebbe essere minore. </para> +</sect1> + +<sect1 id="c3s2"> +<title +>Avviare la procedura guidata per le applicazioni e generare il progetto</title> +<sect2 id="c3s2s1"> +<title +>Avviare la procedura guidata per le applicazioni</title> +<para +>Per iniziare, avviare &kdevelop;. Dal menu Progetto selezionare Nuovo Progetto. Verrà avviata la procedura guidata per le applicazioni e nella prima pagina sarà visualizzato un albero di selezione contenente i tipi di progetti disponibili. Scegliere il sottoalbero C++, KDE, quindi Application Framework. </para> +<para +>Per questo progetto di esempio sarà creata l'applicazione KScribble. Inserirlo come nome dell'applicazione e modificare le eventuali altre informazioni nella parte bassa dello schermo in base alle proprie preferenze. Selezionare Successivo. <screenshot +><mediaobject +><imageobject> +<imagedata fileref="appwizard.png" format="PNG"/> +</imageobject +><textobject +><phrase +>Procedura guidata per le applicazioni</phrase +></textobject> +</mediaobject +></screenshot> +</para> +</sect2> +<sect2 id="c3s2s2"> +<title +>Informazioni sul controllo versione</title> +<para +>Su questa schermata si può decidere se il progetto utilizzerà un sistema per il controllo delle versioni come CVS. Per questo progetto di esempio non si utilizzerà il controllo dei sorgenti, quindi assicurarsi che la selezione sia Nessuno e selezionare Successivo. </para> +</sect2> +<sect2 id="c3s2s3"> +<title +>Modelli dei sorgenti e delle intestazioni</title> +<para +>Le due pagine successive mostrano intestazioni di esempio che saranno aggiunte all'inizio dei file di codice e di intestazione creati utilizzando &kdevelop;. Per il momento lasciare queste intestazioni come predefinite e selezionare Prossimo, quindi Fine. Se questo pulsante non è attivo significa che non sono state impostate correttamente tutte le opzioni. Usare il pulsante Precedente per tornare ai menu precedenti e correggere gli errori. </para> +</sect2> +<sect2 id="c3s2s4"> +<title +>Terminare</title> +<para +>Dopo aver terminato, la procedura guidata per le applicazioni dovrebbe chiudersi e comparirà una finestra che visualizza alcune informazioni riguardanti le operazioni effettuate da &kdevelop;. Al termine di tutte le procedure si dovrebbe vedere il messaggio *** Success ***. Questo significa che il framework dell'applicazione è stato creato correttamente. </para> +</sect2> +</sect1> + +<sect1 id="c3s3"> +<title +>La prima compilazione</title> +<para +>Dopo la generazione del progetto, per prima cosa si osserveranno i sorgenti per avere una comprensione generale del funzionamento dell'applicazione, in modo da sapere cosa e dove effettuare delle modifiche. </para> +<para +>Questo capitolo presume che si conosca la navigazione base di &kdevelop;. Se necessario consultare il manuale utente di KDevelop. </para> +<para +>Il gestore Automake visualizza i file di progetto come segue: <screenshot +><mediaobject +><imageobject> +<imagedata fileref="kscribblefiles.png" format="PNG"/> +</imageobject +><textobject +><phrase +>I file nel progetto</phrase +></textobject> +</mediaobject +></screenshot> +</para> +<para +>Prima di osservare i sorgenti, compilare ed eseguire l'applicazione. Per farlo selezionare Compila Progetto dal menu Compila o premere F8. Apparirà una finestra di output dove verranno visualizzati vari messaggi durante la fase di compilazione. <programlisting +>1 cd /home/caleb/kscribble && WANT_AUTOCONF_2_5=1 WANT_AUTOMAKE_1_6=1 gmake k +2 gmake all-recursive +3 gmake[1]: Entering directory `/home/caleb/kscribble' +4 Making all in doc +5 gmake[2]: Entering directory `/home/caleb/kscribble/doc' +6 Making all in . +7 gmake[3]: Entering directory `/home/caleb/kscribble/doc' +8 gmake[3]: Nothing to be done for `all-am'. +9 gmake[3]: Leaving directory `/home/caleb/kscribble/doc' +10 Making all in en +11 gmake[3]: Entering directory `/home/caleb/kscribble/doc/en' +12 /usr/local/kde3/bin/meinproc --check --cache index.cache.bz2 /home/caleb/kscribble/doc/en/index.docbook +13 gmake[3]: Leaving directory `/home/caleb/kscribble/doc/en' +14 gmake[2]: Leaving directory `/home/caleb/kscribble/doc' +15 Making all in po +16 gmake[2]: Entering directory `/home/caleb/kscribble/po' +17 gmake[2]: Nothing to be done for `all'. +18 gmake[2]: Leaving directory `/home/caleb/kscribble/po' +19 Making all in src +20 gmake[2]: Entering directory `/home/caleb/kscribble/src' +21 source='main.cpp' object='main.o' libtool=no \ +22 depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' \ +23 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +24 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings + -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new + -c -o main.o `test -f 'main.cpp' || echo '/home/caleb/kscribble/src/'`main.cpp +25 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribble.h -o kscribble.moc +26 source='kscribble.cpp' object='kscribble.o' libtool=no \ +27 depfile='.deps/kscribble.Po' tmpdepfile='.deps/kscribble.TPo' \ +28 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +29 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings + -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new + -c -o kscribble.o `test -f 'kscribble.cpp' || echo '/home/caleb/kscribble/src/'`kscribble.cpp +30 kscribble.cpp: In member function `void KScribble::setupActions()' +31 kscribble.cpp:107: warning: unused variable `KAction*custom' +32 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribbleview.h -o kscribbleview.moc +33 source='kscribbleview.cpp' object='kscribbleview.o' libtool=no \ +34 depfile='.deps/kscribbleview.Po' tmpdepfile='.deps/kscribbleview.TPo' \ +35 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +36 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi + -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -c + -o kscribbleview.o `test -f 'kscribbleview.cpp' || echo '/home/caleb/kscribble/src/'`kscribbleview.cpp +37 kscribbleview.cpp: In member function `void KScribbleView::print(QPainter*, +38 int, int)': +39 kscribbleview.cpp:79: warning: unused parameter `QPainter*p' +40 kscribbleview.cpp:79: warning: unused parameter `int height' +41 kscribbleview.cpp:79: warning: unused parameter `int width' +42 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/pref.h -o pref.moc +43 source='pref.cpp' object='pref.o' libtool=no \ +44 depfile='.deps/pref.Po' tmpdepfile='.deps/pref.TPo' \ +45 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +46 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings + -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new + -c -o pref.o `test -f 'pref.cpp' || echo '/home/caleb/kscribble/src/'`pref.cpp +47 /usr/local/kde3/bin/dcopidl /home/caleb/kscribble/src/kscribbleiface.h +> kscribbleiface.kidl || + ( rm -f kscribbleiface.kidl ; /bin/false ) +48 /usr/local/kde3/bin/dcopidl2cpp --c++-suffix cpp --no-signals --no-stub kscribbleiface.kidl +49 source='kscribbleiface_skel.cpp' object='kscribbleiface_skel.o' libtool=no \ +50 depfile='.deps/kscribbleiface_skel.Po' tmpdepfile='.deps/kscribbleiface_skel.TPo' \ +51 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +52 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings + -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new + -c -o kscribbleiface_skel.o `test -f 'kscribbleiface_skel.cpp' || + echo '/home/caleb/kscribble/src/'`kscribbleiface_skel.cpp +53 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall + -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 + -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble -R + /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib + -L/usr/local/kde3/lib main.o kscribble.o kscribbleview.o pref.o kscribbleiface_skel.o -lkio +54 source='kscribble_client.cpp' object='kscribble_client.o' libtool=no \ +55 depfile='.deps/kscribble_client.Po' tmpdepfile='.deps/kscribble_client.TPo' \ +56 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \ +57 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include + -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor + -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings + -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new + -c -o kscribble_client.o `test -f 'kscribble_client.cpp' || echo + '/home/caleb/kscribble/src/'`kscribble_client.cpp +58 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef + -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 + -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble_client -R + /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib + -L/usr/local/kde3/lib kscribble_client.o -lkdecore +59 gmake[2]: Leaving directory `/home/caleb/kscribble/src' +60 gmake[2]: Entering directory `/home/caleb/kscribble' +61 gmake[2]: Nothing to be done for `all-am'. +62 gmake[2]: Leaving directory `/home/caleb/kscribble' +63 gmake[1]: Leaving directory `/home/caleb/kscribble' +64 *** Success *** +</programlisting> +</para> +<para +>Come si può notare sono stati aggiunti i numeri di riga, che non appaiono nella finestra di output, utili per descrivere quello che succede durante la compilazione. Prima di tutto si può osservare che gmake funziona ricorsivamente. Questo significa che esso parte dalla directory nella quale è stato chiamato e prosegue all'interno di tutte le sottodirectory, una per volta, quindi ritorna alla directory di partenza, la elabora e termina. </para> +<para +>La prima linea interessante è la 24. Notare che g++, il compilatore C++, viene chiamato da make per compilare il primo file di codice sorgente del progetto - in questo caso main.cpp. Il compilatore g++ usa molte altre opzioni, alcune delle quali sono predefinite mentre altre possono essere configurate con &kdevelop;. </para> +<para +>Prima che venga compilato il prossimo file (kscribble.cpp, linea 29), il moc (compilatore dei meta oggetti) viene chiamato per kscribble.h (linea 25). Le classi di KScribble utilizzano i segnali e gli slot, quindi il moc deve espandere la macro Q_OBJECT. Il file risultante, kscribble.moc, verrà utilizzato da kscribble.cpp tramite la direttiva #include all'interno del file. </para> +</sect1> + +<sect1 id="c3s4"> +<title +>Sorgenti della struttura del progetto</title> +<para +>Per capire come funziona un'applicazione KDE, si esamineranno i sorgenti della struttura del progetto creati dalla procedura guidata. Come detto in precedenza è presente un insieme di file sorgente e header che costituiscono il codice sorgente iniziale dell'applicazione e la rendono pronta ad essere eseguita. Il modo più semplice per illustrare il codice consiste nel seguire l'implementazione linea per linea man mano che viene elaborata fino a quando entra nel ciclo degli eventi principale ed è pronta a ricevere l'input dell'utente. Dopo si esamineranno le funzionalità che permettono l'interazione dell'utente e altre caratteristiche. Questo probabilmente è il miglior modo per spiegare il framework e, siccome è simile a quasi tutte le applicazioni KDE, permette di capire il codice sorgente di altri progetti; inoltre si imparerà a modificare il codice per far funzionare l'applicazione nel modo in cui era stata progettata. </para> + +<sect2 id="c3s4s1"> +<title +>La funzione main()</title> +<para +>L'applicazione inizia la sua esecuzione entrando nella funzione <function +>main()</function +>, quindi si partirà da qui ad esaminare il codice. La funzione <function +>main()</function +> di KScribble è implementata in main.cpp e può essere trovata utilizzando il browser delle classi selezionando la cartella "Funzioni Globali". <programlisting +>1 int main(int argc, char **argv) +2 { +3 KAboutData about("kscribble", I18N_NOOP("KScribble"), version, description, +4 KAboutData::License_GPL, "(C) 2002 Your Name", 0, 0, "you@you.com"); +5 about.addAuthor( "Your Name", 0, "you@you.com" ); +6 KCmdLineArgs::init(argc, argv, &about); +7 KCmdLineArgs::addCmdLineOptions(options); +8 KApplication app; +9 +10 // register ourselves as a dcop client +11 app.dcopClient()->registerAs(app.name(), false); +12 +13 // see if we are starting with session management +14 if (app.isRestored()) +15 RESTORE(KScribble) +16 else +17 { +18 // no session.. just start up normally +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 +>Viene per prima cosa creato il solito oggetto <classname +>KApplication</classname +>, ma sono stati aggiunti alcuni metodi che impostano le informazioni sul programma sull'autore per questa applicazione. </para> +</sect2> +<sect2> +<title +>Avvio Applicazione Utente</title> + +<para +>... (non ancora scritto)</para> + +</sect2> +<sect2> +<title +>Il costruttore</title> +<para +>Si esaminerà il costruttore per vedere come viene chiamata questa istanza <programlisting +>1 KScribble::KScribble() +2 : KMainWindow( 0, "KScribble" ), +3 m_view(new KScribbleView(this)), +4 m_printer(0) +5 { +6 // accept dnd +7 setAcceptDrops(true); +8 +9 // tell the KMainWindow that this is indeed the main widget +10 setCentralWidget(m_view); +11 +12 // then, setup our actions +13 setupActions(); +14 +15 // and a status bar +16 statusBar()->show(); +17 +18 // allow the view to change the statusbar and caption +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 +>Notare che <classname +>KScribble</classname +> deriva da <classname +>KMainWindow</classname +> - usata frequentemente come classe base per le applicazioni KDE. Viene inizializzata una classe chiamata <classname +>KScribbleView </classname +> come widget centrale, viene creata una classe <classname +>KStatusBar</classname +> tramite il metodo <methodname +>statusBar()</methodname +> (linea 16) e vengono connessi alcuni segnali e slot. </para> +</sect2> +</sect1> +</chapter> + + +<chapter id="chapter4"> +<title +>Progettare la vista dell'applicazione</title> +<sect1 id="c4s1"> +<title +>Introduzione</title> +<para +>Nello sviluppo di un'applicazione con interfaccia grafica il lavoro più oneroso consiste nel creare la cosiddetta "vista" dell'applicazione. In generale una vista è un widget che visualizza i dati di un documento e fornisce metodi per manipolare il suo contenuto. Questo può essere fatto dall'utente per mezzo degli eventi emessi tramite tastiera o il mouse; le operazioni più complesse sono spesso elaborate dalle barre degli strumenti e dalle barre dei menu, le quali interagiscono con le viste e con il documento. La barra di stato fornisce informazioni sullo stato del documento, della vista e dell'applicazione. Come esempio verrà esaminato come funziona un editor e dove si possono trovare i vari componenti. </para> +<para +>In generale un editor dovrebbe fornire una interfaccia per la vista e/o cambiare i contenuti di un documento di testo per l'utente. Se si avvia Kate si vedrà l'interfaccia visuale come segue: <itemizedlist> +<listitem +><para +>la barra dei menu: fornisce operazioni complesse come apertura, salvataggio e chiusura dei file ed uscita dall'applicazione. </para +></listitem> +<listitem +><para +>la barra degli strumenti: contiene icone che permettono un veloce accesso alle funzioni più importanti, </para +></listitem> +<listitem +><para +>la barra di stato: mostra la posizione del cursore visualizzando l'attuale numero di riga e di colonna, </para +></listitem> +<listitem +><para +>La vista al centro della finestra, che visualizza un documento e contiene un cursore connesso alla tastiera ed al mouse per operare sui dati. </para +></listitem> +</itemizedlist> +</para> +<para +>É semplice capire che una vista è il componente più specifico di una applicazione e la sua progettazione influenza l'usabilità dell'applicazione. Questo significa che nelle prime fasi dello sviluppo si determinano lo scopo dell'applicazione e il tipo di vista più corrispondente alle necessità dell'utente che dovrà impiegare uno sforzo minimo per gestire l'interfaccia grafica. </para> +<para +>Per la modifica dei testo e la visualizzazione di file HTML, le viste sono fornite dalle librerie Qt e KDE; nella prossima sezione verranno discussi alcuni aspetti di questi widget di alto livello, tuttavia per moltissime applicazioni devono essere progettati ed implementati nuovi widget. Questo è ciò che rende un programmatore anche un progettista e dove viene richiesta la sua creatività. Prima di tutto ci si deve concentrare sulla intuitività. Ricordarsi molti utenti non accetteranno una applicazione che non sia: <itemizedlist> +<listitem +><para +>graficamente gradevole </para +></listitem> +<listitem +><para +>con molte funzionalità </para +></listitem> +<listitem +><para +>facile da gestire </para +></listitem> +<listitem +><para +>veloce da imparare </para +></listitem> +</itemizedlist> +</para> +<para +>Non c'è bisogno di dire che la stabilità è l'obiettivo principale della progettazione. Nessuno può evitare gli errori, ma si può almeno effettuare una progettazione saggia e orientata agli oggetti. Il linguaggio C++ rende la programmazione un piacere se si sfruttano le sue capacità come ereditarietà, incapsulamento e riuso del codice già esistente. </para> +<para +>Quando si crea un progetto KDE o Qt, si dovrà avere sempre una vista che deriva da QWidget per ereditarietà diretta o perché il widget di libreria che si vuole usare deriva da QWidget. Quindi la procedura guidata per l'applicazioni crea una vista che è istanza di una classe di nome NomeApplicazioneView che deriva da QWidget. </para> +<para +>Questo capitolo descrive come usare i widget delle librerie per creare viste di applicazioni KDE o Qt che sono generate con &kdevelop;, in seguito si esamineranno le librerie e i tipi di viste disponibili. </para> +</sect1> +<sect1 id="c4s2"> +<title +>Usare le viste delle librerie</title> +<para +>Quando è stata impostata la progettazione dell'applicazione, si dovrebbe cercare del codice già esistente che può rendere lo sviluppo molto più facile. Si può controllare se esiste un widget che può essere usato come vista o almeno come parte di essa, sia usandolo direttamente che derivandolo. Le librerie KDE e Qt contengono un insieme di widget che possono essere usati a questo scopo in due modi: <orderedlist> +<listitem +><para +>Rimuovendo la nuova classe per la vista, creare una istanza di un widget di libreria e poi impostare quest'ultimo come vista, </para +></listitem> +<listitem +><para +>Impostando il widget di libreria che si vuole usare come classe base della vista </para +></listitem> +</orderedlist> +</para> +<para +>In entrambi i casi, è importante sapere che se l'applicazione non è collegata con la libreria che contiene il widget non riuscirà ad essere compilata. Dopo aver deciso di usare un certo widget, cercare la libreria da collegare, quindi aprire "Progetto"->"Opzioni" dalla barra dei menu di &kdevelop;, andare nella linguetta "Opzioni del linker" e cercare le caselle che indicano le librerie che sono attualmente utilizzate. Se la libreria del componente visuale è già selezionata, lasciare inalterate le opzioni di progetto e iniziare a fare i cambiamenti nel progetto. In caso contrario, se le opzioni del linker permettono di aggiungere la libreria attraverso una casella di selezione, selezionala e premere "OK" per chiudere la finestra di dialogo delle opzioni. In tutti gli altri casi, aggiungere la libreria nella casella di testo in basso con l'opzione -l. Per le librerie che devono essere trovate dallo script configure prima che vengano generati i Makefile, aggiungere la macro corrispondente alla libreria al file configure.in posizionato nella cartella radice dell'applicazione e aggiungere la macro nella casella di testo. Ricordarsi di selezionare prima "Compila"->"Autoconf e automake" e "Compila"->"Configura" in modo che i Makefile contengano la corretta espansione della macro per la libreria. </para> +<para +>Inoltre, se i file di inclusione per la libreria da aggiungere non sono nel percorso corrente (che può essere visualizzato tramite l'opzione -I della finestra di output di "Make"), si deve aggiungere il percorso alla finestra di dialogo delle opzioni del progetto nella pagina "Opzioni di Compilazione" con l'opzione -I o con la macro automake corrispondente nella casella di testo "Informazioni Aggiuntive". </para> +<sect2 id="c4s3s1"> +<title +>Viste Qt</title> +<para +>Nella prima pagina della documentazione Qt in linea è presente un collegamento alle "schermate dei widget" dove si può osservare l'aspetto dei widget. Questi widget sono pronti per essere utilizzati direttamente o combinati assieme formando widget più complessi per creare viste di applicazioni o finestre di dialogo. In seguito saranno discussi alcuni di essi che sono utilizzabili per creare viste di applicazioni, ma ricordarsi che le librerie KDE contengono widget alternativi che servono agli stessi scopi; questi verranno esaminati nella prossima sezione. </para> +<para +>Ecco una serie di suggerimenti per scegliere il componente Qt da usare per un particolare scopo <orderedlist> +<listitem +><para +>Se l'area di vista non è abbastanza grande per visualizzare tutti i dati, l'utente deve poter scorrere il documento con le barre poste a lato e in basso. Qt fornisce la classe <classname +>QScrollView</classname +> che offre un'area figlio scorrevole. Si può derivare il proprio widget da questa classe o utilizzare una sua istanza. </para +></listitem +> +<listitem +><para +>per creare uno ScrollView, derivare il widget per la vista da <classname +>QWidget</classname +> e aggiungere una barra di scorrimento orizzontale ed una verticale <classname +>QScrollBars</classname +>. (Questo viene fatto dal widget KHTMLViews di KDE.) </para +></listitem +> +<listitem +><para +>Per l'elaborazione del testo, usare <classname +>QTextEdit</classname +>. Questa classe include un widget per il testo completo che dispone delle funzionalità per tagliare, copiare e incollare testo ed è gestito da barre di scorrimento. </para +></listitem +> +<listitem +><para +>Usare la classe <classname +>QTable</classname +> per visualizzare i dati organizzati in una tabella. Siccome questa classe è gestita da barre di scorrimento, costituisce una buona soluzione per le applicazioni di calcolo con tabelle. </para +></listitem +> +<listitem +><para +>Per visualizzare due widget diversi o due istanze contemporaneamente,utilizzare la classe <classname +>QSplitter</classname +>. Questa permette di affiancare le viste verticalmente o orizzontalmente. Per osservare questo elemento grafico si può prendere come esempio KMail: la vista principale è separata da un divisore verticale, e la finestra a destra è a sua volta separata orizzontalmente. </para +></listitem +> +<listitem +><para +><classname +>QListView</classname +> visualizza informazioni in una lista e in un albero. Questo è utile per gli alberi file o per altre informazioni organizzate in maniera gerarchica con le quali si vuole interagire. </para +></listitem +> +</orderedlist> +</para> +<para +>Si può vedere come Qt fornisca un ampio insieme di widget pronti da usare che, nel caso corrispondano alle proprie esigenze, eviteranno la ricerca di nuove soluzioni. Quando si usano dei widget standard gli utenti sanno già come utilizzarli e possono concentrarsi solo sui dati visualizzati. </para> +</sect2> +<sect2 id="c4s3s2"> +<title +>Viste KDE</title> +<para +>Le librerie KDE sono state inventate per sviluppare facilmente applicazioni per l'ambiente desktop KDE e hanno più funzionalità di quelle fornite da Qt.La libreria kdeui contiene: <orderedlist> +<listitem +><para +>KListView: una versione più potente di <classname +>QListView</classname +> </para +></listitem> +<listitem +><para +>KIconView: una vista grafica di file ad icona </para +></listitem> +</orderedlist> +</para> +<para +>La libreria khtml, d'altro canto, offre un widget per la completa interpretazione del linguaggio HTML già pronto all'uso. Non si deve implementare lo scorrimento perché è già supportato. Si può integrare come un widget che visualizza un'anteprima per un editor HTML e viene usato da applicazioni come Konqueror per visualizzare i file HTML. </para> +</sect2> +</sect1> +<sect1 id="c4s4"> +<title +>Creare le proprie viste</title> +<para +>Non ancora scritto </para> +</sect1> +</chapter> + +<chapter id="chapter5"> +<title +>Configurare le barre dei menu e le barre degli strumenti</title> +<sect1 id="c5s1"> +<title +>Introduzione</title> +<para +>Le barre dei menu e le barre degli strumenti sono tra le più importanti parti di un'applicazione per lavorare con un documento. Come regola generale si dovrebbero rendere disponibili tutte le funzionalità dell'applicazione attraverso la barra dei menu. </para> +<para +>Inoltre, una applicazione può contenere una sola barra dei menu, ma diverse barre degli strumenti. D'altro lato, queste ultime dovrebbero visualizzare solo i comandi usati frequentemente attraverso icone o caselle di scelta multipla. </para> +</sect1> +<sect1 id="c5s2"> +<title +>Come funziona?</title> +<para +>L'applicazione deriva dalla classe <classname +>KMainWindow</classname +>, che automaticamente crea una barra dei menu e una barra degli strumenti. Nel metodo <methodname +>KScribble::setupActions()</methodname +> c'è una chiamata al metodo <methodname +>KMainWindow::createGUI()</methodname +>, che carica un file di risorse, in questo caso kscribbleui.rc, per inizializzare i menu durante l'avvio. Notare che kscribbleur.rc è elencato all'interno dei file di progetto del gestore Automake. Il contenuto del file è questo: <programlisting +>1 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> +2 <kpartgui name="kscribble" version="1"> +3 <MenuBar> +4 <Menu name="custom" +><text +>C&ustom</text> +5 <Action name="custom_action" /> +6 </Menu> +7 </MenuBar> +8 </kpartgui +> +</programlisting> +</para> +<para +>Spiegazione... </para> +<para +>Un altro modo per modificare i contenuti dei menu e delle barre degli strumenti consiste nel manipolarli direttamente attraverso i metodi forniti dalle loro classi. Per esempio, il metodo <methodname +>menuBar()</methodname +> restituisce il widget <classname +>KMenuBar</classname +> che rappresenta la barra dei menu del programma. Consultando la documentazione della classe <classname +>KMenuBar</classname +> e della sua classe base <classname +>QMenuBar</classname +>, si troveranno molti metodi <methodname +>insertItem()</methodname +> che permettono di aggiungere elementi alla barra dei menu. </para> +<para +>Anche i metodi <methodname +>statusBar()</methodname +> e <methodname +>toolBar()</methodname +> della classe <classname +>KMainWindow</classname +> forniranno i widget appropriati. </para> +</sect1> +<sect1 id="c5s3"> +<title +>Configurazione delle scorciatoie da tastiera</title> +<para +>Le scorciatoie da tastiera costituiscono un tocco molto professionale che si dovrebbe sempre aggiungere alle applicazioni. Queste sono prevalentemente utilizzate da utenti esperti che vogliono lavorare velocemente con le loro applicazioni e vogliono imparare queste scorciatoie. Per questo le librerie KDE forniscono la classe <classname +>KAction</classname +>, che permette di utilizzare tasti scorciatoia e l'accesso alla configurazione generale degli acceleratori da tastiera standard. </para> +<para +>Normalmente le applicazioni generate da &kdevelop; utilizzano solamente gli acceleratori predefiniti di tastiera come F1 per accedere alla documentazione di help in linea, CRTL+N per Nuovo File, ecc. </para> +<para +>Se l'applicazione contiene molti tasti acceleratori, essi dovrebbero essere configurabili da un menu di opzioni, che potrebbe essere combinato con altre configurazione dell'applicazione in un QWidger o essere separato. La libreria KDE fornisce la classe <classname +>KKeyChooser</classname +> da usare nelle finestre di dialogo, mentre la classe <classname +>KKeyDialog</classname +> è una finestra di dialogo per la configurazione dei tasti pronta all'uso. </para> + +</sect1> +</chapter> + +<!-- +<chapter id="chapter6"> +<title +>Other Features</title> +</chapter> + +<chapter id="chapter7"> +<title +>Printing Support</title> +</chapter> +--> +<chapter id="chapter8"> +<title +>Funzioni di Aiuto</title> +<sect1 id="c8s1"> +<title +>Introduzione</title> +<para +>Una parte molto importante del processo di sviluppo consiste nel fornire la funzionalità di aiuto all'utente quando possibile. Molti sviluppatori tendono a rimandare questo aspetto, ma si deve tener presente che un normale utente non è necessariamente un esperto di Unix. Egli potrebbe provenire dal lato oscuro del software che fornisce tutti gli aiuti necessari all'utente per lavorare con una applicazione senza neppure fargli aprire un manuale. Per questo le librerie KDE e Qt forniscono tutti gli strumenti che rendono una applicazione professionale agli occhi del normale utente attraverso funzioni di aiuto pronte da usare. Esse sono:</para> +<itemizedlist> +<listitem +><para +>tooltip</para +></listitem> +<listitem +><para +>barra di stato</para +></listitem> +<listitem +><para +>pulsante Che cos'è?</para +></listitem> +</itemizedlist> +<para +>Premendo il tasto standard di aiuto F1 l'applicazione dovrebbe visualizzare un manuale in formato HTML. Questo sistema di aiuto viene supportato direttamente dalla classe <classname +>KMainWindow</classname +>, benché l'autore debba scrivere il contenuto. </para> +<para +>Siccome sia &kdevelop; che l'applicazione KDE generata dalla procedura guidata supportano tutti i vari tipi di aiuto, questo capitolo spiegherà come e dove aggiungere le funzionalità di aiuto. </para> +<para +>Durante lo sviluppo dell'applicazione si dovrebbe mantenere una certa consistenza in quello che viene fatto, effettuando le fasi necessarie direttamente durante lo sviluppo del codice. In questo modo si evita di dover esaminare nuovamente il codice e cercare di capire cosa sta facendo l'applicazione o caso si intendeva fare in una certa parte del codice. </para> +</sect1> + +<sect1 id="c8s2"> +<title +>ToolTip</title> +<para +>I suggerimenti (tool-tip) costituiscono un sistema molto semplice per aiutare l'utente. Essi sono piccoli messaggi di aiuto che appaiono quando l'utente muove il mouse su un widget che fornisce il suggerimento e scompaiono quando il mouse si sposta. Vengono utilizzati frequentemente nelle barre degli strumenti; in questo caso dovrebbero essere resi più piccoli possibile poiché le barre possono essere configurate per visualizzare il loro contenuto in vari modi: mostrando un pulsante, un pulsante con testo a lato, un pulsante con testo in basso o solo testo. Questa possibilità dovrebbe essere configurabile dall'utente, ma non è obbligatorio. Per una descrizione completa vedere il riferimento della classe <classname +>KToolBar</classname +> che si trova nella libreria kdeui. </para> +<para +>Come esempio, cercare il pulsante "Nuovo File" di una qualunque applicazione: </para> +<para +>La funzione i18n("New File") fornisce un messaggio di suggerimento. Questo è racchiuso dalla macro i18n() fornita da kapp.h per tradurre i suggerimento nella lingua attualmente selezionata. </para> +<para +>I suggerimenti possono essere aggiunti ad ogni widget utilizzando la classe <classname +>QToolTip</classname +> fornita da Qt. Un esempio potrebbe essere: </para> +</sect1> +<sect1 id="c8s3"> +<title +>Estendere la barra di stato</title> +<para +>Le applicazioni che ereditano da <classname +>KMainWindow</classname +> contengono una barra di stato, e un insieme di messaggi predefiniti per tutti gli elementi dei menu e della barra degli strumenti. Questi messaggi possono integrare o sostituire i suggerimenti e vengono visualizzati nella barra di stato quando l'utente seleziona una voce di un menu. </para> +</sect1> +<sect1 id="c8s4"> +<title +>Il pulsante <guibutton +>Che cos'è?</guibutton +></title> +<para +>Il pulsante <guibutton +>Che cos'è?</guibutton +> visualizza una finestra quando l'utente vuole ricevere aiuto su un particolare widget o un elemento della barra degli strumenti. Esso è posizionato nella barra degli strumenti e viene attivato quando viene premuto. Il cursore del mouse diventa una freccia con un punto interrogativo, e quando viene fatto clic su un widget appare una finestra di aiuto. Come esercizio, si può provare usando il pulsante <guibutton +>Che cos'è?</guibutton +> in &kdevelop;. </para> +<para +>Per aggiungere l'aiuto Che cos'è? su un widget, usare il metodo statico <methodname +>QWhatsThis::add(QWidget *widget, const QString &test)</methodname +> </para> +</sect1> +</chapter> + +<chapter id="chapter9"> +<title +>Documentazione</title> +<sect1 id="c9s1"> +<title +>Introduzione</title> +<para +>Siccome i progetti sono carenti di documentazione utente, tutti i progetti di &kdevelop; contengono un manuale pre-costruito che può essere facilmente modificato; in questo modo viene raggiunto uno degli obiettivi di KDE: rendere disponibile documentazione per aiutare gli utenti che non conoscono una applicazione. Questo capitolo illustra come estendere la documentazione predefinita e come renderla disponibile all'utente. </para> +</sect1> +<sect1 id="c9s2"> +<title +>Documentazione utente</title> +<para +>La documentazione del proprio progetto si trova nella cartella directory_del_progetto/doc/en, o in un'altra cartella se la propria lingua non è l'inglese. Il file index.docbook contiene la documentazione. Il formato di questo file è spiegato nel <ulink url="http://i18n.kde.org/doc/markup/" +>sito KDE per la documentazione</ulink +>. </para> +</sect1> +<sect1 id="c9s3"> +<title +>Documentazione per il programmatore</title> +<para +>Un'importante parte della documentazione include la descrizione delle interfacce delle classi, che permette anche ad altri programmatori di usare le proprie classi leggendo la documentazione in formato HTML creata con KDoc. &kdevelop; supporta KDoc e permette di creare la documentazione delle librerie KDE e anche la propria applicazione è già documentata. Successivamente verrà descritto come ottenere la documentazione API, dove &kdevelop; può essere d'aiuto e i tipi di tag speciali inclusi in KDoc. </para> +</sect1> +</chapter> + +<chapter id="chapter10"> +<title +>Internazionalizzazione</title> +<sect1 id="c10s1"> +<title +>Introduzione</title> +<para +>i18n è un sistema usato per creare versioni internazionali di una applicazione o un progetto. La presenza di una sola lingua è un problema che si presenta quando si scrivono applicazioni e si può osservare negli elementi dell'interfaccia grafica come etichette, menu, ecc. L'obiettivo dell'internazionalizzazione consiste nel fornire applicazioni e librerie nella lingua dell'utente. </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 +>Riconoscimenti</title> + +<para +>(... da scriversi...) </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-it/docs/kdevelop/kdearch/Makefile.am b/tde-i18n-it/docs/kdevelop/kdearch/Makefile.am new file mode 100644 index 00000000000..5c1b8e5bc2d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdearch/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = it +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-it/docs/kdevelop/kdearch/Makefile.in b/tde-i18n-it/docs/kdevelop/kdearch/Makefile.in new file mode 100644 index 00000000000..cdbb59d3fd0 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdearch/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/kdevelop/kdearch +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +kdeinitdir = @kdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = it +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdearch/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=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/kdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdearch/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-it/docs/kdevelop/kdearch/index.cache.bz2 b/tde-i18n-it/docs/kdevelop/kdearch/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..2f1dccb95c5 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdearch/index.cache.bz2 diff --git a/tde-i18n-it/docs/kdevelop/kdearch/index.docbook b/tde-i18n-it/docs/kdevelop/kdearch/index.docbook new file mode 100644 index 00000000000..dcdfe4a4de9 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdearch/index.docbook @@ -0,0 +1,3678 @@ +<?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 % Italian "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Panoramica dell'architettura KDE</title> + +<date +></date> +<releaseinfo +></releaseinfo> + +<authorgroup> +<author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +><address +><email +>bernd@kdevelop.org</email +></address +></affiliation> +</author> +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<holder +>Bernd Gehrmann</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<abstract> +<para +>Questa documentazione fornisce una panoramica della piattaforma di sviluppo KDE</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>architettura</keyword> +<keyword +>sviluppo</keyword> +<keyword +>programmazione</keyword> +</keywordset> + +</bookinfo> + +<chapter id="structure"> +<title +>Struttura della libreria</title> + +<simplesect id="structure-byname"> +<title +>Librerie per nome</title> + +<variablelist> + +<varlistentry> +<term +><ulink url="kdeapi:kdecore/index.html" +>kdecore</ulink +></term> +<listitem +><para +>La libreria kdecore è il framework di base per tutti i programmi basati su KDE. Fornisce l'accesso alla configurazione del sistema, alla gestione della linea di comando, al caricamento e alla manipolazione delle icone, ad alcuni tipi speciali di comunicazione interprocesso, alla gestione dei file e ad altre svariate utility. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kdeui/index.html" +>kdeui</ulink +></term> +<listitem +><para +>La libreria <literal +>kdeui</literal +> contiene molti widget e finestre di dialogo che non sono presenti nella libreria Qt o che questa fornisce in una versione meno completa. Sono inclusi anche molti widget derivati da quelli presenti in Qt che si integrano meglio nel desktop KDE adattandosi alle preferenze dell'utente. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kio/index.html" +>kio</ulink +></term> +<listitem +><para +>La libreria <literal +>kio</literal +> contiene funzioni per l'input/output asincrono trasparente alla rete e l'accesso alla gestione dei tipi MIME. Essa fornisce anche la finestra di dialogo KDE per i file e le sue classi di aiuto. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kjs/index.html" +>kjs</ulink +></term> +<listitem +><para +>La libreria <literal +>kjs</literal +> fornisce un'implementazione di JavaScript. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:khtml/index.html" +>khtml</ulink +></term> +<listitem +><para +>La libreria <literal +>khtml</literal +> contiene il componente KHTML, un widget per navigare nelle pagine HTML, un parser per il modello DOM, le relative API e le interfacce per Java e JavaScript. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="structure-grouped"> +<title +>Gruppi di classi</title> + +<para +>Struttura principale dell'applicazione - classi necessarie a quasi tutte le applicazioni. </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:kdecore/KApplication" +>KApplication</ulink +></title> +<para +>Inizializza e controlla un'applicazione KDE </para> +</formalpara +></listitem> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:kdecore/KUniqueApplication" +>KUniqueApplication</ulink +></title> +<para +>Assicura che solo un'istanza di un'applicazione possa essere eseguita contemporaneamente. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KAboutData" +>KAboutData</ulink +></title> +<para +>Contiene i dati per la finestra delle informazioni. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KCmdLineArgs" +>KCmdLineArgs</ulink +></title> +<para +>Elabora gli argomenti a linea di comando. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Impostazioni di configurazione - accede al database gerarchico della configurazione di KDE, alle impostazioni globali e alle risorse dell'applicazione. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KConfig" +>KConfig</ulink +></title> +<para +>Fornisce accesso al database di configurazione di KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KSimpleConfig" +>KSimpleConfig</ulink +></title> +<para +>Accede ai semplici file di configurazione non gerarchici. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KDesktopFile" +>KDesktopFile</ulink +></title> +<para +>Accede ai file <literal +>.desktop</literal +> </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KGlobalSettings" +>KGlobalSettings</ulink +></title> +<para +>È un comodo accesso alle impostazioni non specifiche dell'applicazione. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Gestione dei file e degli URL - decodifica di URL, file temporanei ecc. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KURL" +>KURL</ulink +></title> +<para +>Rappresenta e interpreta degli URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KTempFile" +>KTempFile</ulink +></title> +<para +>Crea file univoci per i dati temporanei. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KSaveFile" +>KSaveFile</ulink +></title> +<para +>Permette di salvare i file atomicamente. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Comunicazione interprocesso - classi di aiuto per DCOP e chiamate ai sottoprocessi. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KProcess" +>KProcess</ulink +></title> +<para +>Chiama e controlla i processi figlio. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KShellProcess" +>KShellProcess</ulink +></title> +<para +>Chiama i processi figli attraverso una shell. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdesu/PtyProcess" +>PtyProcess</ulink +></title> +<para +>Comunicazione con un processo figlio attraverso uno pseudo terminale. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIPC" +>KIPC</ulink +></title> +<para +>Semplice meccanismo di comunicazione IPC che usa i ClientMessages di X11. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:dcop/DCOPClient" +>DCOPClient</ulink +></title> +<para +>Trasmissione dei messaggi DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KDCOPPropertyProxy" +>KDCOPPropertyProxy</ulink +></title> +<para +>Una classe proxy che pubblica le proprietà Qt attraverso DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KDCOPActionProxy" +>KDCOPActionProxy</ulink +></title> +<para +>Una classe proxy che pubblica un'interfaccia DCOP per le azioni. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Classi di utilità - gestione della memoria, espressioni regolari, manipolazione di stringhe e numeri casuali. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KRegExp" +>KRegExp</ulink +></title> +<para +>Verifica le espressioni regolari POSIX. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KStringHandler" +>KStringHandler</ulink +></title> +<para +>Un'interfaccia stravagante per la manipolazione di stringhe. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KZoneAllocator" +>KZoneAllocator</ulink +></title> +<para +>Efficiente allocatore di memoria per grandi insiemi di piccoli oggetti. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KRandomSequence" +>KRandomSequence</ulink +></title> +<para +>Generatore di numeri pseudo casuali. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Tasti speciali - classi che aiutano a stabilire scorciatoie da tastiera coerenti per tutto il desktop. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KAccel" +>KAccel</ulink +></title> +<para +>Collezione di scorciatoie da tastiera. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KStdAccel" +>KStdAccel</ulink +></title> +<para +>Facile accesso alle comuni scorciatoie da tastiera. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KGlobalAccel" +></ulink +></title> +<para +>Collezione di scorciatoie da tastiera di sistema. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Elaborazione di immagini - manipolazione e caricamento di icone. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIconLoader" +>KIconLoader</ulink +></title> +<para +>Carica le icone in modo conforme con il tema. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIconTheme" +>KIconTheme</ulink +></title> +<para +>Classe di aiuto per KIconLoader. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KPixmap" +>KPixmap</ulink +></title> +<para +>Una classe pixmap con estese funzioni di retinatura. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPixmapEffect" +>KPixmapEffect</ulink +></title> +<para +>Effetti pixmap come gradienti e pattern. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPixmapIO" +>KPixmapIO</ulink +></title> +<para +>Conversione veloce da <classname +>QImage</classname +> a <classname +>QPixmap</classname +>. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Drag and Drop - oggetti trascinabili per i colori e gli URL. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KURLDrag" +>KURLDrag</ulink +></title> +<para +>Un oggetto trascinabile per gli URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorDrag" +>KColorDrag</ulink +></title> +<para +>Un oggetto trascinabile per i colori. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KMultipleDrag" +>KMultipleDrag</ulink +></title> +<para +>Permette di costruire oggetti trascinabili partendo da altri oggetti. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Completamento automatico </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KCompletion" +>KCompletion</ulink +></title> +<para +>Completamento automatico generico per le stringhe. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KURLCompletion" +>KURLCompletion</ulink +></title> +<para +>Completamento automatico degli URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KShellCompletion" +>KShellCompletion</ulink +></title> +<para +>Completamento automatico di eseguibili. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Widget - classi widget per list view, righelli, selezione dei colori, ecc. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KListView</ulink +></title> +<para +>Una variante di <classname +>QListView</classname +> che segue le impostazioni di sistema di KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KListBox</ulink +></title> +<para +>Una variante di <classname +>QListBox</classname +> che segue le impostazioni di sistema di KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KIconView</ulink +></title> +<para +>Una variante di <classname +>QIconView</classname +> che segue le impostazioni di sistema di KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KLineEdit</ulink +></title> +<para +>Una variante di <classname +>QLineEdit</classname +> con il supporto per il completamento del testo. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KComboBox" +>KComboBox</ulink +></title> +<para +>Una variante di <classname +>QComboBox</classname +> con supporto per il completamento del testo. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KFontCombo" +>KFontCombo</ulink +></title> +<para +>Una casella per la selezione dei font. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorCombo" +>KColorCombo</ulink +></title> +<para +>Una casella per la selezione dei colori. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorButton" +>KColorButton</ulink +></title> +<para +>Un pulsante per selezionare i colori. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KURLCombo" +>KURLCombo</ulink +></title> +<para +>Una casella per selezionare nomi di file e URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequester" +>KURLRequester</ulink +></title> +<para +>Una casella di testo per selezionare nomi di file e URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KRuler" +>KRuler</ulink +></title> +<para +>Un widget righello. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink +url="kdeapi:kdeui/KAnimWidget" +>KAnimWidget</ulink +></title> +<para +>animazioni. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KNumInput" +>KNumInput</ulink +></title> +<para +>Un widget per inserire numeri. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPasswordEdit" +>KPasswordEdit</ulink +></title> +<para +>Un widget per inserire password. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Finestre di dialogo - finestre complete di tutte le funzioni per selezionare file, colori e font. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KFileDialog" +>KFileDialog</ulink +></title> +<para +>Una finestra di dialogo per selezionare i file. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorDialog" +>KColorDialog</ulink +></title> +<para +>Una finestra di dialogo per selezionare i colori. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KFontDialog" +>KFontDialog</ulink +></title> +<para +>Una finestra di dialogo per selezionare i font. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KIconDialog" +>KIconDialog</ulink +></title> +<para +>Una finestra di dialogo per selezionare le icone. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KKeyDialog" +>KKeyDialog</ulink +></title> +<para +>Una finestra di dialogo per modificare le scorciatoie da tastiera. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KEditToolBar" +>KEditToolBar</ulink +></title> +<para +>Una finestra di dialogo per modificare le barre degli strumenti. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KTipDialog" +>KTipDialog</ulink +></title> +<para +>Una finestra di dialogo che visualizza i suggerimenti del giorno. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KAboutDialog" +>KAboutDialog</ulink +></title> +<para +>Una finestra di dialogo che visualizza le informazioni. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KLineEditDlg" +>KLineEditDlg</ulink +></title> +<para +>Una semplice finestra di dialogo per inserire testo. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequesterDlg" +>KURLRequesterDlg</ulink +></title> +<para +>Una semplice finestra di dialogo per inserire URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KMessageBox" +>KMessageBox</ulink +></title> +<para +>Una finestra di dialogo per segnalare errori ed avvertimenti. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPasswordDialog" +>KPasswordDialog</ulink +></title> +<para +>Una finestra di dialogo per inserire password. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Azioni e interfacce grafiche XML. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KAction" +>KAction</ulink +></title> +<para +>Astrazione per un'azione che può essere collegata alle barre dei menu e alle barre degli strumenti. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KActionCollection" +>KActionCollection</ulink +></title> +<para +>Un insieme di azioni. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KXMLGUIClient" +>KXMLGUIClient</ulink +></title> +<para +>Una porzione di GUI composta da una collezione di azioni e da un albero DOM che rappresenta le loro posizioni nell'interfaccia grafica. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kparts/KPartManager" +>KPartManager</ulink +></title> +<para +>Gestisce l'attivazione dei client XMLGUI. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Plugin e componenti </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibrary" +>KLibrary</ulink +></title> +<para +>Rappresenta una libreria dinamica. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibrary" +>KLibLoader</ulink +></title> +<para +>Caricamento di librerie condivise. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibFactory" +>KLibFactory</ulink +></title> +<para +>Costruttore di oggetti nei plugin. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceType" +>KServiceType</ulink +></title> +<para +>Rappresenta un tipo di servizio. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KService" +>KService</ulink +></title> +<para +>Rappresenta un servizio. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KMimeType" +>KMimeType</ulink +></title> +<para +>Rappresenta un tipo MIME. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KServiceTypeProfile</ulink +></title> +<para +>Preferenze dell'utente per la mappatura dei tipi MIME. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KTrader</ulink +></title> +<para +>Richiesta di servizi. </para> +</formalpara +></listitem> + +</itemizedlist> + +</simplesect> + +</chapter> + + + +<chapter id="graphics"> +<title +>Grafica</title> + +<sect1 id="graphics-qpainter"> +<title +>Grafica a basso livello con QPainter</title> + +<simplesect id="qpainter-rendering"> +<title +>Visualizzazione con QPainter</title> + +<para +>Il modello a basso livello di Qt per le immagini è basato sulle funzioni fornite da X11 e da altri sistemi grafici per i quali esiste il port di Qt. Tuttavia esso estende queste funzioni implementando funzionalità aggiuntive come le trasformazioni geometriche arbitrarie del testo e delle pixmap. </para> + +<para +>La classe grafica principale per il disegno 2D è <ulink url="kdeapi:qt/QPainter" +>QPainter</ulink +>. Essa può disegnare su un <ulink url="kdeapi:qt/QPaintDevice" +>QPaintDevice</ulink +>. Sono stati implementati tre tipi di QPaintDevice: il primo è <ulink url="kdeapi:qt/QWidget" +>QWidget</ulink +> che rappresenta un widget sullo schermo. Il secondo è <ulink url="kdeapi:qt/QPrinter" +>QPrinter</ulink +> che rappresenta una stampante e produce un output PostScript. Il terzo è la classe <ulink url="kdeapi:qt/QPicture" +>QPicture</ulink +> che registra i comandi di disegno e può salvarli sul disco per poterli riprodurre in seguito. Un possibile formato di memorizzazione per questi comandi di disegno è lo standard SVG del W3C. </para> + +<para +>In questo modo è possibile stampare riutilizzando il codice di disegno usato per visualizzare un widget. Naturalmente il codice viene usato in un contesto leggermente diverso: il disegno di un widget viene fatto quasi esclusivamente nel metodo paintEvent() di una classe widget. </para> + +<programlisting +>void FooWidget::paintEvent() +{ + QPainter p(this); + // Impostazione del QPainter + // Uso del QPainter +} +</programlisting> + +<para +>Quando si disegna su una stampante, ci si deve assicurare di usare QPrinter::newPage() per terminare una pagina e iniziarne una nuova - questo non è normalmente rilevante nel disegno di widget. Inoltre, quando si stampa, si potrebbe voler usare le <ulink url="kdeapi:qt/QPaintDeviceMetrics" +>metriche dei dispositivi</ulink +> per calcolare le coordinate. </para> + +</simplesect> + + +<simplesect id="qpainter-transformations"> +<title +>Trasformazioni</title> + +<para +>Normalmente QPainter disegnerà nel sistema naturale di coordinate del dispositivo usato. Questo significa che se si disegna una linea lungo l'asse orizzontale lunga 10 unità, verrà visualizzata come una linea orizzontale sullo schermo con una lunghezza di 10 pixel. Comunque, QPainter può applicare delle trasformazioni geometriche prima di disegnare effettivamente forme e curve. Una trasformazione geometrica mappa linearmente le coordinate x e y in x' e y' in base alla matrice seguente </para> + +<mediaobject> +<imageobject +><imagedata fileref="affine-general.png"/></imageobject> +</mediaobject> + +<para +>In questa equazione la matrice 3x3 può essere impostata con QPainter::setWorldMatrix() ed è del tipo <ulink url="kdeapi:qt/QWMatrix" +>QWMatrix</ulink +>. Normalmente è la matrice identità, cioè m11 e m22 valgono uno e gli altri parametri zero. Ci sono tre differenti gruppi fondamentali di trasformazioni: </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +>Traslazioni</title> +<para +>Queste muovono tutti i punti di un oggetto di una quantità fissa in qualche direzione. Una matrice di traslazione può essere ottenuta chiamando il metodo m.translate(dx, dy) di QWMatrix. Questo corrisponde alla matrice </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-translate.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Scalature</title> +<para +>Queste allungano o riducono le coordinate di un oggetto, rendendolo più grande o più piccolo senza distorcerlo. Una trasformazione di scala può essere applicata a una QWMatrix chiamando il metodo m.scale(sx, sy). Questo corrisponde alla matrice </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-scale.png"/></imageobject> +</mediaobject> + +<para +>Impostando uno dei parametri con un valore negativo si ottiene la riflessione del sistema di coordinate. </para> + +</listitem> + +<listitem +><formalpara> +<title +>Deformazioni</title> +<para +>Una distorsione del sistema di coordinate che utilizza due parametri. Questa trasformazione può essere applicata chiamando m.shear(sh, sv), e corrisponde alla matrice </para> +</formalpara> + +<mediaobject> + <imageobject +><imagedata fileref="affine-shear.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Rotazione</title> +<para +>Questa trasformazione ruota un oggetto. Una rotazione può essere applicata chiamando il metodo m.rotate(alpha). Notare che l'angolo deve essere in gradi, non in angoli matematici! La matrice corrispondente è </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-rotate.png"/></imageobject> +</mediaobject> + +<para +>Notare che una rotazione è equivalente alla combinazione di una scalatura e di una deformazione. </para> + +</listitem> + +</itemizedlist> + +<para +>Ecco alcune immagini che mostrano gli effetti delle trasformazioni elementari sulla nostra mascotte. </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) Normale</entry> +<entry +>b) Ruotata di 30 gradi</entry> +<entry +>c) deformata di 0.4</entry> +<entry +>d) Riflessa</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>Le trasformazioni possono essere combinate moltiplicando le matrici elementari. Notare che le operazioni sulle matrici generalmente non sono commutative e quindi l'effetto combinato di una loro concatenazione dipende dall'ordine con cui sono state moltiplicate le matrici. </para> + +</simplesect> + + +<simplesect id="qpainter-strokeattributes"> +<title +>Impostare gli attributi di disegno</title> + +<para +>Si può modificare la visualizzazione di linee, curve e sagome di poligoni impostando una penna speciale con QPainter::setPen(). L'argomento di questa funzione è un oggetto <ulink url="kdeapi:qt/QPen" +>QPen</ulink +>, che memorizza le proprietà di stile, colore, stile unione e stile di pennino. </para> + +<para +>Lo stile della penna è membro dell'enumerazione <ulink url="kdeapi:qt/Qt#PenStyle-enum" +>Qt::PenStyle</ulink +> e può avere uno dei seguenti valori: </para> + +<mediaobject> + <imageobject +><imagedata fileref="penstyles.png"/></imageobject> +</mediaobject> + +<para +>Lo stile unione è membro dell'enumerazione <ulink url="kdeapi:qt/Qt#PenJoinStyle-enum" +>Qt::PenJoinStyle</ulink +>. Specifica come deve essere disegnata la giunzione tra le linee che sono unite le une alle altre. Può avere uno dei seguenti valori: </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 +>Lo stile del pennino è un membro dell'enumerazione <ulink url="kdeapi:qt/Qt#PenCapStyle-enum" +>Qt::PenCapStyle</ulink +> e specifica come devono essere disegnati i punti terminali di una linea. Può avere uno dei valori della seguente tabella: </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 +>Impostare gli attributi di riempimento</title> + +<para +>Lo stile di riempimento di poligoni, cerchi o rettangoli può essere modificato impostando un pennello speciale con QPainter::setBrush(). Questa funzione riceve come argomento un oggetto <ulink url="kdeapi:qt/QBrush" +>QBrush</ulink +>. I pennelli possono essere costruiti in quattro modi differenti: </para> + +<itemizedlist> +<listitem> +<para +>QBrush::QBrush() - Crea un pennello che non riempie le aree.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(BrushStyle) - Crea un pennello nero con uno dei motivi predefiniti mostrati sotto.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, BrushStyle) - Crea un pennello colorato con uno dei motivi di default mostrati sotto.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, const QPixmap) - Crea un pennello colorato con un motivo personalizzato fornito come secondo parametro.</para> +</listitem> +</itemizedlist> + +<para +>Uno stile predefinito del pennello è un valore dell'enumerazione <ulink url="kdeapi:qt/Qt#BrushStyle-enum" +>Qt::BrushStyle</ulink +>. Ecco un'immagine di tutti i motivi predefiniti: </para> + +<mediaobject> + <imageobject +><imagedata fileref="brushstyles.png"/></imageobject> +</mediaobject> + +<para +>Un ulteriore modo per personalizzare il comportamento del pennello consiste nell'usare la funzione QPainter::setBrushOrigin(). </para> + +</simplesect> + + +<simplesect id="qpainter-color"> +<title +>Colore</title> + +<para +>I colori vengono usati quando si disegnano curve e quando si riempiono forme. In Qt i colori sono rappresentati dalla classe <ulink url="kdeapi:qt/QColor" +>QColor</ulink +>. Qt non supporta funzioni grafiche avanzate come i profili di colore ICC e la correzione del colore. I colori sono normalmente costruiti specificando i componenti rosso, verde e blu, come il modello RGB usato per i pixel di un monitor. </para> + +<para +>È possibile anche usare la tonalità, la saturazione e la luminosità. Questa rappresentazione HSV è quella usata nella finestra di dialogo Gtk per il colore, per es. in GIMP. Qui, la tonalità corrisponde ad un angolo sulla ruota del colore, mentre la saturazione corrisponde alla distanza dal centro del cerchio. La luminosità può essere scelta su un'indicatore separato. </para> + +</simplesect> + + +<simplesect id="qpainter-paintsettings"> +<title +>Altre impostazioni</title> + +<para +>Normalmente, quando si dipinge su un dispositivo, i pixel disegnati sostituiscono quelli che erano presenti in precedenza. Questo significa che se si dipinge una certa regione con il colore rosso e successivamente la si dipinge con il colore blu sarà visibile solo quest'ultimo. Il sistema grafico di Qt non supporta direttamente la trasparenza, cioè la mescolanza del colore di primo piano con quello dello sfondo; questa si può ottenere facilmente usando gli operatori booleani. Il metodo QPainter::setRasterOp() imposta l'operatore usato, che è un valore dell'enumerazione <ulink url="kdeapi:qt/Qt#RasterOp-enum" +>RasterOp</ulink +>. </para> + +<para +>Il valore predefinito è CopyROP, che ignora lo sfondo mentre una scelta molto frequente è XorROP. Se si dipinge una linea nera con questo operatore su un'immagine colorata, l'area coperta verrà invertita. Questo effetto, utilizzato nei programmi di grafica per creare i bordi delle selezioni, è noto come col nome di "formiche che marciano". </para> + +</simplesect> + + +<simplesect id="qpainter-primitives"> +<title +>Disegnare grafica elementare</title> + +<para +>Di seguito si elencheranno gli elementi grafici principali supportati da QPainter. Molti di essi possiedono versioni sovraccaricate che ricevono un diverso numero di parametri. Per esempio, i metodi che si occupano dei rettangoli ricevono come argomento un oggetto <ulink url="kdeapi:qt/QRect" +>QRect</ulink +> oppure un insieme di quattro interi. </para> + +<itemizedlist> +<listitem> +<para +>Disegnare un singolo punto - drawPoint().</para> +</listitem> +<listitem> +<para +>Disegnare linee - drawLine(), drawLineSegments() e drawPolyLine().</para> +</listitem> +<listitem> +<para +>Disegnare e riempire rettangoli - drawRect(), drawRoundRect(), fillRect() e eraseRect().</para> +</listitem> +<listitem> +<para +>Disegnare e riempire cerchi, ellissi e parti di essi - drawEllipse(), drawArc(), drawPie e drawChord().</para> +</listitem> +<listitem> +<para +>Disegnare e riempire poligoni generali - drawPolygon().</para> +</listitem> +<listitem> +<para +>Disegnare curve di bezier - drawQuadBezier() [drawCubicBezier in Qt 3.0].</para> +</listitem> +</itemizedlist> + +</simplesect> + + +<simplesect id="qpainter-pixmaps"> +<title +>Disegnare pixmap e immagini</title> + +<para +>Qt fornisce due classi molto diverse per rappresentare le immagini. </para> + +<para +><ulink url="kdeapi:qt/QPixmap" +>QPixmap</ulink +> corrisponde direttamente alle pixmap di X11. Le pixmap sono oggetti server-side e possono - su schede grafiche recenti - anche essere memorizzate direttamente nella memoria della scheda. Questo rende <emphasis +>molto</emphasis +> efficiente trasferire pixmap sullo schermo. Queste fungono anche come un'equivalente dei widget - la classe QPixmap è una sottoclasse di QPaintDevice, quindi la si può disegnare con un QPainter. Le operazioni di disegno elementari sono normalmente accelerate dalle schede grafiche moderne, quindi è un'abitudine comune usare le pixmap per il double buffering. In questo modo, invece di disegnare direttamente su un widget, si disegna su un oggetto pixmap temporaneo e si usa la funzione <ulink url="kdeapi:qt/QPaintDevice#bitBlt-1" +>bitBlt</ulink +> per trasferire la pixmap nel widget. Nelle operazioni di ridisegno più complesse questo può aiutare per evitare gli sfarfalii. </para> + +<para +>Al contrario, gli oggetti <ulink url="kdeapi:qt/QImage" +>QImage</ulink +> sono client-side. La loro caratteristica consiste nel fornire un accesso diretto ai pixel, che li rende utili per la manipolazione delle immagini e per altre cose come il caricamento e il salvataggio sul disco (il metodo load() di QPixmap riceve un oggetto QImage come fase intermedia). D'altra parte, dipingere un'immagine su un widget è un'operazione costosa, poiché implica un trasferimento nel server X, che richiede parecchio tempo specialmente con immagini grandi e su server remoti. La conversione da QImage a QPixmap può richiedere anche la retinatura, a seconda della profondità del colore. </para> + +</simplesect> + + +<simplesect id="qpainter-drawingtext"> +<title +>Disegnare testo</title> + +<para +>Il testo può essere disegnato con una delle versioni sovraccaricate del metodo QPainter::drawText(). Queste disegnano una QString in un certo punto o in un certo rettangolo, usando il font impostato con il metodo QPainter::setFont(). C'è anche un parametro che riceve una combinazione ORed di alcuni flag dell'enumerazione <ulink url="kdeapi:qt/Qt#AlignmentFlags-enum" +>Qt::AlignmentFlags</ulink +> e <ulink url="kdeapi:qt/Qt#TextFlags-enum" +>Qt::TextFlags</ulink +> </para> + +<para +>Dalla versione 3.0, Qt si occupa della disposizione del testo anche per i linguaggi scritti da destra verso sinistra. </para> + +<para +>Un sistema più avanzato per visualizzare testo con markup è rappresentato dall'uso della classe <ulink url="kdeapi:qt/QSimpleRichText" +>QSimpleRichText</ulink +>. Gli oggetti di questa classe possono essere costruiti con del testo che usa un consistente sottoinsieme dei tag HTML, comprendente anche le tabelle. Lo stile del testo può essere personalizzato usando uno <ulink url="kdeapi/qt/QStyleSheet" +>QStyleSheet</ulink +> (la documentazione dei tag può essere trovata qui). Una volta che l'oggetto è stato costruito può essere visualizzato su un widget o un altro dispositivo di disegno attraverso il metodo QSimpleRichText::draw(). </para> + +</simplesect> + +</sect1> + + +<sect1 id="graphics-qcanvas"> +<title +>Grafica strutturata con QCanvas</title> + +<para +>QPainter offre un potente modello grafico per dipingere sui widget e sulle pixmap. Tuttavia potrebbe anche essere scomodo da usare, infatti ogni volta che il widget riceve un evento paint deve analizzare la regione (QPaintEvent::region()) o il rettangolo (QPaintEvent::rect()) che deve essere ridisegnato. Dopo deve impostare un QPainter e dipingere tutti gli oggetti che occupano quella regione. Per esempio, si immagini un programma di grafica vettoriale che permette di trascinare oggetti come poligoni o cerchi. Ogni volta che quegli oggetti vengono mossi, il gestore di eventi del mouse del widget solleva un evento paint per l'intera area coperta dagli oggetti nella loro posizione precedente e in quella attuale. Le operazioni di ridisegno necessarie potrebbero essere difficili da capire, da svolgere in modo efficiente e potrebbero entrare in conflitto con la struttura orientata agli oggetti del codice sorgente del programma. </para> + +<para +>Qt contiene come alternativa la classe <ulink url="kdeapi:qt/QCanvas" +>QCanvas</ulink +> nella quale si possono inserire oggetti grafici come poligoni, testi e pixmap. Si possono anche usare altri elementi derivando la classe <ulink url="kdeapi:qt/QCanvasItem" +>QCanvasItem</ulink +> o una delle sue sottoclassi più specializzate. Un canvas può essere mostrato sullo schermo da uno o più widget della classe <ulink url="kdeapi:qt/QCanvas" +>QCanvasView</ulink +> che deve essere derivata per poter gestire le interazioni con l'utente. Tutte le operazioni di ridisegno degli oggetti nella visuale causate dalla visualizzazione del widget o dalla creazione di nuovi oggetti o da altri eventi sono gestite da Qt. Usando il double buffering tutto questo può essere effettuato in maniera efficiente e senza sfarfalii. </para> + +<para +>Gli oggetti canvas possono sovrapporsi gli uni agli altri. In questo caso l'oggetto visibile dipende dall'ordine z, che può essere impostato con QCanvasItem::setZ(). Si possono rendere gli oggetti visibili o invisibili e si può anche fornire uno sfondo che sarà disegnato "dietro" a tutti gli oggetti e un colore di primo piano. Per associare degli eventi del mouse agli oggetti esiste il metodo QCanvas::collisions() che restituisce per un dato punto la lista degli oggetti sovrapposti. Qui c'è uno screenshot di una canvas view: </para> + +<mediaobject> +<imageobject +><imagedata fileref="canvas.png"/></imageobject> +</mediaobject> + +<para +>Qui la rete è disegnata sullo sfondo. Inoltre c'è un oggetto QCanvasText e un QCanvasPolygon violetto. La farfalla è un QCanvasPixmap. Ha delle aree trasparenti attraverso le quali si possono vedere gli oggetti sottostanti. </para> + +<para +>Un tutorial sull'uso di QCanvas per scrivere giochi basati sugli sprite può essere trovato <ulink url="http://zez.org/article/articleview/2/1/" +>qui</ulink +>. </para> + +</sect1> + + +<sect1 id="graphics-qglwidget"> +<title +>Grafica 3D con OpenGL</title> + +<simplesect id="qglwidget-lowlevel"> +<title +>Interfaccia di basso livello</title> + +<para +>Al giorno d'oggi lo standard de facto per la visualizzazione della grafica 3D è <ulink url="http://www.opengl.org" +>OpenGL</ulink +>. Le implementazioni di queste specifiche, che spesso supportano l'accelerazione hardware delle schede grafiche moderne, sono disponibili per Microsoft Windows, Mac OS X e XFree86. Di per sé, OpenGL si occupa del rendering di un'area specifica del framebuffer attraverso un <emphasis +>GL context</emphasis +> e non ha nessun'altra interazione con il toolkit dell'ambiente. </para> + +<para +>Qt fornisce il widget <ulink url="kdeapi:qt/QGLWidget" +>QGLWidget</ulink +> che incapsula in una finestra un GL context associato ad essa. Fondamentalmente lo si usa derivandolo e reimplementando alcuni metodi. </para> + +<itemizedlist> + +<listitem +><para +>Invece della reimplementazione di paintEvent() e dell'uso di QPainter per disegnare i contenuti del widget, si modifica paintGL() e si usano i comandi GL per disegnare una scena. QGLWidget si assicurerà di rendere il suo GL context attuale prima della chiamata a paintGL(). </para +></listitem> + +<listitem +><para +>Il metodo virtuale initializeGL() viene chiamato precedentemente alla prima chiamata a resizeGL() o a paintGL(). Può essere usato per costruire le liste di visualizzazione degli oggetti ed effettuare le inizializzazioni. </para +></listitem> + +<listitem +><para +>Invece di reimplementare resizeEvent() si modifica resizeGL().Può essere usato per impostare in modo appropriato il viewport. </para +></listitem> + +<listitem +><para +>Quando lo stato della scena è cambiato - per esempio quando viene animata con un timer - si dovrebbe chiamare updateGL() invece che update(). Questo causerà un'operazione di ridisegno. </para +></listitem> + +</itemizedlist> + +<para +>In generale il comportamento del QGLWidget è simile a quello degli altri widget, cioè per esempio si possono elaborare gli eventi del mouse come al solito, ridimensionare il widget e combinarlo con altri widget in una certa disposizione. </para> + +<mediaobject> +<imageobject +><imagedata fileref="opengl.png"/></imageobject> +</mediaobject> + +<para +>Qt contiene alcuni esempi sull'uso di QGLWidget nei <literal +>demo</literal +>. Si possono trovare vari tutorial <ulink url="http://www.libsdl.org/opengl/intro.html" +>qui</ulink +>, mentre nella <ulink url="http://www.opengl.org" +>home page di OpenGL</ulink +> sono disponibili ulteriori informazioni e un riferimento a OpenGL. </para> + +</simplesect> + + +<simplesect id="qglwidget-highlevel"> +<title +>Interfacce di alto livello</title> + +<para +>OpenGL è un'interfaccia di basso livello per disegnare grafica 3D. Allo stesso modo in cui QCanvas fornisce al programmatore un'interfaccia di alto livello che gestisce gli oggetti e le loro proprietà, esistono interfacce di alto livello anche per la grafica 3D. Una delle più popolari è Open Inventor. Tecnologia originalmente sviluppata da SGI, oggi è disponibile con l'implementazione open source <ulink url="http://www.coin3d.org" +>Coin</ulink +>, integrata da un toolkit per Qt chiamato SoQt. </para> + +<para +>Il concetto fondamentale in Open Inventor è la <emphasis +>scena</emphasis +>. Una scena può essere caricata dal disco e salvata in un formato speciale molto simile al <ulink url="http://www.vrml.org" +>VRML</ulink +>. Essa consiste di una collezione di oggetti chiamati <emphasis +>node</emphasis +>. Inventor fornisce una ricca collezione di node riutilizzabili, come cubi, cilindri e reti, oltre a sorgenti di luce, materiali, telecamere, ecc. I node sono rappresentati da classi C++ e possono essere derivati e combinati. </para> + +<para +>Un'introduzione a Inventor può essere trovata <ulink url="http://www.motifzone.com/tmd/articles/OpenInventor/OpenInventor.html" +>qui</ulink +> (generalmente in questo articolo si possono sostituire tutti i riferimenti a SoXt con SoQt). </para> + +</simplesect> + +</sect1> + +</chapter> + + + +<chapter id="userinterface"> +<title +>Interfacce utente</title> + +<sect1 id="userinterface-actionpattern"> +<title +>Il pattern action</title> + +<para +></para> + +</sect1> + + +<sect1 id="userinterface-xmlgui"> +<title +>Definire i menu e le barre degli strumenti in XML</title> + +<simplesect id="xmlgui-intro"> +<title +>Introduzione</title> + +<para +>Il <link linkend="userinterface-actionpattern" +>pattern action</link +>, mentre permette di incapsulare le azioni attivate dall'utente in un oggetto che può essere "collegato" da qualche parte nelle barre dei menu o nelle barre degli strumenti, non risolve di per sé il problema della costruzione dei menu stessi. In particolare, si devono costruire tutti i menu a comparsa in codice C++ ed inserire esplicitamente le azioni in un certo ordine, tenendo presente la guida sullo stile per le azioni standard. Questo rende piuttosto difficile per l'utente personalizzare i menu o cambiare le scorciatoie a seconda delle sue necessità senza cambiare il codice sorgente. </para> + +<para +>Questo problema è stato risolto usando un insieme di classi chiamate <literal +>XMLGUI</literal +>. Fondamentalmente vengono separate le azioni (codificate in C++) dalla loro rappresentazione nelle barre dei menu e nelle barre degli strumenti (codificate in XML). I menu possono essere personalizzati attraverso un file XML senza modificare il codice sorgente.In questo modo le azioni standard (come <menuchoice +><guimenu +>File</guimenu +><guimenuitem +>Apri</guimenuitem +></menuchoice +> o <menuchoice +><guimenu +>Aiuto</guimenu +><guimenuitem +>Informazioni</guimenuitem +></menuchoice +>) appariranno nelle posizioni indicate nella guida allo stile. XMLGUI è particolarmente importante per i programmi modulari, dove gli oggetti che appaiono nella barra dei menu possono provenire da diversi plugin o componenti. </para> + +<para +>La classe KDE per le finestre toplevel, <ulink url="kdeapi:kdeui/KMainWindow.html" +>KMainWindow</ulink +>, eredita da <ulink url="kdeapi:kdeui/KXMLGUIClient.html" +>KXMLGUIClient</ulink +>, e quindi supporta direttamente XMLGUI. Tutte le azioni create al suo interno devono avere come genitore il valore <literal +>actionCollection()</literal +>. In seguito la chiamata a <literal +>createGUI()</literal +> costruirà l'intero insieme di menu e barre degli strumenti definito nel file XML dell'applicazione (che ha convenzionalmente il suffisso <literal +>ui.rc</literal +>). </para> + +</simplesect> + + +<simplesect id="xmlgui-kviewexample"> +<title +>Un esempio: i menu di KView</title> + +<para +>Di seguito si considererà come esempio il visualizzatore di immagini di KDE <application +>KView</application +>. Esso ha un file <literal +>ui.rc</literal +> chiamato <filename +>kviewui.rc</filename +> che viene installato con la seguente parte del file <filename +>Makefile.am</filename +> </para> + +<programlisting +>rcdir = $(kde_datadir)/kview +rc_DATA = kviewui.rc +</programlisting> + +<para +>Ecco un pezzo tratto dal file <filename +>kviewui.rc</filename +>. Per semplicità verrà mostrata solo la definizione del menu <guimenu +>View</guimenu +>. </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 +>Il codice C++ corrispondente è: </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 +>Il menu <guimenu +>View</guimenu +> risultante da questa definizione di GUI assomiglia a questo screenshot: </para> + +<mediaobject> +<imageobject +><imagedata fileref="kview-menu.png"/></imageobject> +</mediaobject> + +<para +>Il file XML inizia con una dichiarazione del tipo di documento (Document Type Declaration, DTD). Il DTD per kpartgui può essere trovato nei sorgenti di kdelibs in <filename +>kdeui/kpartgui.dtd</filename +>. L'elemento più esterno del file contiene come attributo il nome dell'istanza dell'applicazione. Contiene anche un numero di versione nella forma "version=2", che è utile quando si rilasciano nuove versioni di un'applicazione che hanno una struttura differente dei menu, ad esempio con più voci. Se si aumenta il numero della versione nel file <literal +>ui.rc</literal +>, KDE si assicurerà che vengano scartate tutte le versioni personalizzate del file e che venga usato il nuovo file al loro posto. </para> + +<para +>La linea successiva, <literal +><MenuBar></literal +>, contiene la dichiarazione di una barra dei menu. Si può inserire un qualsiasi numero di dichiarazioni <literal +><ToolBar></literal +> per creare diverse barre degli strumenti. Il menu contiene un sottomenu di nome "view". Questo nome è già predefinito e quindi si vedrà la traduzione della parola "View" nello screenshot. Se si dichiarano dei propri sottomenu si deve aggiungere il loro titolo esplicitamente. Per esempio, <application +>KView</application +> ha un sottomenu con il titolo "Image", che è dichiarato come segue: </para> + +<programlisting +><Menu name="image" > + <text>&amp;Image</text> + ... +</Menu> +</programlisting> + +<para +>Nel framework KDE questi titoli vengono automaticamente estratti ed inseriti nel file <ulink url="kde-i18n-howto.html" +><literal +>.po</literal +></ulink +> dell'applicazione, in modo da essere esaminati dai traduttori. Notare che si deve scrivere il simbolo dell'acceleratore "&" nella forma compatibile con XML "&amp;". </para> + +<para +>Ritornando all'esempio, il menu <guimenu +>View</guimenu +> di <application +>KView</application +> contiene un paio di azioni personalizzate: <literal +>zoom50</literal +>, <literal +>zoom100</literal +>, <literal +>zoom200</literal +>, <literal +>zoomMaxpect</literal +> e <literal +>fullscreen</literal +>, dichiarate con un elemento <literal +><Action></literal +>. Il separatore negli screenshot corrisponde all'elemento <literal +><Separator></literal +>. </para> + +<para +>Si noterà che alcune voci di menu non hanno un corrispondente nel file XML. Queste sono le <emphasis +>azioni standard</emphasis +>. Esse sono create dalla classe <ulink url="kdeapi:kdeui/KStdAction.html" +>KStdAction</ulink +>. Quando si creano tali azioni nell'applicazione (come nel precedente esempio in C++), saranno automaticamente inserite in una locazione predefinita, eventualmente associate ad un'icona e ad una scorciatoia da tastiera. Si possono vedere queste locazioni nel file <filename +>kdeui/ui_standards.rc</filename +> nei sorgenti di kdelibs. </para> + +</simplesect> + + +<simplesect id="xmlgui-konqexample"> +<title +>Un esempio: le barre degli strumenti di Konqueror</title> + +<para +>Per analizzare le barre degli strumenti si esamineranno le definizioni della GUI di <application +>Konqueror</application +>. Questo estratto definisce la barra degli indirizzi, che contiene il campo di input per gli URL. </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 +>La prima cosa che si può notare è la maggiore quantità di attributi rispetto a quelli nelle barre dei menu. Questi comprendono: </para> + +<itemizedlist> + +<listitem +><para +><literal +>fullWidth</literal +>: indica a XMLGUI che la barra degli strumenti deve avere la stessa larghezza della finestra toplevel. Se è impostato su "false" la barra degli strumenti occuperà solo lo spazio necessario e le altre barre degli strumenti saranno inserite nella stessa riga. </para +></listitem> + +<listitem +><para +><literal +>newline</literal +>: questo è relativo all'opzione di cui sopra. Se è "true", la barra degli strumenti comparirà su una nuova riga. Altrimenti può essere messa nella riga assieme alle barre precedenti. </para +></listitem> + +<listitem +><para +><literal +>noEdit</literal +>: normalmente le barre degli strumenti possono essere personalizzate dall'utente, ad esempio in <application +>Konqueror</application +> attraverso <menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Configura le barre degli strumenti...</guimenuitem +></menuchoice +>. Impostando questa opzione su "true" si segna questa barra degli strumenti come non modificabile. Questo è importante per le barre che sono riempite con oggetti a runtime, ad esempio la barra dei segnalibri di <application +>Konqueror</application +>. </para +></listitem> + +<listitem +><para +><literal +>iconText</literal +>: indica a XMLGUI di mostrare il testo dell'azione vicino all'icona. Normalmente, il testo viene mostrato solo come suggerimento quando il cursore del mouse rimane per un po' sopra all'icona. I valori possibili per questo attributo sono "icononly" (mostra solo l'icona), "textonly" (mostra solo il testo), "icontextright" (mostra il testo nella parte destra dell'icona), "icontextbottom" (mostra il testo sotto all'icona). </para +></listitem> + + +<listitem +><para +><literal +>hidden</literal +>: se questo attributo è "true", la barra degli strumenti non sarà inizialmente visibile e dovrà essere attivata da qualche voce di menu. </para +></listitem> + + +<listitem +><para +><literal +>position</literal +>: il valore predefinito è "top", che corrisponde al posizionamento della barra degli strumenti sotto la barra dei menu. Per programmi che possiedono molte barre degli strumenti, come i programmi di grafica, può essere interessante cambiare il valore in "left", "right" o "bottom". </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="xmlgui-dynamical"> +<title +>Menu dinamici</title> + +<para +>Ovviamente, un file XML può contenere solo una descrizione statica dell'interfaccia utente. Spesso si possono trovare menu che cambiano a runtime. Per esempio il menu contestuale di <application +>Konqueror</application +> contiene una serie di voci del tipo <guimenuitem +>Apri con</guimenuitem +> e il nome dell'applicazione capace di caricare il file con quel tipo MIME. Ogni volta che il documento mostrato cambia, viene aggiornata la lista delle voci del menu. XMLGUI può gestire questi casi con le <emphasis +>liste di azioni</emphasis +>. Una lista di azioni è dichiarata come un singolo oggetto nel file XML, ma è costituita da diverse azioni che sono collegate nel menu a runtime. L'esempio sopra è implementato con queste dichiarazioni nel file XML di <application +>Konqueror</application +>: </para> + +<programlisting +><Menu name="file"> + <text>&amp;Location</text> + ... + <ActionList name="openwith"> + ... +</Menu> +</programlisting> + +<para +>La funzione <function +>KXMLGUIClient::plugActionList()</function +> è usata in seguito per aggiungere azioni da visualizzare, mentre la funzione <function +>KXMLGuiClient::unplugActionList()</function +> rimuove tutte le azioni collegate. La routine che aggiorna le visualizzazioni è simile a questa: </para> + +<programlisting +>void MainWindow::updateOpenWithActions() +{ + unplugActionList("openwith"); + openWithActions.clear(); + for ( /* iterate over the relevant services */ ) { + KAction *action = new KAction( ...); + openWithActions.append(action); + } + plugActionList("openwith", openWithActions); +} +</programlisting> + +<para +>Notare che, al contrario delle azioni statiche, quelle create qui <emphasis +>non</emphasis +> sono costruite con l'action collection come genitore e si è responsabili della loro distruzione. La via più semplice per fare questo è usare <literal +>openWithActions.setAutoDelete(true)</literal +>. </para> + +</simplesect> + + +<simplesect id="xmlgui-contextmenus"> +<title +>Menu contestuali</title> + +<para +>Gli esempi sopra citati consistono di casi dove vengono create una barra dei menu e una barra degli strumenti della finestra principale. In questi casi il processo di costruzione dei contenitori è completamente nascosto dietro la chiamata alla funzione <function +>createGUI()</function +> (a meno che non si abbiano contenitori personalizzati). Tuttavia talvolta si vogliono costruire altri contenitori e riempirli con le definizioni dal file XML, come ad esempio nei menu contestuali. Un puntatore ad un menu contestuale può essere ottenuto dalla factory: </para> + +<programlisting +>void MainWindow::popupRequested() +{ + QWidget *w = factory()->container("context_popup", this); + QPopupMenu *popup = static_cast<QPopupMenu *>(w); + popup->exec(QCursor::pos()); +} +</programlisting> + +<para +>Il metodo <function +>KXMLGUIFactory::container()</function +> usato sopra controlla se si trova un contenitore nel file XML corrispondente al nome fornito. Quindi, una possibile definizione è questa: </para> + +<programlisting +>... +<Menu name="context_popup"> + <Action name="file_add"/> + <Action name="file_remove"/> +</Menu> +... +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="help"> +<title +>Fornire aiuto online</title> + +<para +>Rendere un programma facile e intuitivo coinvolge un'ampia gamma di funzioni che vengono generalmente chiamate aiuto online. Esse hanno diversi obiettivi, a volte in conflitto tra loro: da un lato dovrebbero fornire all'utente le risposte alle domande del tipo "Come posso fare un certo lavoro?", dall'altro lato dovrebbero aiutare l'utente nell'esplorazione del programma e nella ricerca delle funzioni che non conosce. È importante capire che questi obiettivi possono essere raggiunti solo offrendo diversi livelli di aiuto: </para> + +<itemizedlist> + +<listitem +><para +>I suggerimenti sono piccole etichette che appaiono sugli elementi dell'interfaccia utente quando il mouse si sofferma su di essi a lungo. Sono particolarmente importanti per le barre degli strumenti, dove le icone non sono sempre sufficienti nel rappresentare lo scopo di un pulsante. </para +></listitem> + +<listitem +><para +>L'aiuto "Che cos'è?" consiste generalmente in una spiegazione più lunga e dettagliata di un widget o di una voce di menu. È anche più scomodo da usare: nelle finestre di dialogo può essere attivato in due modi: premendo <keycombo +><keycap +>Shift</keycap +><keycap +>F1</keycap +></keycombo +> o facendo clic sul punto interrogativo nella barra del titolo (quest'ultima caratteristica potrebbe non essere supportata dal proprio window manager). Il puntatore del mouse assume la forma di una freccia con un punto interrogativo e quando viene fatto clic su un elemento dell'interfaccia utente appare la finestra di aiuto. L'aiuto "Che cos'è?" per le voci di menu viene generalmente attivato da un pulsante della barra degli strumenti che contiene una freccia e un punto interrogativo. </para +></listitem> + +<listitem +><para +>Il problema di questo approccio consiste nel fatto che l'utente non può vedere se un widget fornisce aiuto o no. Quando l'utente attiva il pulsante con il punto interrogativo e facendo clic su un elemento dell'interfaccia utente non ottiene la finestra di aiuto può restare presto deluso. </para> + +<para +>Il vantaggio della finestra di aiuto "Che cos'è?" fornita da Qt e KDE consiste nella possibilità di contenere <ulink url="kdeapi:qt/QStyleSheet" +>rich text</ulink +>, ovvero può contenere diversi font, testo in grassetto e corsivo e anche tabelle e immagini. </para> + +<para +>Un esempio di aiuto "Che cos'è?": </para> + +<mediaobject> +<imageobject +><imagedata fileref="whatsthis.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><para +>Infine, tutti i programmi dovrebbero avere un manuale. Un manuale viene normalmente visualizzato in <application +>KHelpCenter</application +> attraverso l'attivazione del menu <guimenu +>Aiuto</guimenu +>. Questo implica la comparsa di una nuova applicazione che distrae l'utente dal suo lavoro. Di conseguenza la consultazione del manuale dovrebbe essere necessaria solo se tutte le altre funzioni di aiuto come i suggerimenti e il Che cos'è? non sono sufficienti. Ovviamente un manuale non spiega aspetti singoli ed isolati dell'interfaccia utente, ma li illustra in un contesto più ampio. I manuali di KDE sono scritti con il linguaggio di markup <ulink url="http://i18n.kde.org" +>DocBook</ulink +>. </para +></listitem> + +</itemizedlist> + +<para +>Dal punto di vista del programmatore, Qt fornisce un API facile da usare per l'aiuto online. Per assegnare un suggerimento ad un widget si usa la classe <ulink url="kdeapi:qt/QToolTip" +>QToolTip</ulink +>. </para> + +<programlisting +>QToolTip::add(w, i18n("Questo widget fa qualcosa.")) +</programlisting> + +<para +>Se la barra dei menu e la barra degli strumenti sono costruite usando il <ulink url="actionpattern.html" +>pattern action</ulink +>, le stringhe usate per i suggerimenti sono derivate dal primo argomento del costruttore di <ulink url="kdeapi:kdeui/KAction.html" +>KAction</ulink +>: </para> + +<programlisting +>action = new KAction(i18n("&Delete"), "editdelete", + SHIFT+Key_Delete, actionCollection(), "del") +</programlisting> + +<para +>Qui è anche possibile assegnare un testo che viene mostrato nella barra di stato quando viene evidenziata la voce di menu corrispondente: </para> + +<programlisting +>action->setStatusText(i18n("Cancella il file segnato")) +</programlisting> + +<para +>L'API per l'aiuto "Che cos'è?" è molto simile. Nelle finestre di dialogo usare il codice seguente: </para> + +<programlisting +>QWhatsThis::add(w, i18n("<qt>This demonstrates <b>Qt</b>'s" + " rich text engine.<ul>" + "<li>Foo</li>" + "<li>Bar</li>" + "</ul></qt>")) +</programlisting> + +<para +>Per le voci di menu usare </para> + +<programlisting +>action->setWhatsThis(i18n("Cancella il file segnato")) +</programlisting> + +<para +>La chiamata a <application +>KHelpCenter</application +> è incapsulata nella classe <ulink url="kdeapi:kdecore/KApplication" +>KApplication</ulink +>. Per visualizzare il manuale della propria applicazione, usare </para> + +<programlisting +>kapp->invokeHelp() +</programlisting> + +<para +>Questo mostra la prima pagina con l'indice dei contenuti. Quando si vuole visualizzare solo una particolare sezione del manuale, si può fornire un argomento aggiuntivo alla funzione <function +>invokeHelp()</function +> che indica la posizione che si vuole far visualizzare dal browser. </para> + +</sect1> + +</chapter> + + + +<chapter id="components"> +<title +>Componenti e servizi</title> + +<sect1 id="components-services"> +<title +>Servizi KDE</title> + +<simplesect id="services-whatarekdeservices"> +<title +>Cosa sono i servizi di KDE?</title> + +<para +>La nozione di <emphasis +>servizio</emphasis +> è un concetto fondamentale nell'architettura modulare di KDE. Non sono previste strette implementazioni tecniche - i servizi possono essere plugin sotto forma di librerie condivise o possono essere programmi controllati attraverso <ulink url="dcop.html" +>DCOP</ulink +>. Un servizio deve assicurare l'implementazione di alcune API o funzioni per poter affermare la propria appartenenza ad un certo <emphasis +>tipo di servizio</emphasis +>. Nel gergo del C++, si può pensare ad un tipo di servizio come una classe astratta e ad un servizio come alla sua implementazione. </para> + +<para +>Il vantaggio della separazione è chiaro: un'applicazione che utilizza un tipo di servizio non deve conoscere nulla sulle possibili implementazioni di esso. Userà solo le API associate al tipo di servizio. In questo modo il servizio usato può essere sostituito senza ripercussioni sull'applicazione. Inoltre l'utente può configurare quali servizi preferisce per alcune funzioni. </para> + +<para +>Alcuni esempi: </para> + +<itemizedlist> + +<listitem +><para +>Il motore di rendering HTML usato in <application +>Konqueror</application +> è un componente integrabile che implementa i tipi di servizio <literal +>KParts/ReadOnlyPart</literal +> e <literal +>Browser/View</literal +>. </para +></listitem> +<listitem +><para +>Molte funzionalità di <application +>KDevelop</application +> sono contenute in plugin che hanno come tipo di servizio <literal +>KDevelop/Part</literal +>. All'avvio vengono caricati tutti i servizi di questo tipo, in modo da poter estendere l'IDE in maniera molto flessibile. </para +></listitem> +<listitem +><para +>La vista a icone di <application +>Konqueror</application +> - se abilitata - mostra le miniature dei file di immagini, delle pagine HTML, PDF e del testo. Questa caratteristica può essere ampliata. Se si vuole visualizzare le anteprime dei propri file di dati che possiedono qualche tipo MIME si può implementare un servizio usando il tipo di servizio <classname +>ThumbCreator</classname +>. </para +></listitem> + +</itemizedlist> + +<para +>Ovviamente un servizio non è caratterizzato solo dal tipo di servizio che implementa, ma anche da alcune <emphasis +>proprietà</emphasis +>. Per esempio, un ThumbCreator non deve solo affermare di implementare la classe C++ con il tipo <classname +>ThumbCreator</classname +>, ma deve anche avere un elenco di tipi MIME di cui è responsabile. Similmente i componenti di KDevelop hanno come proprietà il linguaggio di programmazione supportato. Quando un'applicazione richiede un tipo di servizio, può anche elencare nelle proprietà del servizio dei vincoli. Nell'esempio sopra, quando KDevelop carica i plugin per un progetto Java, chiede solo i plugin che hanno come proprietà il linguaggio di programmazione Java. Per questo scopo, KDE include un completo <emphasis +>trader</emphasis +> tipo CORBA con un complesso linguaggio per le query. </para> + +</simplesect> + + +<simplesect id="services-definingservicetypes"> +<title +>Definire i tipi di servizio</title> + +<para +>I nuovi tipi di servizio sono aggiunti installando una loro descrizione nella directory <filename +>KDEDIR/share/servicetypes</filename +>. In un framework automake l'installazione può essere fatta con questo frammento del file <filename +>Makefile.am</filename +>: </para> + +<programlisting +>kde_servicetypesdir_DATA = kdeveloppart.desktop +EXTRA_DIST = $(kde_servicetypesdir_DATA) +</programlisting> + +<para +>La definizione <filename +>kdeveloppart.desktop</filename +> di un componente di <application +>KDevelop</application +> è simile a questa: </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 +>In aggiunta alle voci normali, questo esempio mostra come dichiarare un servizio che ha alcune proprietà. Ogni definizione di proprietà corrisponde al gruppo <literal +>[PropertyDef::name]</literal +> nel file di configurazione. La voce <literal +>Type</literal +> di questo gruppo dichiara il tipo della proprietà. I tipi possibili sono tutti quelli che possono essere memorizzati in un <ulink url="kdeapi:qt/QVariant" +>QVariant</ulink +>. </para> + +</simplesect> + + +<simplesect id="services-defininglibraryservices"> +<title +>Definire servizi con librerie condivise</title> + +<para +>Le definizioni dei servizi sono memorizzate nella directory <filename +>KDEDIR/share/services</filename +>: </para> + +<programlisting +>kde_servicesdir_DATA = kdevdoxygen.desktop +EXTRA_DIST = $(kde_servicesdir_DATA) +</programlisting> + +<para +>Il contenuto del seguente file di esempio <filename +>kdevdoxygen.desktop</filename +> definisce il plugin <literal +>KDevDoxygen</literal +> con il tipo di servizio <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 +>Oltre le normali dichiarazioni, un elemento importante è <literal +>X-KDE-Library</literal +>. Questo contiene il nome della libreria libtool (senza l'estensione <literal +>.la</literal +>). Esso stabilisce anche il nome del simbolo esportato nella libreria che restituisce un oggetto factory (con il prefisso <literal +>init_</literal +>). Per l'esempio precedente, la libreria deve contenere la seguente funzione: </para> + +<programlisting +>extern "C" { + void *init_libkdevdoxygen() + { + return new DoxygenFactory; + } +}; +</programlisting> + +<para +>Il tipo della classe factory <classname +>DoxygenFactory</classname +> dipende dal tipo specifico del servizio che viene implementato. Nel nostro esempio del plugin di KDevelop, il factory deve essere un <classname +>KDevFactory</classname +> (che eredita da <classname +>KLibFactory</classname +>). Altri esempi comuni sono <ulink url="kdeapi:kparts/KParts::Factory" +>KParts::Factory</ulink +> che si presuppone che produca oggetti <ulink url="kdeapi:kparts/KParts::ReadOnlyPart" +>KParts::ReadOnlyPart</ulink +> o nella maggior parte dei casi il generico <ulink url="kdeapi:kdecore/KLibFactory" +>KLibFactory</ulink +>. </para> + +</simplesect> + + +<simplesect id="services-usinglibraryservices"> +<title +>Usare i servizi con librerie condivise</title> + +<para +>Per usare un servizio con una libreria condivisa in una applicazione, si deve ottenere un oggetto <ulink url="kdeapi:kio/KService.html" +>KService</ulink +> che lo rappresenta. Questo è discusso nella <ulink url="mime.html" +>sezione sui tipi MIME</ulink +> (e in una sezione sul trader ancora da scrivere :-) </para> + +<para +>Con un oggetto <classname +>KService</classname +> si può semplicemente caricare la libreria e ottenere un puntatore al suo oggetto factory: </para> + +<programlisting +>KService *service = ... +QString libName = QFile::encodeName(service->library()); +KLibFactory *factory = KLibLoader::self()->factory(libName); +if (!factory) { + QString name = service->name(); + QString errorMessage = KLibLoader::self()->lastErrorMessage(); + KMessageBox::error(0, i18n("There was an error loading service %1.\n" + "The diagnostics from libtool is:\n%2") + .arg(name).arg(errorMessage); +} +</programlisting> + +<para +>A questo punto, i passi successivi dipendono come sempre dal tipo di servizio. Per i plugin generici vengono creati gli oggetti con il metodo <ulink url="kdeapi:kdecore/KLibFactory.html#ref3" +>KLibFactory::create()</ulink +>. Per KParts si deve effettuare il cast del puntatore all'oggetto factory al più specifico KParts::Factory e usare il suo metodo create(): </para> + +<programlisting +>if (factory->inherits("KParts::Factory")) { + KParts::Factory *partFactory = static_cast<KParts::Factory*>(factory); + QObject *obj = partFactory->createPart(parentWidget, widgetName, + parent, name, "KParts::ReadOnlyPart"); + ... +} else { + cout << "Service does not implement the right factory" << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="services-definingdcopservices"> +<title +>Definire servizi DCOP</title> + +<para +>Un servizio DCOP è normalmente implementato come un programma che viene avviato quando è necessario. In seguito esso inizia un ciclo dove attende le connessioni DCOP. Il programma può essere interattivo, ma può anche essere eseguito completamente o parzialmente come un demone in background senza che l'utente lo noti. Un esempio di un tale demone è <literal +>kio_uiserver</literal +>, che implementa l'interazione con l'utente come una finestra di avanzamento per la libreria KIO. Il vantaggio di un demone centralizzato consiste ad esempio nel poter mostrare in una finestra gli avanzamenti del download di diversi file anche se questi sono stati avviati da diverse applicazioni. </para> + +<para +>Un servizio DCOP è definito diversamente da un servizio di una libreria condivisa. Ovviamente esso non specifica una libreria ma un eseguibile. Inoltre i servizi DCOP non dichiarano una linea ServiceType poiché normalmente vengono avviati con il loro nome. Contiene due linee aggiuntive: </para> + +<para +><literal +>X-DCOP-ServiceType</literal +> indica il modo con cui il servizio viene avviato. Il valore <literal +>Unique</literal +> indica che il servizio non può essere avviato più di una volta. Questo significa che se si tenta di avviare il servizio (ad es. attraverso <ulink url="kdeapi:kdecore/KApplication.html#startServiceByName" +>KApplication::startServiceByName()</ulink +>) KDE controllerà se è già stato registrato con DCOP e userà il servizio in esecuzione. In caso contrario lo avvierà e attenderà fino alla sua registrazione. In seguito si potranno immediatamente inviare chiamate DCOP al servizio. In questo caso, il servizio dovrebbe essere implementato come <ulink url="kdeapi:kdecore/KUniqueApplication.html" +>KUniqueApplication</ulink +>. </para> + +<para +>Il valore <literal +>Multi</literal +> del parametro <literal +>X-DCOP-ServiceType</literal +> indica che possono coesistere istanze multiple del servizio, quindi ogni tentativo di avviare il servizio creerà un nuovo processo. Come ultima possibilità può essere usato il valore <literal +>None</literal +>. In questo caso, l'avvio del servizio non attenderà la registrazione con DCOP. </para> + +<para +><literal +>X-KDE-StartupNotify</literal +> dovrebbe normalmente essere impostato su false. In caso contrario, quando il programma viene avviato, la barra delle applicazioni mostrerà la notifica di avvio o, a seconda delle impostazioni dell'utente, verrà cambiato il cursore. </para> + +<para +>Ecco la definizione di <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 +>Usare i servizi DCOP</title> + +<para +>Un servizio DCOP è avviato con uno dei vari metodi della classe KApplication: </para> + +<programlisting +>DCOPClient *client = kapp->dcopClient(); +client->attach(); +if (!client->isApplicationRegistered("kio_uiserver")) { + QString error; + if (KApplication::startServiceByName("kio_uiserver", QStringList(), &error)) + cout << "Starting kioserver failed with message " << error << endl; +} +... +QByteArray data, replyData; +QCString replyType; +QDataStream arg(data, IO_WriteOnly); +arg << true; +if (!client->call("kio_uiserver", "UIServer", "setListMode(bool)", + data, replyType, replyData)) + cout << "Call to kio_uiserver failed" << endl; +... +</programlisting> + +<para +>Notare che in questo esempio di chiamata DCOP usa il marshalling esplicito degli argomenti. Spesso si vorrà invece usare uno stub creato da dcopidl2cpp , perché è più semplice e meno soggetto ad errori. </para> + +<para +>In questo esempio il servizio è stato avviato "con il nome", cioè il primo argomento della funzione <function +>KApplication::startServiceByName()</function +> è il nome che appare nella linea <literal +>Name</literal +> del file desktop. In alternativa si può usare la funzione <function +>KApplication::startServiceByDesktopName()</function +>, che accetta come argomento il nome del suo file desktop, in questo caso <literal +>"kio_uiserver.desktop"</literal +>. </para> + +<para +>Tutte queste chiamate ricevono come secondo argomento una lista di URL, che viene passata al servizio a linea di comando. Il terzo argomento è un puntatore ad una <classname +>QString</classname +>. Se l'avvio del servizio non riesce questo argomento punta ad un messaggio di errore. </para> + +</simplesect> + +</sect1> + + +<sect1 id="components-mime"> +<title +>Tipi MIME</title> + +<simplesect id="mime-whataremimetypes"> +<title +>Cosa sono i tipi MIME?</title> + +<para +>I tipi MIME sono usati per descrivere il tipo di contenuto di file o blocchi di dati. Originalmente vennero introdotti per permettere l'invio di immagini o file audio attraverso l'email (MIME significa "Multipurpose Internet Mail Extensions"). In seguito questo sistema venne usato dai browser web per determinare come rappresentare i dati inviati da un server web all'utente. Per esempio, una pagina HTML ha un tipo MIME "text/html", mentre un file postscript è del tipo "application/postscript". In KDE questo sistema viene usato in vari ambiti: </para> + +<itemizedlist> + +<listitem +><para +>Nella vista a icone di <application +>Konqueror</application +> i file sono rappresentati da icone. Ogni tipo MIME ha un'icona associata. </para +></listitem> + +<listitem +><para +>Quando in <application +>Konqueror</application +> si fa clic sull'icona di un file o sul nome di un file, esso viene visualizzato nella vista incorporata o viene aperta un'applicazione associata con il tipo di file. </para +></listitem> + +<listitem +><para +>Quando si effettua il drag and drop con alcuni dati da un'applicazione all'altra (o all'interno della stessa), il destinatario può scegliere di accettare solo alcuni tipi di dati. Inoltre i dati immagine verranno gestiti in modo differente rispetto ai dati testuali. </para +></listitem> + +<listitem +><para +>I dati degli appunti hanno un tipo MIME. Tradizionalmente i programmi X possono gestire solo pixmap o testi, ma con Qt non ci sono limitazioni sui tipi di dati. </para +></listitem> + +</itemizedlist> + +<para +>Dagli esempi sopra appare chiara la complessità del problema relativo alla gestione dei tipi MIME. Innanzitutto è necessario stabilire una mappa tra i nomi dei file e i tipi MIME. KDE si spinge oltre permettendo anche la mappatura dei contenuti dei file, in caso non sia disponibile il nome. Poi è necessario mappare i tipi MIME con le applicazioni o le librerie che possono visualizzare o modificare un file di un dato tipo o creare un thumbnail. </para> + +<para +>Ci sono diverse API per capire il tipo MIME di dati o file. Generalmente si deve effettuare un bilanciamento tra velocità e attendibilità. Si può trovare il tipo di un file esaminando solo il suo nome (nella maggior parte dei casi la sua estensione). Per esempio un file <filename +>foo.jpg</filename +> normalmente è del tipo "image/jpeg". In caso l'estensione sia mancante si deve di fatto controllare il contenuto del file. Questo risulta ovviamente più lento, in particolare se il file deve essere prima scaricato attraverso HTTP. Il metodo basato sul contenuto si basa sul file <filename +>KDEDIR/share/mimelnk/magic</filename +> ed è quindi difficile da estendere, ma generalmente le informazioni sul tipo MIME possono essere rese facilmente disponibili al sistema installando un file <literal +>desktop</literal +> e sono disponibili in modo efficiente e conveniente attraverso le librerie KDE. </para> + +</simplesect> + + +<simplesect id="mime-definingmimetypes"> +<title +>Definire i tipi MIME</title> + +<para +>Definiamo un tipo <literal +>"application/x-foo"</literal +> per l'applicazione <application +>foobar</application +>. Si deve scrivere un file <filename +>foo.desktop</filename +> ed installarlo in <filename +>KDEDIR/share/mimelnk/application</filename +>. (Questa è la posizione normale, che potrebbe variare a seconda della distribuzione). Può essere fatto aggiungendo questo al file <filename +>Makefile.am</filename +>: </para> + +<programlisting +>mimedir = $(kde_mimedir)/application +mime_DATA = foo.desktop +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>Il file <filename +>foo.desktop</filename +> dovrebbe essere simile a questo: </para> + +<programlisting +>[Desktop Entry] +Type=MimeType +MimeType=application/x-foo +Icon=fooicon +Patterns=*.foo; +DefaultApp=foobar +Comment=Foo Data File +Comment[de]=Foo Datei +</programlisting> + +<para +>La voce <literal +>"Comment"</literal +> è destinata ad essere tradotta. Siccome il file <filename +>.desktop</filename +> specifica un'icona, si dovrebbe installare un'icona <filename +>fooicon.png</filename +> che rappresenta il file ad esempio in <application +>Konqueror</application +>. </para> + +<para +>Nelle librerie KDE, una tale definizione di tipo è mappata con una istanza della classe <ulink url="kdeapi:kio/KMimeType.html" +>KMimeType</ulink +>. Usarla come nel seguente esempio: </para> + +<programlisting +>KMimeType::Ptr type = KMimeType::mimeType("application/x-foo"); +cout << "Type: " << type->name() < endl; +cout << "Icon: " << type->icon() < endl; +cout << "Comment: " << type->icon() < endl; +QStringList patterns = type->patterns(); +QStringList::ConstIterator it; +for (it = patterns.begin(); it != patterns.end(); ++it) + cout << "Pattern: " << (*it) << endl; +</programlisting> + +</simplesect> + + +<simplesect id="mime-determiningmimetypes"> +<title +>Determinare il tipo MIME dei dati</title> + +<para +>Il metodo veloce per determinare il tipo di un file è la funzione <function +>KMimeType::findByURL()</function +>. Viene cercata la stringa dell'URL e nella maggior parte dei casi viene determinato il tipo dall'estensione. Questo meccanismo non viene usato con alcuni protocolli (ad es. http, man, info). Per esempio gli script CGI scritti in Perl hanno spesso l'estensione <literal +>.pl</literal +> che indica un tipo <literal +>"text/x-perl"</literal +>. Tuttavia il file inviato dal server è l'output di questo script, che normalmente è HTML. In questo caso la funzione <function +>KMimeType::findByURL()</function +> restituisce il tipo MIME <literal +>"application/octet-stream"</literal +> (disponibile attraverso <function +>KMimeType::defaultMimeType()</function +>) che indica il fallimento della ricerca del tipo. </para> + +<programlisting +>KMimeType::Ptr type = KMimeType::findByURL("/home/bernd/foobar.jpg"); +if (type->name() == KMimeType::defaultMimeType()) + cout << "Could not find out type" << endl; +else + cout << "Type: " << type->name() << endl; +</programlisting> + +<para +>(questo metodo ha altri argomenti, ma questi non sono documentati, quindi vengono semplicemente tralasciati). </para> + +<para +>Si potrebbe voler trovare un tipo MIME dai contenuti di un file invece che dal nome. Questo sistema è più affidabile ma anche più lento, siccome richiede la lettura di una parte del file. Questo viene fatto con la classe <ulink url="kdeapi:kio/KMimeMagic.html" +>KMimeMagic</ulink +> che ha diverse gestioni di errore: </para> + +<programlisting +>KMimeMagicResult *result = KMimeMagic::self()->findFileType("/home/bernd/foobar.jpg"); +if (!result || !result->isValid()) + cout << "Could not find out type" << endl; +else + cout << "Type: " << result->mimeType() << endl; +</programlisting> + +<para +>Come variante di questa funzione, si può anche determinare il tipo di un blocco di memoria. Questo viene usato ad es. in <application +>Kate</application +> per trovare la modalità evidenziata: </para> + +<programlisting +>QByteArray array; +... +KMimeMagicResult *result = KMimeMagic::self()->findBufferType(array); +if (!result || !result->isValid()) + cout << "Could not find out type" << endl; +else + cout << "Type: " << result->mimeType() << endl; +</programlisting> + +<para +>Ovviamente anche KMimeMagic è in grado di determinare solo il tipo del file dai contenuti di un file locale. Per i file remoti esiste un'ulteriore possibilità: </para> + +<programlisting +>KURL url("http://developer.kde.org/favicon.ico"); +QString type = KIO::NetAccess::mimetype(url); +if (type == KMimeType::defaultMimeType()) + cout << "Could not find out type" << endl; +else + cout << "Type: " << type << endl; +</programlisting> + +<para +>Questo avvia un job di KIO che scaricherà una porzione del file e la controllerà. Notare che questa funzione può essere lenta e bloccare il programma. Normalmente si vorrà usarla solo se la funzione <function +>KMimeType::findByURL()</function +> restituisce <literal +>"application/octet-stream"</literal +>. </para> + +<para +>Dall'altro lato se non si vuole bloccare l'applicazione, si può anche avviare esplicitamente il job di KIO e connettere alcuni dei suoi segnali: </para> + +<programlisting +>void FooClass::findType() +{ + KURL url("http://developer.kde.org/favicon.ico"); + KIO::MimetypeJob *job = KIO::mimetype(url); + connect( job, SIGNAL(result(KIO::Job*)), + this, SLOT(mimeResult(KIO::Job*)) ); +} + +void FooClass::mimeResult(KIO::Job *job) +{ + if (job->error()) + job->showErrorDialog(); + else + cout << "MIME type: " << ((KIO::MimetypeJob *)job)->mimetype() << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="mime-mappingmimetypes"> +<title +>Mappare un tipo MIME con un'applicazione o un servizio</title> + +<para +>Quando viene installata un'applicazione, essa installa un file <literal +>.desktop</literal +> che contiene una lista dei tipi MIME che possono essere caricati da questa applicazione. Similmente i componenti come KPart rendono disponibile questa informazione attraverso i loro file <literal +>.desktop</literal +>. In questo modo generalmente esistono diversi programmi e componenti che possono elaborare un certo tipo MIME. Si può ottenere una tale lista dalla classe <classname +>KServiceTypeProfile</classname +>: </para> + +<programlisting +>KService::OfferList offers = KServiceTypeProfile::offers("text/html", "Application"); +KService::OfferList::ConstIterator it; +for (it = offers.begin(); it != offers.end(); ++it) { + KService::Ptr service = (*it); + cout << "Name: " << service->name() << endl; +} +</programlisting> + +<para +>Il valore restituito da questa funzione corrisponde ad una lista di servizi offerti. Un oggetto <classname +>KServiceOffer</classname +> impacchetta un KService::Ptr con un numero di preferenza. L'elenco restituito da <function +>KServiceTypeProfile::offers()</function +> è ordinato a seconda delle preferenze dell'utente. Quest'ultimo può cambiarla chiamando <command +>"keditfiletype text/html"</command +> o scegliendo <guimenuitem +>Modifica il tipo di file</guimenuitem +> dal menu contestuale di <application +>Konqueror</application +>. </para> + +<para +>Nell'esempio sopra è stato richiesto un elenco delle applicazioni che supportano <literal +>text/html</literal +>. Questo - tra l'altro - conterrà gli editor HTML come <application +>Quanta Plus</application +>. Si può anche sostituire il secondo argomento <literal +>"Application"</literal +> con <literal +>"KParts::ReadOnlyPart"</literal +>. In questo caso si avrà una lista di componenti integrate per la visualizzazione dei contenuti HTML come ad esempio KHTML. </para> + +<para +>Nella maggior parte dei casi, non si è interessati all'elenco di tutti i servizi offerti per una data combinazione di tipo MIME e tipo di servizio. Esiste una specifica funzione che fornisce solo il servizio che ha la preferenza più alta: </para> + +<programlisting +>KService::Ptr offer = KServiceTypeProfile::preferredService("text/html", "Application"); +if (offer) + cout << "Name: " << service->name() << endl; +else + cout << "No appropriate service found" << endl; +</programlisting> + +<para +>Per query più complesse, c'è un completo <ulink url="kdeapi:kio/KTrader.html" +>trader</ulink +> tipo CORBA. </para> + +<para +>Per avviare un servizio con alcuni URL, usare <ulink url="kdeapi:kio/KRun.html" +>KRun</ulink +>: </para> + +<programlisting +>KURL::List urlList; +urlList << "http://www.ietf.org/rfc/rfc1341.txt?number=1341"; +urlList << "http://www.ietf.org/rfc/rfc2046.txt?number=2046"; +KRun::run(offer.service(), urlList); +</programlisting> + +</simplesect> + + +<simplesect id="mime-misc"> +<title +>Varie</title> + +<para +>In questa sezione si elencheranno alcune API che sono meno attinenti alla discussione precedente. </para> + +<para +>Ottenere un'icona da un URL. Viene cercato il tipo dell'URL e viene restituita l'icona associata. </para> + +<programlisting +>KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c"); +QString icon = KMimeType::iconForURL(url); +</programlisting> + +<para +>Avviare un URL. Viene cercato il tipo dell'URL e viene avviato il programma preferito dall'utente associato a questo tipo. </para> + +<programlisting +>KURL url("http://dot.kde.org"); +new KRun(url); +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="nettransparency"> +<title +>Trasparenza del network</title> + +<simplesect id="nettransparency-intro"> +<title +>Introduzione</title> + +<para +>Nell'era del world wide web è di fondamentale importanza che le applicazioni desktop possano accedere alle risorse su internet: devono essere in grado di scaricare file da un server web, scrivere file su un server ftp o leggere le email da un server web. Spesso la capacità di accedere ai file indipendentemente dalla loro posizione viene detta <emphasis +>trasparenza del network</emphasis +>. </para> + +<para +>Per raggiungere questo obiettivo in passato vennero implementati diversi approcci. Il vecchio file system NFS è un tentativo di implementare la trasparenza del network a livello delle API POSIX. Mentre questo sistema funziona bene su reti locali e strettamente legate, non c'è scalabilità per le risorse il cui accesso è inaffidabile e lento. Qui è importante l'<emphasis +>asincronismo</emphasis +>. L'interfaccia utente non si dovrebbe bloccare mentre si sta aspettando di scaricare una pagina dal browser. Inoltre la visualizzazione della pagina non dovrebbe iniziare quando la pagina è disponibile completamente, ma dovrebbe aggiornarsi regolarmente man mano che arrivano i dati. </para> + +<para +>Nelle librerie KDE la trasparenza del network viene implementata nelle API di KIO. Il concetto principale di questa architettura è il <emphasis +>job</emphasis +> IO. Un job può copiare o cancellare file e cose simili. Quando un job viene avviato lavora sullo sfondo e non blocca l'applicazione. Tutte le comunicazioni dal job all'applicazione - come l'invio di dati o le informazioni sull'avanzamento - sono integrate nell'event loop di Qt. </para> + +<para +>Le operazioni sullo sfondo vengono svolte avviando degli <emphasis +>ioslave</emphasis +> per compiere alcuni compiti. Gli ioslave vengono eseguiti come processi separati e comunicano attraverso i socket UNIX. In questo modo non è necessario alcun multi threading e gli ioslave instabili non mandano in crash l'applicazione che li utilizza. </para> + +<para +>Le posizioni dei file sono espresse dagli usatissimi URL. In KDE non espandono solo l'ambito dei file indirizzabili oltre al file system locale, ma vanno anche nella direzione opposta - ad es. si può navigare all'interno degli archivi tar. Questo viene fatto attraverso gli URL annidati. Per esempio, un file in un archivio tar su un server http potrebbe avere come URL </para> + +<programlisting +>http://www-com.physik.hu-berlin.de/~bernd/article.tgz#tar:/paper.tex +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-usingkio"> +<title +>Usare KIO</title> + +<para +>I job in molti casi sono creati chiamando le funzioni contenute nel namespace KIO. Esse ricevono uno o due URL come argomenti ed eventualmente altri parametri. Quando un job è concluso, emette il segnale <literal +>result(KIO::Job*)</literal +>. Dopo che questo segnale è stato emesso, il job si cancella. Quindi un caso d'uso tipico sarà simile a questo: </para> + +<programlisting +>void FooClass::makeDirectory() +{ + SimpleJob *job = KIO::mkdir(KURL("file:/home/bernd/kiodir")); + connect( job, SIGNAL(result(KIO::Job*)), + this, SLOT(mkdirResult(KIO::Job*)) ); +} + +void FooClass::mkdirResult(KIO::Job *job) +{ + if (job->error()) + job->showErrorDialog(); + else + cout << "mkdir went fine" << endl; +} +</programlisting> + +<para +>A seconda del tipo di job, possono essere connessi altri segnali. </para> + +<para +>Qui c'è una panoramica delle funzioni possibili: </para> + +<variablelist> + +<varlistentry +><term +>KIO::mkdir(const KURL &url, int permission)</term> +<listitem +><para +>Crea una directory, eventualmente con alcuni permessi. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rmdir(const KURL &url)</term> +<listitem +><para +>Rimuove una directory </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::chmod(const KURL &url, int permissions)</term> +<listitem +><para +>Cambia i permessi di un file. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rename(const KURL &src, const KURL &dest, bool overwrite)</term> +<listitem +><para +>Rinomina un file. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::symlink(const QString &target, const KURL &dest, bool overwrite, bool showProgressInfo)</term> +<listitem +><para +>Crea un collegamento simbolico. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::stat(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Cerca alcune informazioni sul file, come dimensione, data di modifica e permessi. L'informazione può essere ottenuta da KIO::StatJob::statResult() dopo che il job è concluso. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::get(const KURL &url, bool reload, bool showProgressInfo)</term> +<listitem +><para +>Trasferisce i dati da un URL. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::put(const KURL &url, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term> +<listitem +><para +>Trasferisce i dati ad un URL </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::http_post(const KURL &url, const QByteArray &data, bool showProgressInfo)</term> +<listitem +><para +>Invia dati. Comando speciale per HTTP. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::mimetype(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Tenta di trovare il tipo MIME dell'URL. Il tipo può essere ottenuto con KIO::MimetypeJob::mimetype() al termine del job. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_copy(const KURL &src, const KURL &dest, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term> +<listitem +><para +>Copia un singolo file. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_move(const KURL &src, const KURL &dest, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term> +<listitem +><para +>Rinomina o muove un singolo file. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_delete(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Cancella un singolo file. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listDir(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Elenca i contenuti di una directory. Ogni volta che vengono scoperti nuovi elementi viene emesso il segnale KIO::ListJob::entries(). </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listRecursive(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Simile alla funzione listDir(), ma questa è ricorsiva. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::copy(const KURL &src, const KURL &dest, bool showProgressInfo)</term> +<listitem +><para +>Copia un file o una directory. Queste ultime vengono copiate ricorsivamente. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::move(const KURL &src, const KURL &dest, bool showProgressInfo)</term> +<listitem +><para +>Muove o rinomina un file o una directory. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::del(const KURL &src, bool shred, bool showProgressInfo)</term> +<listitem +><para +>Cancella un file o una directory. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="nettransparency-direntries"> +<title +>Elementi di una directory</title> + +<para +>I job di KIO::stat() e di KIO::listDir() restituiscono i loro risultati rispettivamente come tipi UDSEntry e USDEntryList. Quest'ultimo è definito come QValueList<UDSEntry>. L'acronimo UDS significa "Universal Directory Service". Il principio di base è che una voce della directory contiene le informazioni che possono essere fornite da uno slave, e nient'altro. Per esempio, lo slave http non fornisce nessuna informazione sui permessi di accesso o sui proprietari del file. Invece un UDSEntry è un elenco di UDSAtoms. Ogni atom fornisce una porzione specifica di informazione e consiste di un tipo memorizzato in m_uds e di un valore intero m_long o di una stringa m_str a seconda del tipo. </para> + +<para +>Attualmente sono definiti i seguenti tipi: </para> + +<itemizedlist> + +<listitem +><para +>UDS_SIZE (intero) - dimensione del file </para +></listitem> + +<listitem +><para +>UDS_USER (stringa) - utente che possiede il file </para +></listitem> + +<listitem +><para +>UDS_GROUP (stringa) - gruppo che possiede il file </para +></listitem> + +<listitem +><para +>UDS_NAME (stringa) - nome del file </para +></listitem> + +<listitem +><para +>UDS_ACCESS (intero) - permessi del file, ad es. memorizzati dalla funzione stat() di libc nel campo st_mode. </para +></listitem> + +<listitem +><para +>UDS_FILE_TYPE (intero) - Il tipo di file, ad es. quello memorizzato da stat() nel campo st_mode. Quindi per controllare questo valore si possono usare le normali macro di libc. Notare che i dati forniti da ioslave corrispondono a stat() e non a lstat(), cioè nel caso dei collegamenti simbolici il tipo di file è quello del file puntato dal collegamento e non quello del collegamento stesso. </para +></listitem> + +<listitem +><para +>UDS_LINK_DEST (stringa) - Nel caso di collegamenti simbolici, il nome del file puntato. </para +></listitem> + +<listitem +><para +>UDS_MODIFICATION_TIME (intero) - La data (come nel tipo time_t) di quando il file è stato modificato per l'ultima volta, come ad es. memorizzato da stat() nel campo st_mtime. </para +></listitem> + +<listitem +><para +>UDS_ACCESS_TIME (intero) - La data di quando si è avuto l'ultimo accesso al file, come ad es. memorizzato da stat() nel campo st_atime. </para +></listitem> + +<listitem +><para +>UDS_CREATION_TIME (intero) - La data di quando il file è stato creato, come ad es. memorizzato da stat() nel campo st_ctime. </para +></listitem> + +<listitem +><para +>UDS_URL (stringa) - fornisce l'URL di un file, se non è semplicemente la concatenazione dell'URL della directory e del nome del file. </para +></listitem> + +<listitem +><para +>UDS_MIME_TYPE (stringa) - tipo MIME del file </para +></listitem> + +<listitem +><para +>UDS_GUESSED_MIME_TYPE (stringa) - tipo MIME del file previsto dallo slave. La differenza con il tipo precedente consiste nel fatto che questo non dovrebbe essere considerato affidabile (perché la determinazione in maniera sicura sarebbe stata troppo dispendiosa). Per esempio, la classe KRun controlla esplicitamente il tipo MIME se non ha informazioni attendibili. </para +></listitem> + +</itemizedlist> + +<para +>Nonostante il sistema di memorizzazione delle informazioni sui file nelle <classname +>UDSEntry</classname +> sia flessibile e pratico dal punto di vista ioslave, è difficile da usare per il programmatore dell'applicazione. Ad esempio, per trovare il tipo MIME di un file, si deve procedere con una iterazione attraverso tutti gli atom e controllare se <literal +>m_uds</literal +> è un <literal +>UDS_MIME_TYPE</literal +>. Fortunatamente c'è un API molto più semplice da usare: la classe <classname +>KFileItem</classname +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-syncuse"> +<title +>Uso sincrono</title> + +<para +>Spesso l'API asincrona di KIO è troppo complessa da usare e quindi l'implementazione asincrona non costituisce una priorità. Per esempio, in un programma che può gestire un solo documento alla volta c'è poco da fare quando un programma sta scaricando un file. Per questi semplici casi, esiste un'API molto più facile costituita da un insieme di funzioni statiche in KIO::NetAccess. Per esempio, per copiare un file si può usare </para> + +<programlisting +>KURL source, target; +source = ...; +target = ... +KIO::NetAccess::copy(source, target); +</programlisting> + +<para +>La funzione ritornerà dopo che il processo completo di copia è terminato. Tuttavia questo metodo fornisce una finestra di avanzamento e si assicura che l'applicazione elabori gli eventi di ridisegno. </para> + +<para +>Una combinazione di funzioni di particolare interesse è la funzione <function +>download()</function +> associata alla funzione <function +>removeTempFile()</function +>. La prima scarica un file dall'URL fornito e lo memorizza in un file temporaneo con un nome univoco. Il nome è memorizzato nel secondo argomento. <emphasis +>Se</emphasis +> l'URL è locale il file non viene scaricato e il secondo argomento viene impostato con il nome del file locale. La funzione <function +>removeTempFile()</function +> cancella il file fornito come argomento se il file è il risultato del download della prima funzione. In caso contrario non fa nulla. Quindi un modo molto semplice di caricare i file indipendentemente dalla loro locazione è scritto nel frammento di codice seguente: </para> + +<programlisting +>KURL url; +url = ...; +QString tempFile; +if (KIO::NetAccess::download(url, tempFile) { + // load the file with the name tempFile + KIO::NetAccess::removeTempFile(tempFile); +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-metadata"> +<title +>Metadati</title> + +<para +>Come visto in precedenza, l'interfaccia ai job IO è piuttosto astratta e non comprende nessuno scambio di informazioni tra l'applicazione e lo slave. Per esempio, si possono fornire alcuni parametri allo slave HTTP per controllare l'uso della cache o per inviare assieme ad una richiesta un gruppo di cookie.Per questo è stato introdotto il concetto di metadati. Quando viene creato, un job può essere configurato fornendogli dei metadati. Ogni elemento dei metadati consiste di un paio chiave/valore. Per esempio, per evitare che lo slave HHTP carichi una pagina web dalla sua cache si può usare: </para> + +<programlisting +>void FooClass::reloadPage() +{ + KURL url("http://www.kdevelop.org/index.html"); + KIO::TransferJob *job = KIO::get(url, true, false); + job->addMetaData("cache", "reload"); + ... +} +</programlisting> + +<para +>La stessa tecnica è usata nell'altra direzione, cioè per le comunicazioni dallo slave all'applicazione. Il metodo <function +>Job::queryMetaData()</function +> richiede il valore di una certa chiave inviata allo slave. Per lo slave HTTP, un esempio di questo tipo è dato dalla chiave <literal +>"modificata"</literal +> che contiene (rappresentata come stringa) la data dell'ultima modifica della pagina web. Un esempio su come si può usare tutto ciò è il seguente: </para> + +<programlisting +>void FooClass::printModifiedDate() +{ + KURL url("http://developer.kde.org/documentation/kde2arch/index.html"); + KIO::TransferJob *job = KIO::get(url, true, false); + connect( job, SIGNAL(result(KIO::Job*)), + this, SLOT(transferResult(KIO::Job*)) ); +} + +void FooClass::transferResult(KIO::Job *job) +{ + QString mimetype; + if (job->error()) + job->showErrorDialog(); + else { + KIO::TransferJob *transferJob = (KIO::TransferJob*) job; + QString modified = transferJob->queryMetaData("modified"); + cout << "Last modified: " << modified << endl; +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-scheduling"> +<title +>Pianificazione</title> + +<para +>Normalmente quando si usano le API di KIO non ci si deve occupare dei dettagli dell'esecuzione degli slave IO e della comunicazione con essi. L'uso normale consiste nell'avvio di un job con alcuni parametri e nella gestione dei segnali che emette. </para> + +<para +>Lo scenario dietro le quinte è molto più complicato. Quando si crea un job, esso viene messo in una coda. Quando l'applicazione ritorna all'event loop, KIO alloca dei processi per i job nella coda. Per il primo job avviato la situazione è banale: viene avviato un IO slave per il protocollo appropriato. Tuttavia, dopo che il job (come un download per un server HTTP) è terminato non viene immediatamente ucciso, ma viene messo in un insieme di slave inattivi e ucciso dopo un periodo di inattività (attualmente 3 minuti). Se giunge una nuova richiesta per lo stesso protocollo e host esso verrà riusato. L'ovvio vantaggio consiste, nel caso di una serie di job per lo stesso host, nel risparmio sul costo della creazione di nuovi processi e l'eventuale handshake per l'autenticazione. </para> + +<para +>Il riuso è ovviamente possibile solo quando gli slave esistenti hanno terminato il loro lavoro. Quando arriva una nuova richiesta mentre un processo slave già esistente è ancora in esecuzione deve essere avviato e usato un nuovo processo. Nell'uso delle API negli esempi sopra non ci sono limitazioni nella creazione di nuovi processi: se si avvia una serie di download consecutivi per 20 file diversi allora KIO eseguirà 20 processi slave. Questo schema nell'assegnazione degli slave ai job è detto <emphasis +>diretto</emphasis +>. Non è sempre lo schema più appropriato, siccome necessita di molta memoria e crea un alto carico sia sui sistemi client che server. </para> + +<para +>Quindi esiste una via diversa. Si possono <emphasis +>pianificare</emphasis +> i job. In questo caso solo un numero limitato di processi slave (attualmente 3) sarà creato. Se si creano ulteriori job verranno messi in una coda e saranno elaborati quando il processo slave diventa inattivo. Questo viene fatto così: </para> + +<programlisting +>KURL url("http://developer.kde.org/documentation/kde2arch/index.html"); +KIO::TransferJob *job = KIO::get(url, true, false); +KIO::Scheduler::scheduleJob(job); +</programlisting> + +<para +>Una terza possibilità è quella <emphasis +>orientata alla connessione</emphasis +>. Per esempio, per lo slave IMAP non ha senso avviare processi multipli per lo stesso server. Dovrebbe essere rinforzata solo una connessione IMAP alla volta. In questo caso l'applicazione deve occuparsi direttamente con la nozione di slave. Deve deallocare uno slave per alcune connessioni e in seguito assegnare tutti i job che dovrebbero utilizzare la stessa connessione allo stesso slave. Questo può essere fatto semplicemente usando KIO::Scheduler: </para> + +<programlisting +>KURL baseUrl("imap://bernd@albert.physik.hu-berlin.de"); +KIO::Slave *slave = KIO::Scheduler::getConnectedSlave(baseUrl); + +KIO::TransferJob *job1 = KIO::get(KURL(baseUrl, "/INBOX;UID=79374")); +KIO::Scheduler::assignJobToSlave(slave, job1); + +KIO::TransferJob *job2 = KIO::get(KURL(baseUrl, "/INBOX;UID=86793")); +KIO::Scheduler::assignJobToSlave(slave, job2); + +... + +KIO::Scheduler::disconnectSlave(slave); +</programlisting> + +<para +>Si può disconnettere lo slave dopo che sono terminati tutti i job assegnati ad esso. </para> + +</simplesect> + + +<simplesect id="nettransparency-definingslaves"> +<title +>Definire un ioslave</title> + +<para +>Di seguito si discuterà come si può aggiungere un nuovo ioslave al sistema. In analogia con i servizi, i nuovi ioslave possono essere resi noti al sistema installando un piccolo file di configurazione. Il seguente frammento di Makefile.am mostra come installare il protocollo ftp: </para> + +<programlisting +>protocoldir = $(kde_servicesdir) +protocol_DATA = ftp.protocol +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>Il contenuto del file ftp.protocol è: </para> + +<programlisting +>[Protocol] +exec=kio_ftp +protocol=ftp +input=none +output=filesystem +listing=Name,Type,Size,Date,Access,Owner,Group,Link, +reading=true +writing=true +makedir=true +deleting=true +Icon=ftp +</programlisting> + +<para +>La voce <literal +>"protocol"</literal +> definisce il protocollo di cui è responsabile lo slave. <literal +>"exec"</literal +> è (al contrario di quello che ci si potrebbe aspettare) il nome della libreria che implementa lo slave. Quando lo slave dove essere attivato, viene avviato l'eseguibile <command +>"kdeinit"</command +> che a sua volta carica la libreria nello spazio degli indirizzi. In questo modo, praticamente si può pensare ad uno slave in esecuzione come ad un processo separato anche se è implementato come libreria. Il vantaggio di un tale meccanismo consiste nel risparmio di molta memoria e la riduzione del tempo necessario al linker. </para> + +<para +>Le linee "input" e "output" non sono attualmente usate. </para> + +<para +>Le restanti linee del file <literal +>.protocol</literal +> definiscono le capacità possedute dallo slave. Generalmente, le caratteristiche che devono essere implementate da uno slave sono molto più semplici di quelle che le API di KIO devono fornire all'applicazione. Infatti i compiti più complessi sono pianificati per coppie di sotto-job. Ad esempio, per elencare una directory in modo ricorsivo, sarà eseguito un job per la directory superiore. Poi per ogni sottodirectory incontrata verranno eseguiti nuovi job. Uno scheduler di KIO si assicura che non vengano eseguiti troppi job contemporaneamente. Similmente, per copiare un file all'interno di un protocollo che non supporta la copia diretta (come il protocollo <literal +>ftp:</literal +>), KIO legge il file sorgente e scrive i dati nel file di destinazione. Per far funzionare il tutto è necessario che il file <literal +>.protocol</literal +> segnali le azioni supportate dallo slave. </para> + +<para +>Siccome gli slave sono caricati come librerie condivise ma sono costituiti da programmi standalone, il loro codice è leggermente diverso dai normali plugin fatti con le librerie statiche. La funzione che viene chiamata per avviare lo slave è chiamata <function +>kdemain()</function +>. Questa funzione compie alcune inizializzazioni ed in seguito entra in un event loop e attende le richieste dall'applicazione che lo usa. Appare simile a questa </para> + +<programlisting +>extern "C" { int kdemain(int argc, char **argv); } + +int kdemain(int argc, char **argv) +{ + KLocale::setMainCatalogue("kdelibs"); + KInstance instance("kio_ftp"); + (void) KGlobal::locale(); + + if (argc != 4) { + fprintf(stderr, "Usage: kio_ftp protocol " + "domain-socket1 domain-socket2\n"); + exit(-1); + } + + FtpSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + return 0; +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-implementingslaves"> +<title +>Implementare un ioslave</title> + +<para +>Gli slave sono implementati come sottoclassi di <classname +>KIO::SlaveBase</classname +> (nell'esempio sopra FtpSlave). Quindi le azioni elencate nel file <literal +>.protocol</literal +> corrispondono ad alcune funzioni virtuali di <classname +>KIO::SlaveBase</classname +> che devono essere reimplementate dall'implementazione dello slave. Ecco una lista di azioni possibili e le funzioni virtuali corrispondenti: </para> + +<variablelist> + +<varlistentry +><term +>reading - legge dati da un URL</term> +<listitem +><para +>void get(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>writing - scrive dati in un URL e crea il file se non esiste.</term> +<listitem +><para +>void put(const KURL &url, int permissions, bool overwrite, bool resume)</para +></listitem +></varlistentry> + +<varlistentry +><term +>moving - rinomina un file</term> +<listitem +><para +>void rename(const KURL &src, const KURL &dest, bool overwrite)</para +></listitem +></varlistentry> + +<varlistentry +><term +>deleting - cancella un file o una directory.</term> +<listitem +><para +>void del(const KURL &url, bool isFile)</para +></listitem +></varlistentry> + +<varlistentry +><term +>listing - Elenca i contenuti di una directory.</term> +<listitem +><para +>void listDir(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>makedir - Crea una directory.</term> +<listitem +><para +>void mkdir(const KURL &url, int permissions)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>In aggiunta a queste ci sono delle funzioni reimplementabili che non sono elencate nel file <literal +>.protocol</literal +>. KIO determina se queste operazioni sono supportate o no (cioè se l'implementazione predefinita restituisce un errore). </para> + +<variablelist> + +<varlistentry +><term +>Fornisce informazioni su un file, come la funzione C stat().</term> +<listitem +><para +>void stat(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Cambia i permessi di accesso di un file</term> +<listitem +><para +>void chmod(const KURL &url, int permissions)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Determina il tipo MIME di un file.</term> +<listitem +><para +>void mimetype(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Copia un file.</term> +<listitem +><para +>copy(const KURL &url, const KURL &dest, int permissions, bool overwrite)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Crea un collegamento simbolico.</term> +<listitem +><para +>void symlink(const QString &target, const KURL &dest, bool overwrite)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>Tutte queste implementazioni dovrebbero terminare con una di queste due chiamate: se l'operazione ha avuto successo, dovrebbero chiamare la funzione <literal +>finished()</literal +>. Se accade un errore, dovrebbe essere chiamata la funzione <literal +>error()</literal +> con un codice di errore come primo argomento e una stringa come secondo. I codici di errore possibili sono elencati come enumerazioni di <type +>KIO::Error</type +>. Il secondo argomento è normalmente l'URL in questione. È usato ad esempio nella funzione <function +>KIO::Job::showErrorDialog()</function +> per parametrizzare il messaggio di errore in forma leggibile. </para> + +<para +>Per gli slave corrispondenti ai protocolli di rete potrebbe essere interessante reimplementare il metodo <function +>SlaveBase::setHost()</function +>. Questo viene chiamato per indicare al processo slave l'host, la porta e il nome utente e la password per effettuare il login. Generalmente, i metadati impostati dall'applicazione possono essere richiesti dalla funzione <function +>SlaveBase::metaData()</function +>. Si può controllare l'esistenza di metadati relativi ad una data chiave con la funzione <function +>SlaveBase::hasMetaData()</function +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-communication"> +<title +>Comunicare all'applicazione</title> + +<para +>Diverse azioni implementate nello slave necessitano di sistemi per comunicare i dati all'applicazione usando il processo slave: </para> + +<itemizedlist> + +<listitem +><para +>La funzione <function +>get()</function +> invia blocchi di dati. L'invio viene effettuato con la funzione <function +>data()</function +>, che riceve come argomento un <classname +>QByteArray</classname +>. Certamente non è necessario inviare tutti i dati insieme. Se si invia un file grande chiamare la funzione <function +>data()</function +> con piccoli blocchi di dati in modo che l'applicazione li possa elaborare. Chiamare <function +>finished()</function +> al termine del trasferimento. </para +></listitem> + +<listitem +><para +>La funzione <function +>listDir()</function +> riporta le informazioni sugli elementi di una directory. Per questo scopo chiama <function +>listEntries()</function +> con un argomento di tipo <classname +>KIO::UDSEntryList</classname +>. Analogamente alla funzione <function +>data()</function +> può essere chiamata diverse volte. Quando termina, chiamare <function +>listEntry()</function +> con il secondo argomento impostato su true. Si può anche chiamare <function +>totalSize()</function +> per sapere il numero totale degli elementi della directory, se è noto. </para +></listitem> + +<listitem +><para +><function +>stat()</function +> riferisce le informazioni su un file come la dimensione, il tipo MIME, ecc. Tali informazioni sono impacchettate in un <classname +>KIO::UDSEntry</classname +> che sarà discusso più avanti. Usare <function +>statEntry()</function +> per inviare un tale oggetto all'applicazione. </para +></listitem> + +<listitem +><para +><function +>mimetype()</function +> chiama la funzione <function +>mimetype()</function +> con un argomento di tipo stringa. </para +></listitem> + +<listitem +><para +>Le funzioni <function +>get()</function +> e <function +>copy()</function +> potrebbero fornire informazioni sull'avanzamento. Questo viene fatto con i metodi <function +>totalSize()</function +>, <function +>processedSize()</function +> e <function +>speed()</function +>. La dimensione totale e la dimensione elaborata sono misurate in byte e la velocità in byte al secondo. </para +></listitem> + +<listitem +><para +>Si possono inviare coppie di metadati di tipo chiave/valore con la funzione <function +>setMetaData()</function +>. </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="nettransparency-interacting"> +<title +>Interagire con l'utente</title> + +<para +>A volte uno slave deve interagire con l'utente. Alcuni esempi comprendono i messaggi di informazione, le finestre di dialogo per l'autenticazione e le finestre di conferma quando un file sta per essere sovrascritto. </para> + +<itemizedlist> + +<listitem +><para +><function +>infoMessage()</function +> - usato per avere un feedback, come ad esempio per un messaggio del tipo "Scaricamento dati dall'<host>" dallo slave http, che viene visualizzato spesso nella barra di stato dei programmi. Dalla parte dell'applicazione questo metodo corrisponde al segnale <function +>KIO::Job::infoMessage()</function +>. </para +></listitem> + +<listitem +><para +><function +>warning()</function +> - Visualizza un avvertimento in una finestra con <function +>KMessageBox::information()</function +>. Se una finestra rimane aperta da una precedente chiamata di warning() dallo stesso processo slave non succede nulla. </para +></listitem> + +<listitem +><para +><function +>messageBox()</function +> - questo è un metodo più completo del metodo precedente. Permette di aprire una finestra con il testo, il titolo e alcuni pulsanti. Vedere come riferimento l'enumerazione <type +>SlaveBase::MessageBoxType</type +>. </para +></listitem> + +<listitem +><para +><function +>openPassDlg()</function +> - apre una finestra di dialogo per l'inserimento del nome utente e password. </para +></listitem> + +</itemizedlist> + +</simplesect> + +</sect1> + +</chapter> + + + +<appendix id="misc"> +<title +>Licenza</title> + +&underFDL; +&underGPL; + +</appendix> + +</book> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.am b/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.am new file mode 100644 index 00000000000..5c1b8e5bc2d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = it +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.in b/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.in new file mode 100644 index 00000000000..2106de3c3d6 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/kdevelop/kdevelop +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +kdeinitdir = @kdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = it +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdevelop/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-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=configure-docu-general.png SF-other.png configure-adddialog.png build-configurations.png unixdev.docbook kdevelop-install.docbook raw-project-warning.png problem-report-all-todos.png app-files.docbook kdevelop-ideal-mode-0.png file-browsers.docbook create-new-project-cvs.png configure-select.png configure-doctree-general.png createnewproject.png index.docbook kdevelop-mdi-mode.png run-button.png tutorial-hello-options.png build-menu-automake.png configure-doctree-TOC.png applicationwizard.docbook configure-doctree-bookmark.png getting-started.docbook plugin-tools.docbook empty-ide.png file-list-close-selected.png project-management.docbook create-new-project.png configure-project-cppoptions.png configure-general.png kdevelop-toplevel-mode.png tutorial-hello-new2.png documents-contents.png kdevelop-scripting.docbook cvs.docbook editor-ctags-menu.png setup.docbook configure-project-configure.png tutorial-new-project.png doctree-reduced.png tutorial-debug-tree.png open-project.png credits.docbook configure-docu-toc.png kdevelop-ideal-mode.png documentation.docbook automakemanager.png commands.docbook configure-docu-edit.png problem-report-marks.png build-commands.png app-uimodes-examples.docbook editor-find-menu.png configure-editor.png index.cache.bz2 configure-project-run.png folded-tabs.png configure-docu-dox.png configure-docu-devhelp.png kdevelop-tabbed-mode.png editor-search-doc.png configure-doctree-textsearch.png app-menu.docbook SF-indent.png select-user-interface.png doctree-add-bookmark.png configure-snippets.png kdcop_browsing.png configure-docu-chm.png editor-ctags-regenerate.png survey-manual.docbook editing.docbook app-misc-info.docbook doctreeview.png importdirectory.png app-changelog.docbook nutshell.docbook SF-general.png find-in-files.png project-advanced.docbook edit-doctree-TOC-entry.png adv-build-management.docbook build-menu.png automake-target-popup.png problem-report-todo.png configure-project-doc.png configure-project-buildconfig.png configure-file-selector.png filetree.png automake-file-popup.png script_location.png configure-doctree-DevHelp.png configure-file-templates.png Makefile.in class-browsers.docbook classview.png configure-docu-custom.png configure-project-cpp.png doctree.png configure-adddialog-qt.png configure-project-make.png file-selector.png select-user-interface-0.png automake-subproject-popup.png kdevelop-survey.docbook debugger.docbook documents-search.png createnewprojectoptions.png open-recent-project.png Makefile.am configure-adddialog-baselibs.png + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) documents-search.png configure-general.png problem-report-marks.png app-uimodes-examples.docbook createnewprojectoptions.png editing.docbook SF-indent.png automake-target-popup.png configure-select.png edit-doctree-TOC-entry.png automake-file-popup.png build-menu-automake.png doctree-reduced.png configure-project-make.png commands.docbook documentation.docbook tutorial-hello-options.png file-list-close-selected.png kdevelop-mdi-mode.png open-project.png open-recent-project.png create-new-project-cvs.png configure-docu-toc.png editor-find-menu.png configure-file-templates.png file-browsers.docbook kdevelop-tabbed-mode.png script_location.png configure-adddialog-qt.png kdevelop-install.docbook build-menu.png folded-tabs.png debugger.docbook select-user-interface-0.png filetree.png create-new-project.png configure-docu-edit.png raw-project-warning.png configure-project-run.png run-button.png select-user-interface.png applicationwizard.docbook configure-project-cppoptions.png editor-ctags-regenerate.png index.docbook doctree-add-bookmark.png configure-doctree-textsearch.png tutorial-new-project.png kdevelop-ideal-mode-0.png app-files.docbook editor-ctags-menu.png kdcop_browsing.png configure-doctree-TOC.png createnewproject.png configure-editor.png configure-doctree-DevHelp.png editor-search-doc.png tutorial-debug-tree.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook configure-doctree-general.png kdevelop-survey.docbook empty-ide.png find-in-files.png kdevelop-ideal-mode.png configure-snippets.png problem-report-todo.png configure-adddialog-baselibs.png tutorial-hello-new2.png configure-docu-custom.png kdevelop-scripting.docbook configure-project-doc.png configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook configure-adddialog.png SF-general.png configure-file-selector.png classview.png nutshell.docbook build-commands.png project-advanced.docbook configure-project-configure.png plugin-tools.docbook build-configurations.png doctree.png class-browsers.docbook app-changelog.docbook importdirectory.png getting-started.docbook kdevelop-toplevel-mode.png app-misc-info.docbook problem-report-all-todos.png configure-doctree-bookmark.png setup.docbook file-selector.png automakemanager.png configure-project-buildconfig.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png configure-project-cpp.png + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop + @for base in documents-search.png configure-general.png problem-report-marks.png app-uimodes-examples.docbook createnewprojectoptions.png editing.docbook SF-indent.png automake-target-popup.png configure-select.png edit-doctree-TOC-entry.png automake-file-popup.png build-menu-automake.png doctree-reduced.png configure-project-make.png commands.docbook documentation.docbook tutorial-hello-options.png file-list-close-selected.png kdevelop-mdi-mode.png open-project.png open-recent-project.png create-new-project-cvs.png configure-docu-toc.png editor-find-menu.png configure-file-templates.png file-browsers.docbook kdevelop-tabbed-mode.png script_location.png configure-adddialog-qt.png kdevelop-install.docbook build-menu.png folded-tabs.png debugger.docbook select-user-interface-0.png filetree.png create-new-project.png configure-docu-edit.png raw-project-warning.png configure-project-run.png run-button.png select-user-interface.png applicationwizard.docbook configure-project-cppoptions.png editor-ctags-regenerate.png index.docbook doctree-add-bookmark.png configure-doctree-textsearch.png tutorial-new-project.png kdevelop-ideal-mode-0.png app-files.docbook editor-ctags-menu.png kdcop_browsing.png configure-doctree-TOC.png createnewproject.png configure-editor.png configure-doctree-DevHelp.png editor-search-doc.png tutorial-debug-tree.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook configure-doctree-general.png kdevelop-survey.docbook empty-ide.png find-in-files.png kdevelop-ideal-mode.png configure-snippets.png problem-report-todo.png configure-adddialog-baselibs.png tutorial-hello-new2.png configure-docu-custom.png kdevelop-scripting.docbook configure-project-doc.png configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook configure-adddialog.png SF-general.png configure-file-selector.png classview.png nutshell.docbook build-commands.png project-advanced.docbook configure-project-configure.png plugin-tools.docbook build-configurations.png doctree.png class-browsers.docbook app-changelog.docbook importdirectory.png getting-started.docbook kdevelop-toplevel-mode.png app-misc-info.docbook problem-report-all-todos.png configure-doctree-bookmark.png setup.docbook file-selector.png automakemanager.png configure-project-buildconfig.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png configure-project-cpp.png ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + done + +uninstall-nls: + for base in documents-search.png configure-general.png problem-report-marks.png app-uimodes-examples.docbook createnewprojectoptions.png editing.docbook SF-indent.png automake-target-popup.png configure-select.png edit-doctree-TOC-entry.png automake-file-popup.png build-menu-automake.png doctree-reduced.png configure-project-make.png commands.docbook documentation.docbook tutorial-hello-options.png file-list-close-selected.png kdevelop-mdi-mode.png open-project.png open-recent-project.png create-new-project-cvs.png configure-docu-toc.png editor-find-menu.png configure-file-templates.png file-browsers.docbook kdevelop-tabbed-mode.png script_location.png configure-adddialog-qt.png kdevelop-install.docbook build-menu.png folded-tabs.png debugger.docbook select-user-interface-0.png filetree.png create-new-project.png configure-docu-edit.png raw-project-warning.png configure-project-run.png run-button.png select-user-interface.png applicationwizard.docbook configure-project-cppoptions.png editor-ctags-regenerate.png index.docbook doctree-add-bookmark.png configure-doctree-textsearch.png tutorial-new-project.png kdevelop-ideal-mode-0.png app-files.docbook editor-ctags-menu.png kdcop_browsing.png configure-doctree-TOC.png createnewproject.png configure-editor.png configure-doctree-DevHelp.png editor-search-doc.png tutorial-debug-tree.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook configure-doctree-general.png kdevelop-survey.docbook empty-ide.png find-in-files.png kdevelop-ideal-mode.png configure-snippets.png problem-report-todo.png configure-adddialog-baselibs.png tutorial-hello-new2.png configure-docu-custom.png kdevelop-scripting.docbook configure-project-doc.png configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook configure-adddialog.png SF-general.png configure-file-selector.png classview.png nutshell.docbook build-commands.png project-advanced.docbook configure-project-configure.png plugin-tools.docbook build-configurations.png doctree.png class-browsers.docbook app-changelog.docbook importdirectory.png getting-started.docbook kdevelop-toplevel-mode.png app-misc-info.docbook problem-report-all-todos.png configure-doctree-bookmark.png setup.docbook file-selector.png automakemanager.png configure-project-buildconfig.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png configure-project-cpp.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in documents-search.png configure-general.png problem-report-marks.png app-uimodes-examples.docbook createnewprojectoptions.png editing.docbook SF-indent.png automake-target-popup.png configure-select.png edit-doctree-TOC-entry.png automake-file-popup.png build-menu-automake.png doctree-reduced.png configure-project-make.png commands.docbook documentation.docbook tutorial-hello-options.png file-list-close-selected.png kdevelop-mdi-mode.png open-project.png open-recent-project.png create-new-project-cvs.png configure-docu-toc.png editor-find-menu.png configure-file-templates.png file-browsers.docbook kdevelop-tabbed-mode.png script_location.png configure-adddialog-qt.png kdevelop-install.docbook build-menu.png folded-tabs.png debugger.docbook select-user-interface-0.png filetree.png create-new-project.png configure-docu-edit.png raw-project-warning.png configure-project-run.png run-button.png select-user-interface.png applicationwizard.docbook configure-project-cppoptions.png editor-ctags-regenerate.png index.docbook doctree-add-bookmark.png configure-doctree-textsearch.png tutorial-new-project.png kdevelop-ideal-mode-0.png app-files.docbook editor-ctags-menu.png kdcop_browsing.png configure-doctree-TOC.png createnewproject.png configure-editor.png configure-doctree-DevHelp.png editor-search-doc.png tutorial-debug-tree.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook configure-doctree-general.png kdevelop-survey.docbook empty-ide.png find-in-files.png kdevelop-ideal-mode.png configure-snippets.png problem-report-todo.png configure-adddialog-baselibs.png tutorial-hello-new2.png configure-docu-custom.png kdevelop-scripting.docbook configure-project-doc.png configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook configure-adddialog.png SF-general.png configure-file-selector.png classview.png nutshell.docbook build-commands.png project-advanced.docbook configure-project-configure.png plugin-tools.docbook build-configurations.png doctree.png class-browsers.docbook app-changelog.docbook importdirectory.png getting-started.docbook kdevelop-toplevel-mode.png app-misc-info.docbook problem-report-all-todos.png configure-doctree-bookmark.png setup.docbook file-selector.png automakemanager.png configure-project-buildconfig.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png configure-project-cpp.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdevelop/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/SF-general.png b/tde-i18n-it/docs/kdevelop/kdevelop/SF-general.png Binary files differnew file mode 100644 index 00000000000..976328033a6 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/SF-general.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/SF-indent.png b/tde-i18n-it/docs/kdevelop/kdevelop/SF-indent.png Binary files differnew file mode 100644 index 00000000000..b6773186520 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/SF-indent.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/SF-other.png b/tde-i18n-it/docs/kdevelop/kdevelop/SF-other.png Binary files differnew file mode 100644 index 00000000000..c52a249d6ac --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/SF-other.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/adv-build-management.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/adv-build-management.docbook new file mode 100644 index 00000000000..078266649de --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/adv-build-management.docbook @@ -0,0 +1,174 @@ +<chapter id="adv-build-management"> +<title +>Gestione Avanzata della compilazione</title> +<indexterm zone="adv-build-management" +><primary +>&automake;</primary +></indexterm> + +<sect1 id="buildconfigurations"> +<title +>Configurazioni di compilazione multiple</title> +<indexterm zone="buildconfigurations" +><primary +>configurazioni di compilazione</primary +><secondary +>multiple</secondary +></indexterm> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- buildconfigurations --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="crosscompiling"> +<title +>Cross-compilazione</title> +<indexterm zone="crosscompiling" +><primary +>cross compilazione</primary +></indexterm> +<indexterm zone="crosscompiling" +><primary +>compilazione</primary +><secondary +>cross</secondary +></indexterm> +<indexterm zone="crosscompiling" +><primary +><option +>--host</option +></primary +></indexterm> + +<para +>Quando si hanno a disposizione dei cross compilatori si possono compilare i programmi per processori e sistemi operativi diversi da quello in cui viene eseguito il compilatore e &kdevelop;. Il compilatore &GNU; &gcc; può essere configurato e compilato come un cross compilatore. Consultare le <ulink url="info://gcc/Cross-Compiler" +>pagine info di GCC</ulink +> per maggiori informazioni. Alcune distribuzioni &Linux; forniscono anche pacchetti binari. </para> + +<para +>Un pacchetto basato su <application +>automake</application +> può essere facilmente cross-compilato passando l'opzione <option +>--host</option +> dello script configure e impostando le variabili d'ambiente <envar +>CC</envar +> e <envar +>CXX</envar +> sui relativi file binari dei cross compilatori. Spesso si desidera passare dalla versione cross compilata a quella compilata per il proprio sistema e viceversa. Per questo motivo è conveniente usare la capacità di &kdevelop; di creare configurazioni multiple di compilazione, come spiegato nel capitolo <xref linkend="buildconfigurations"/>. Una volta creata una nuova configurazione per la cross compilazione nella finestra di dialogo <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Opzioni progetto...</guimenuitem +></menuchoice +>, aggiungere l'opzione </para> + +<screen +><option +>--host=</option +><replaceable +>piattaforma</replaceable +></screen> + +<para +>alle opzioni di configure. Il nome <replaceable +>piattaforma</replaceable +> è una ennupla nella forma </para> + +<programlisting +>cpu-vendor-os</programlisting> +<para +>o</para> +<programlisting +>cpu-vendor-kernel-os</programlisting> + +<para +>Si può usare la forma breve per molte combinazioni, per esempio <wordasword +>i386-linux</wordasword +> o <wordasword +>arm-elf</wordasword +>. </para> + +</sect1 +> <!-- crosscompiling --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="qtembedded"> +<title +>Qt/Embedded</title> +<indexterm zone="qtembedded" +><primary +>embedded</primary +><secondary +>Qt</secondary +></indexterm> +<indexterm zone="qtembedded" +><primary +>Qt/Embedded</primary +></indexterm> +<indexterm zone="qtembedded" +><primary +>Qtopia</primary +></indexterm> +<indexterm zone="qtembedded" +><primary +>framebuffer</primary +></indexterm> + +<para +>&qte; è una versione delle librerie &Qt; che nei sistemi &Linux; non usa il sistema X window, ma disegna direttamente sul framebuffer. Perciò è interessante per sistemi embedded che hanno strette restrizioni sull'uso della memoria di sistema. Le &API; sono pienamente compatibili con quelle della versione X11. </para> + +<para +>Sviluppare applicazioni per &qte; con &kdevelop; non è molto diverso dallo sviluppo di un programma per la versione X11 di &Qt;. Di fatto, si può usare lo stesso codice per entrambe le versioni. Se si usa il gestore di progetti autoproject si può passare alla versione embedded passando allo script configure l'argomento <option +>--enable-embedded</option +>. Si può impostare questo in <guilabel +>Opzioni di configurazione</guilabel +> nella finestra di dialogo <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Opzioni progetto...</guimenuitem +></menuchoice +>. Con l'opzione <option +>--with-qt-dir=DIR</option +> si può impostare la directory in cui è installata la libreria &qte;. </para> + +<para +>Dopo aver configurato e compilato la propria applicazione con queste opzioni, verrà eseguito il link con la libreria <filename +>libqpe.so</filename +>. Questa versione dell'applicazione normalmente non funzionerà quando si usa X11: per testarla avviarla sotto il controllo dell'applicazione <application +>qvfb</application +> (&Qt; Virtual Frame Buffer). Questo viene fatto avviando <application +>qvfb</application +> ed eseguendo l'applicazione con </para> + +<screen +><command +>app <option +>-qws</option +> <option +>-display QVFb:0</option +></command +></screen> + +<para +>Naturalmente si vorrà usare una versione funzionante della propria applicazione sul processore di destinazione. Probabilmente sarà utile creare configurazioni multiple di compilazione, come spiegato prima, in modo da passare velocemente tra la versione eseguita nel proprio sistema di sviluppo e la versione eseguita sul sistema di destinazione. </para> + +<para +>Normalmente le applicazioni per &qte; vengono eseguite come applicazioni singole nei dispositivi per i quali sono state progettate. Trolltech supporta anche Qtopia, che è una collezione di applicazioni per PIM, come browser e altri che funzionano assieme in maniera consistente. Ad esempio è un ambiente standard dello Sharp Zaurus. Si possono scrivere applicazioni che si integrano in questo ambiente usando l'SDK di Qtopia, rendendo la classe della propria applicazione una sottoclasse di <classname +>QPEApplication</classname +> ed effettuando il link alle librerie <filename +>libqpe.so</filename +>. Se si sviluppa l'applicazione con il gestore di progetti autoproject si deve aggiungere <option +>--enable-qtopia</option +> agli argomenti di configure. </para> + +</sect1 +> <!-- qtembedded --> + +</chapter +> <!-- adv-build-management --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/app-changelog.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/app-changelog.docbook new file mode 100644 index 00000000000..e62c2d7f9f8 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/app-changelog.docbook @@ -0,0 +1,89 @@ +<appendix id="app-changelog"> +<title +>Modifiche</title> +<sect1 id="changes"> +<title +>Modifiche di questo documento</title> + +<itemizedlist> + <listitem> + <para +>2003-01-03 Bernd Gehrmann, Caleb Tennis <itemizedlist> + <listitem> + <para +>Struttura iniziale del manuale</para> + </listitem> + <listitem> + <para +>abbozzo dei contenuti di diversi capitoli</para> + </listitem> + </itemizedlist> + </para> + </listitem> + + + <listitem> + <para +>2004-08-01 Bernd Pol, Ian Wadham <itemizedlist> + <listitem> + <para +>Leggera riorganizzazione del manuale</para> + </listitem> + <listitem> + <para +>stesura di alcuni capitoli mancanti</para> + </listitem> + </itemizedlist> + </para> + </listitem> + + <listitem> + <para +>2005-05-02 Volker Paul — Molti cambiamenti, tra cui: <itemizedlist> + <listitem> + <para +>suddivisione di un capitolo o appendice per file</para> + </listitem> + <listitem> + <para +>aggiunto un riferimento ai comandi in base ai menu (le descrizioni non sono ancora compete)</para> + </listitem> + <listitem> + <para +>Tutorial per la procedura guidata per le applicazioni nel file getting-started.docbook</para> + </listitem> + <listitem> + <para +>riorganizzazione dei capitoli, in base al manuale di Konqueror</para> + </listitem> + <listitem> + <para +>Spostate le parti relative all'installazione, allo sviluppo su Unix e il capitolo <quote +>In poche parole</quote +> nell'appendice</para> + </listitem> + <listitem> + <para +>riscritta l'appendice sui plugin, incluso il generatore dell'elenco dei plugin listplugin.sh</para> + </listitem> + </itemizedlist> + </para> + <para +>Ancora lontano dall'essere completo, ma è un piccolo passo avanti.</para> + </listitem> + + <listitem> + <para +>2006-05-20 Bernd Pol — Riempite alcune parti che erano contrassegnate come <quote +>da scrivere</quote +>:</para> + </listitem> + +</itemizedlist> + +</sect1 +> <!-- changes --> +</appendix +> <!-- app-changelog --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/app-files.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/app-files.docbook new file mode 100644 index 00000000000..1bed1239046 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/app-files.docbook @@ -0,0 +1,1668 @@ +<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 +>File di configurazione usati da &kdevelop;</title> + +<para +>&kdevelop; utilizza un insieme di file di configurazione che sono distribuiti in varie directory. Vengono distinti in due gruppi principali: </para> +<simplelist> + <member +>I file della <link linkend="app-files-default" +>configurazione di default di &kdevelop;</link +> — che sono stati impostati quando è stato installato. </member> + <member +>I file della <link linkend="app-files-user" +>configurazione utente</link +> — che contengono le modifiche alle impostazioni di &kdevelop; e dei plugin fatte dall'utente. </member> +</simplelist> + +<sect1 id="app-files-default"> +<title +>Configurazione di default di &kdevelop;</title> + +<para +>Durante l'installazione, &kdevelop; scrive alcuni file di configurazione nelle sottodirectory della directory di installazione <filename class="directory" +>$<envar +>KDEDIR</envar +></filename +> (generalmente simile a <filename class="directory" +>/opt/kde</filename +>, <filename class="directory" +>/usr/local/kde</filename +> o a qualche altra directory di installazione definita dall'utente, vedere <link linkend="kdevelop-install" +>Installare &kdevelop;</link +>). </para> + +<sect2 id="app-files-default-config"> +<title +>Configurazione di &kdevelop;</title> + +<para +>Esiste un solo file di configurazione di &kdevelop; nella directory <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/config</filename +>: </para> +<variablelist> + <varlistentry> + <term +><filename +>kdeveloprc</filename +></term> + <listitem +><para +>Questo file contiene le impostazioni di base necessarie all'avvio di &kdevelop;. Esso verrà copiato nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config</filename +> dell'utente se &kdevelop; non troverà nessun file <filename +>kdeveloprc</filename +> in questa posizione. </para +></listitem> + </varlistentry> +</variablelist> + +</sect2 +> <!-- app-files-default-config --> + +<sect2 id="app-files-default-apps"> +<title +>Configurazione specifica delle applicazioni</title> + +<para +>Molte caratteristiche di &kdevelop; sono fornite dalle applicazioni KPart. Esse sono progettate specificatamente per essere eseguite nel framework di &kdevelop; (vedere l'appendice <link linkend="plugin-tools" +>Plugin</link +>). Ogni applicazione KPart possiede il proprio gruppo di file di configurazione le cui versioni di default vengono memorizzate in diverse sottodirectory della directory di installazione <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/</filename +>. </para> + +<para +>Esistono molte sottodirectory in <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/</filename +> contenenti le configurazioni di default, i cui nomi iniziano per kdev, e la maggior parte di esse sono utilizzate internamente da &kdevelop;. Per una maggiore leggibilità possono essere raggruppate così: <simplelist> + <member +><link linkend="app-files-default-apps-stdalone" +>Applicazioni stand-alone</link +></member> + <member +><link linkend="app-files-default-apps-task" +>Componenti per specifiche funzionalità</link +></member> + <member +><link linkend="app-files-default-apps-project" +>Componenti per la generazione di progetti</link +></member> + <member +><link linkend="app-files-default-apps-lang" +>Componenti specifici per i linguaggi</link +></member> +</simplelist> +</para> + +<itemizedlist> + <listitem id="app-files-default-apps-stdalone" +><itemizedlist> + <title +>Applicazioni Stand-alone</title> + <listitem> + <para +><filename class="directory" +>kdevelop/</filename +> — contiene vari file per la configurazione dell'IDE:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>licenses/</filename +> — contiene i testi di varie licenze.</para +></listitem> + <listitem +><para +><filename class="directory" +>pics/</filename +> — contiene le immagini usare per le schermate iniziali di &kdevelop;, dell'Assistente e del Designer.</para +></listitem> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — contiene le impostazioni del profilo di default dei plugin. (Attualmente viene fornito solo un piccolo profilo che definisce un insieme minimo di plugin attivi).</para +></listitem> + <listitem +><para +><filename +>eventsrc</filename +> — contiene le versioni localizzate di varie stringhe come <quote +>project successful</quote +>.</para +></listitem> + <listitem +><para +><filename +>kdevelopui.rc</filename +> — fornisce i principali elementi del menu e della barra degli strumenti.</para +></listitem> + <listitem +><para +><filename +>kdevhtml_partui.rc</filename +> — fornisce la voce <guimenuitem +>Stampa...</guimenuitem +> del menu <guimenu +>File</guimenu +>, la voce <guimenuitem +>Copia</guimenuitem +> del menu <guimenu +>Modifica</guimenu +> e le frecce <guilabel +>Indietro</guilabel +> e <guilabel +>Avanti</guilabel +> nella barra degli strumenti del browser, nel caso venga visualizzato un file &HTML; dal plugin <guilabel +>Documentazione</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevassistant/</filename +> — fornisce il menu e le barre degli strumenti del browser della documentazione dell'assistente di &kdevelop;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdesigner/</filename +> e <filename class="directory" +>kdevdesignerpart/</filename +> — forniscono la barra dei menu e le barre degli strumenti del Designer di &kdevelop;.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-task"> + <title +>Componenti per specifiche funzionalità</title> + <listitem id="app-files-default-abbrev"> + <para +><filename class="directory" +>kdevabbrev/</filename +> — contiene i file usati dal plugin per l'<guilabel +>espansione delle abbreviazioni</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — contiene i file di definizione delle parole chiave usate dal comando <guilabel +>Espandi Testo</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contiene i file di definizione dei modelli usati dal comando <guilabel +>Espandi Abbreviazioni</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — fornisce le voci <guimenuitem +>Espandi testo</guimenuitem +> e <guimenuitem +>Espandi abbreviazioni</guimenuitem +> del menu <guimenu +>Modifica</guimenu +>.</para +></listitem> +</itemizedlist> + </listitem> + <listitem id="app-files-default-appwizard"> + <para +><filename class="directory" +>kdevappwizard/</filename +> — contiene file usati dal componente Procedura guidata per le applicazioni:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>importfiles/</filename +> — contiene i file <filename +>.kdevelop</filename +> che controllano l'inizializzazione di un nuovo progetto.</para +></listitem> + <listitem +><para +><filename class="directory" +>imports/</filename +> — contiene i modelli per impostare i file <filename +>.desktop</filename +> specifici dei progetti.</para +></listitem> + <listitem +><para +><filename class="directory" +>template-common/</filename +> — contiene file vari comunemente inclusi nelle directory che contengono il codice sorgente dei progetti.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contiene i file di configurazione che descrivono le informazioni da includere in una data directory di un progetto.</para +></listitem> + <listitem +><para +><filename +>*.png</filename +> — immagini di anteprima dei progetti usate nella procedura guidata per le applicazioni.</para +></listitem> + <listitem +><para +><filename +>*.tar.gz</filename +> — archivi contenenti i file sorgenti da includere nella directory di un progetto appena generato.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevastyle/</filename +> — fornisce la voce <guimenuitem +>Riformatta sorgente</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — fornisce la maggior parte degli elementi nel menu <guimenu +>Compila</guimenu +> e nella <guilabel +>Barra strumenti compilazione</guilabel +>.</para +></listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview/</filename +> — contiene i file usati dal plugin <guilabel +>vista classe</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>pics/</filename +> — contiene le icone usate nell'<guilabel +>albero classi</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevclassview.tc</filename +> — fornisce la voce <guimenuitem +>Diagramma d'ereditarietà classe</guimenuitem +> nel menu <guimenu +>Progetto</guimenu +> e la casella a scelta multipla di navigazione delle classi nella <guilabel +>Barra di navigazione</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevcloser/</filename +> — contiene le voci di chiusura del menu <guimenu +>Finestra</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevctags/</filename +> — fornisce la voce <guimenuitem +>CTags</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> del plugin <guilabel +>Interfaccia CTags</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcvsservice/</filename +> — contiene l'icona usata nella linguetta <guilabel +>CvsService</guilabel +> e un breve script per la shell che aggiunge un elemento al deposito &cvs;, usati dal plugin <guilabel +>CVS Integration</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdebugger/</filename +> — fornisce le voci nel menu <guimenu +>Debug</guimenu +> per il plugin <guilabel +>Interfaccia Debugger</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdiff/</filename +> — contiene la voce <guimenuitem +>Visualizzatore differenze</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdistpart/</filename +> — la voce <guimenuitem +>Pubblicazione e distribuzione</guimenuitem +> del menu <guimenu +>Progetto</guimenu +> per il plugin <guilabel +>Final Packaging Support</guilabel +>.</para +></listitem> + <listitem id="app-files-default-kdevdoc"> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — contiene i file usati dal plugin <guilabel +>Documentazione</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>en/</filename +> e <filename class="directory" +>pics/</filename +> — contengono i file utilizzati dall'utility di ricerca <application +>htdig</application +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>tocs/</filename +> — contiene i file di descrizione del contenuto di default della documentazione di &kdevelop; (vedere la descrizione nella sezione <link linkend="toc-file-structure" +>Struttura di base dei file TOC di &kdevelop;</link +>).</para +></listitem> + <listitem +><para +><filename +>kdevpart_documentation.rc</filename +> — contiene le voci relative alle ricerche nel menu <guimenu +>Aiuto</guimenu +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevdoxygen/</filename +> — fornisce le voci di menu per il plugin <guilabel +>Doxygen</guilabel +>.</para +></listitem> + <listitem id="app-files-default-filecreate"> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — contiene i file usati dalla <guilabel +>Procedura Guidata Nuovo File</guilabel +>: <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — contiene il testo che viene inserito in un nuovo file sorgente di un determinato tipo.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — fornisce la voce <guimenuitem +>Nuovo</guimenuitem +> del menu <guimenu +>File</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — contiene le descrizioni dei tipi di file disponibili che vengono visualizzati nella vista strumenti <guilabel +>Nuovo File</guilabel +>.</para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfilter/</filename +> — fornisce le voci <guimenuitem +>Esegui Comando...</guimenuitem +> e <guimenuitem +>Selezione filtro tramite comando...</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +> usate dal plugin <guilabel +>Shell Filtering and Insertion</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfullscreen/</filename +> — fornisce la voce <guimenuitem +>Schermo intero</guimenuitem +> del menu <guimenu +>Visualizza</guimenu +> e la icona corrispondente nella barra degli strumenti.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgrepview/</filename +> — fornisce la voce <guimenuitem +>Trova nei file...</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +> usato dal plugin <guilabel +>Grep Frontend</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhistory/</filename +> — fornisce le voci <guimenuitem +>Indietro</guimenuitem +> e <guimenuitem +>Avanti</guimenuitem +> del menu <guimenu +>Visualizza</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavadebugger/</filename +> — fornisce il menu <guimenu +>Debug Java</guimenu +> per effettuare il debug di una applicazione &Java;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevoutputviews/</filename +> — fornisce le voci <guimenuitem +>Errore successivo</guimenuitem +> ed <guimenuitem +>Errore precedente</guimenuitem +> nel menu <guimenu +>Visualizza</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpartexplorer/</filename +> — fornisce la voce <guimenuitem +>Part Explorer</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> usata dal plugin <guilabel +>Part Explorer</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevquickopen/</filename +> — fornisce la voce <guimenuitem +>Apertura rapida file...</guimenuitem +> nel menu <guimenu +>File</guimenu +> e le voci <guimenuitem +>Apertura rapida classe...</guimenuitem +> e <guimenuitem +>Apertura rapida metodo...</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> usato dal plugin <guilabel +>Apertura rapida</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevregexptest/</filename +> — fornisce la voce <guimenuitem +>Debug dell'espressione regolare...</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +> usato dal plugin <guilabel +>Regular Expression Tester</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevreplace/</filename +> — fornisce la voce <guimenuitem +>Trova-Seleziona-Sostituisci...</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +> usata del plugin <guilabel +>Replace Part</guilabel +>.</para +></listitem> + <listitem id="app-files-default-tips" +><para +><filename class="directory" +>kdevtipofday/</filename +> — fornisce la voce <guimenuitem +>Suggerimento del giorno</guimenuitem +> nel menu <guimenu +>Aiuto</guimenu +> e il file HTML che contiene i suggerimenti disponibili.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtools/</filename +> — controlla le varie voci di menu create dalle impostazioni <guimenu +>Menu strumenti</guimenu +> e <guilabel +>Menu strumenti esterno</guilabel +> del plugin <guilabel +>Tools Menu Addition</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevvalgrind/</filename +> — fornisce le voci <guimenuitem +>Controlla perdita di memoria valgrind</guimenuitem +> e <guimenuitem +>Profilo con KCachegrind</guimenuitem +> nel menu <guimenu +>Debug</guimenu +> usate dal plugin <guilabel +>Valgrind Frontend</guilabel +>.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-project"> + <title +>Componenti per la generazione di progetti</title> + <listitem +><para +><filename class="directory" +>kdevadaproject/</filename +> — fornisce le voci nel menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti per la compilazione di applicazioni Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevantproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> quando si usa il generatore di progetto Ant.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti quando di lavora con il generatore di progetto &automake; basato sugli strumenti &GNU;. Inoltre fornisce le voci <guimenuitem +>Aggiungi traduzione...</guimenuitem +> e <guimenuitem +>Configurazione compilazione</guimenuitem +> al menu <guimenu +>Progetti</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcustomproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti quando il progetto viene gestito da Makefile personalizzati.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgenericproject/</filename +> — contiene le definizioni di menu per un generatore di progetto generico sperimentale. Attualmente (versione 3.1.0) non è usato.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhaskellproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti per compilare un'applicazione Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti per compilare un'applicazione Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtrollproject/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti per compilare un'applicazione usando il gestore di progetto QMake di &Qt;.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-lang"> + <title +>Componenti specifici per i linguaggi</title> + <listitem +><para +><filename class="directory" +>kdevadasupport/</filename +> — fornisce le voci del menu <guimenu +>Strumenti</guimenu +> e le icone nella barra degli strumenti necessarie a sviluppare applicazioni Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevbashsupport/</filename +> — fornisce le voci del menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti necessarie a sviluppare script per Bash.</para +></listitem> + <listitem id="app-files-default-apps-lang-cpp"> + <para +><filename class="directory" +>kdevcppsupport/</filename +> — contiene i file usati dalla procedura guidata per la applicazioni per costruire applicazioni C++: </para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>newclass/</filename +> — contiene i modelli di codice sorgente e di intestazione dai quali la procedura guidata per le applicazioni costruisce i file sorgenti corrispondenti.</para +></listitem> + <listitem +><para +><filename class="directory" +>subclassing/</filename +> — contiene i modelli con i quali la procedura guidata per le applicazioni imposta le dichiarazioni/definizioni di classe nei file sorgenti.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates</filename +> — contiene i modelli con i quali la procedura guidata per le applicazioni imposta i file sorgenti e i file di intestazione di default usati dalla procedura guidata Nuovo File. </para +></listitem> + <listitem +><para +><filename +>configuration</filename +> — modello fittizio per aggiungere macro.</para +></listitem> + <listitem +><para +><filename +>kdevcppsupport.rc</filename +> — fornisce le voci <guimenuitem +>Completa testo</guimenuitem +> e <guimenuitem +>Crea membro</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +>, la voce <guimenuitem +>Cambia Intestazione/Implementazione</guimenuitem +> per il menu <guimenu +>Visualizza</guimenu +> e l'icona <guimenuitem +>Nuova Classe</guimenuitem +> per la <guimenu +>Barra di navigazione</guimenu +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevfortransupport/</filename +> — fornisce le voci nel menu <guimenu +>Compila</guimenu +> necessarie per sviluppare applicazioni Fortran.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhaskellsupport/</filename +> — fornisce le voci nel menu <guimenu +>Compila</guimenu +> e le corrispondenti icone nella barra degli strumenti necessarie per sviluppare applicazioni Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavasupport/</filename +> — contiene le definizioni UI necessarie per sviluppare applicazioni &Java;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalsupport/</filename +> — contiene le definizioni UI necessarie per sviluppare applicazioni Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevperlsupport/</filename +> — fornisce le voci nei menu <guimenu +>Progetto</guimenu +> e <guimenu +>Aiuto</guimenu +> necessarie per sviluppare script Perl.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevphpsupport/</filename +> — contiene i file di definizione delle funzioni UI e PHP necessari per lo sviluppo di script PHP.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpythonsupport/</filename +> — fornisce le voci nei menu <guimenu +>Progetto</guimenu +> e <guimenu +>Aiuto</guimenu +> e le icone corrispondenti nella barra degli strumenti necessarie per sviluppare script Python.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevrubysupport/</filename +> — fornisce le voci nel menu <guimenu +>Progetto</guimenu +> e le corrispondenti icone nella barra degli strumenti necessarie per sviluppare script Ruby.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevscriptproject/</filename +> — fornisce le definizioni UI necessarie per sviluppare progetti personalizzati. Attualmente (versione 3.1.0) non è usato.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevsqlsupport/</filename +> — fornisce le definizioni UI necessarie per sviluppare progetti SQL. Attualmente (versione 3.1.0) non è usato.</para +></listitem> + </itemizedlist +></listitem> + +</itemizedlist> + +</sect2 +> <!-- app-files-default-apps --> + +</sect1 +> <!-- app-files-default --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-user"> +<title +>Configurazione utente</title> + +<para +>Tutte le informazioni sulle impostazioni utente sono contenute in due sottodirectory di <filename class="directory" +>$<envar +>KDEHOME</envar +></filename +>: <simplelist> + <member +><link linkend="app-files-user-apps" +>Configurazione specifica dell'applicazione</link +> nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +> e</member> + <member +><link linkend="app-files-user-config" +>File di configurazione delle risorse</link +> nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</member> +</simplelist> +</para> + +<sect2 id="app-files-user-apps"> +<title +>Configurazione specifica dell'applicazione</title> + +<para +>Tutte le modifiche fatte alla <link linkend="app-files-default" +>Configurazione di default di &kdevelop;</link +> e le impostazioni specifiche dell'utente che non sono contenute nei <link linkend="app-files-user-config" +>file di configurazione delle risorse</link +> si trovano nelle sottodirectory <filename +>kdev...</filename +> della directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +>. </para> +<para +>Comunque la maggior parte di questi file di configurazione sono usati da diversi plugin per visualizzare menu specifici e/o elementi della barra degli strumenti. Sono di interesse solo nel caso di inconvenienti nell'interfaccia utente. </para> +<note +><para +>Se i contenuti di queste directory rispecchiano le impostazioni di configurazione di default, significa che &kdevelop; ha copiato le impostazioni dalla directory <filename class="directory" +>$<envar +>KDEDIR</envar +>/apps/</filename +> nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/apps/</filename +> durante il suo primo avvio. Tutte le successive modifiche influenzeranno solo questa copia: la configurazione di default non verrà modificata. </para +></note> + +<itemizedlist> + <listitem> + <para +><filename class="directory" +>kdevabbrev/</filename +> — contiene i file usati dal plugin per l'<guilabel +>espansione delle abbreviazioni</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — attualmente vuoto; &kdevelop; usa i <link linkend="app-files-default-abbrev" +>file di definizione delle parole chiave</link +> per i comandi <guilabel +>Espandi testo</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — contiene i file dei modelli delle definizioni modificati dall'utente usati dal comando <guilabel +>Espandi abbreviazioni</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — fornisce le voci <guimenuitem +>Espandi testo</guimenuitem +> e <guimenuitem +>Espandi abbreviazioni</guimenuitem +> del menu <guimenu +>Modifica</guimenu +>.</para +></listitem> + </itemizedlist +> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevappwizard/</filename +> — fornisce solo le voci <guimenuitem +>Nuovo Progetto...</guimenuitem +> e <guimenuitem +>Importa progetto esistente...</guimenuitem +> del menu <guimenu +>Progetto</guimenu +>. La procedura guidata per le applicazioni usa in realtà le <link linkend="app-files-default-appwizard" +>impostazioni di configurazione di default</link +> per svolgere le sue operazioni.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevastyle/</filename +> — fornisce la voce <guimenuitem +>Riformatta sorgente</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevautoproject/</filename +> — fornisce le voci nel menu <guimenu +>Progetto</guimenu +> e nella <guilabel +>Barra strumenti compilazione (KDevelop)</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview/</filename +> — fornisce la voce <guimenuitem +>Diagramma d'ereditarietà classe</guimenuitem +> nel menu <guimenu +>Progetto</guimenu +> e la casella a scelta multipla nella <guilabel +>Barra di navigazione</guilabel +> dal plugin <guilabel +>Class View</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcloser/</filename +> — fornisce la voce <guimenuitem +>Chiudi selezionato</guimenuitem +> nel menu <guimenu +>Finestra</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcppsupport/</filename +> — contiene la configurazione effettiva usata dalla procedura guidata per le applicazioni per compilare le applicazioni C++. Essa tuttavia legge la parte principale della sua configurazione direttamente dalla <link linkend="app-files-default-apps-lang-cpp" +>directory di configurazione di default</link +>. </para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>newclass/</filename +> — contiene i modelli di file sorgente e intestazione usati dalla procedura guidata per le applicazione per costruire i corrispondenti file sorgenti.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>pcs/</filename +> — contiene i file di database usati da &kdevelop; per costruire il file Pesistent Code Store (<filename +>.pcs</filename +>) di un progetto &kde; in C++.</para> + </listitem> + <listitem> + <para +><filename +>kdevcppsupport.rc</filename +> — fornisce le voci <guimenuitem +>Completa testo</guimenuitem +> e <guimenuitem +>Crea membro</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +>, la voce <guimenuitem +>Cambia Intestazione/Implementazione</guimenuitem +> per il menu <guimenu +>Visualizza</guimenu +> e l'icona <guimenuitem +>Nuova Classe</guimenuitem +> per la <guimenu +>Barra di navigazione</guimenu +>.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevctags/</filename +> — fornisce la voce <guimenuitem +>CTags</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> del plugin <guilabel +>Interfaccia CTags</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdebugger/</filename +> — fornisce le voci nel menu <guimenu +>Debug</guimenu +> per il plugin <guilabel +>Interfaccia Debugger</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdiff/</filename +> — contiene la voce <guimenuitem +>Visualizzatore differenze</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — contiene i file usati dal plugin <guilabel +>Documentazione</guilabel +> in aggiunta ai <link linkend="app-files-default-kdevdoc" +>file di configurazione di default</link +>.</para> + <para +>I reali file di impostazione della documentazione sono memorizzati nei <link linkend="app-files-user-config-doc" +>file <quote +><filename +>doc...pluginrc</filename +></quote +></link +> nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>bookmarks/</filename +> — contiene gli elementi nella linguetta <guilabel +>Segnalibri</guilabel +> del plugin <guilabel +>Documentazione</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>index/</filename +> — contiene file della cache usati da &kdevelop; per velocizzare le ricerche nella documentazione indicizzata nella linguetta <guilabel +>Indice</guilabel +> del plugin <guilabel +>Documentazione</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>search/</filename +> — contiene file usati dall'utility <application +>htdig</application +> che effettua le ricerche nella linguetta <guilabel +>Cerca</guilabel +> del plugin <guilabel +>Documentazione</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename +>kdevpart_documentation.rc</filename +> — contiene le voci relative alle ricerche nel menu <guimenu +>Aiuto</guimenu +>.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdoxygen/</filename +> — fornisce le voci di menu per il plugin <guilabel +>Doxygen</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevelop/</filename +> — contiene alcune impostazioni che &kdevelop; usa per il suo setup di base.</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — fornisce le impostazioni di profile per i plugin. (Inizialmente sarà presente solo un profilo <filename +>FullIDE</filename +> che definisce l'insieme iniziale di plugin attivi).</para +></listitem> + <listitem +><para +><filename +>kdevelopui.rc</filename +> — fornisce i principali elementi del menu e della barra degli strumenti.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — contiene i file usati dalla <guilabel +>Procedura Guidata Nuovo File</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — fornisce il testo che viene inserito in un nuovo file sorgente di un determinato tipo. Nella directory dei <link linkend="app-files-default-filecreate" +>file della configurazione di default</link +> si trovano ulteriori modelli.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — fornisce la voce <guimenuitem +>Nuovo</guimenuitem +> del menu <guimenu +>File</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — contiene le descrizioni dei tipi di file disponibili che vengono visualizzati nella vista strumenti <guilabel +>Nuovo File</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilter/</filename +> — fornisce le voci <guimenuitem +>Esegui Comando...</guimenuitem +> e <guimenuitem +>Selezione filtro tramite comando...</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +> usate dal plugin <guilabel +>Shell Filtering and Insertion</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfullscreen/</filename +> — fornisce la voce <guimenuitem +>Schermo intero</guimenuitem +> del menu <guimenu +>Visualizza</guimenu +> e la icona corrispondente nella barra degli strumenti.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevgrepview/</filename +> — fornisce la voce <guimenuitem +>Trova nei file...</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +> usato dal plugin <guilabel +>Grep Frontend</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevoutputviews/</filename +> — fornisce le voci <guimenuitem +>Errore successivo</guimenuitem +> ed <guimenuitem +>Errore precedente</guimenuitem +> nel menu <guimenu +>Visualizza</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevpartexplorer/</filename +> — fornisce la voce <guimenuitem +>Part Explorer</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> usata dal plugin <guilabel +>Part Explorer</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevquickopen/</filename +> — fornisce la voce <guimenuitem +>Apertura rapida file...</guimenuitem +> nel menu <guimenu +>File</guimenu +> e le voci <guimenuitem +>Apertura rapida classe...</guimenuitem +> e <guimenuitem +>Apertura rapida metodo...</guimenuitem +> nel menu <guimenu +>Strumenti</guimenu +> usato dal plugin <guilabel +>Apertura rapida</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevregexptest/</filename +> — fornisce la voce <guimenuitem +>Debug dell'espressione regolare...</guimenuitem +> del menu <guimenu +>Strumenti</guimenu +> usato dal plugin <guilabel +>Regular Expression Tester</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevreplace/</filename +> — fornisce la voce <guimenuitem +>Trova-Seleziona-Sostituisci...</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +> usata del plugin <guilabel +>Replace Part</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtipofday/</filename +> — fornisce la voce <guimenuitem +>Suggerimento del giorno</guimenuitem +> del menu <guimenu +>Aiuto</guimenu +>. Il file HTML contenente i suggerimenti disponibili è presente solo come <link linkend="app-files-default-tips" +>file di configurazione di default</link +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtools/</filename +> — controlla le varie voci di menu create dalle impostazioni <guimenu +>Menu strumenti</guimenu +> e <guilabel +>Menu strumenti esterno</guilabel +> del plugin <guilabel +>Tools Menu Addition</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevvalgrind/</filename +> — fornisce le voci <guimenuitem +>Controlla perdita di memoria valgrind</guimenuitem +> e <guimenuitem +>Profilo con KCachegrind</guimenuitem +> nel menu <guimenu +>Debug</guimenu +> usate dal plugin <guilabel +>Valgrind Frontend</guilabel +>.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-apps --> + +<sect2 id="app-files-user-config"> +<title +>File di configurazione delle risorse</title> + +<para +>Ci sono due gruppi di file di configurazione di &kdevelop; nella directory <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config</filename +>, che si distinguono dalla sequenza di caratteri che compone il nome: <simplelist> + <member +>Se il nome è del tipo <quote +><filename +>doc...pluginrc</filename +></quote +> sono <link linkend="app-files-user-config-doc" +>file usati dal plugin della documentazione</link +>.</member> + <member +>Se il nome è del tipo <quote +><filename +>kdev...rc</filename +></quote +> sono <link linkend="app-files-user-config-kdev" +>file usati da &kdevelop;</link +> e dai suoi plugin.</member> +</simplelist> +</para> + +<itemizedlist id="app-files-user-config-kdev"> +<title +>File di configurazione usati da &kdevelop;</title> + <listitem> + <para +><filename +>kdevabbrevrc</filename +> — contiene la configurazione delle <guilabel +>Abbreviazioni</guilabel +> del plugin <guilabel +>Abbreviation Expansion</guilabel +>.</para> + <note +><para +>Viene registrato solo se le abbreviazioni verranno usate o no. Le definizioni delle nuove abbreviazioni sono inserite nel file <filename +>$<envar +>KDEHOME</envar +>/share/apps/kdevabbrev/templates/templates</filename +>.</para +></note> + </listitem> + <listitem> + <para +><filename +>kdevassistantrc</filename +> — contiene alcune informazioni di configurazione specifiche dell'Assistente di &kdevelop;.</para> + <note +><para +>La maggior parte delle impostazioni viene condivisa con il file <filename +>kdeveloprc</filename +> dell'IDE.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevassistantuimode4rc</filename +> — contiene la configurazione MDI (posizioni di aggancio, &etc;) dell'Assistente di &kdevelop;.</para +></listitem> + <listitem> + <para +><filename +>kdevclassviewrc</filename +> — contiene le impostazioni della <guilabel +>Modalità vista</guilabel +> della linguetta <guilabel +>Classi</guilabel +> fornita dal plugin <guilabel +>Class View</guilabel +>.</para> + <note +><para +>Anche se il plugin <guilabel +>Class View</guilabel +> può essere disabilitato per un dato progetto, questa è una impostazione globale. Ogni modifica si rifletterà globalmente quando verrò chiuso il progetto corrente e quindi coinvolgerà tutti i progetti che verranno successivamente caricati.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevcppsupportrc</filename +> — contiene le impostazioni inserite nella finestra di dialogo <guilabel +>Generatore classe C++</guilabel +> che vengono usate per inizializzare i file sorgente CPP.</para +></listitem> + <listitem +><para +><filename +>kdevdocumentationrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Documentazione</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdeveloprc</filename +> — contiene le configurazioni globali dell'IDE e dell'Assistente di &kdevelop;.</para +></listitem> + <listitem +><para +><filename +>kdevelopuimode4rc</filename +> — contiene le impostazioni della modalità MDI dell'IDE &kdevelop; (posizioni di aggancio, &etc;).</para +></listitem> + <listitem +><para +><filename +>kdevfileselectorrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Selettore File</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevfileviewrc</filename +> — contiene la configurazione del colore dei nomi dei file usata per la visualizzazione nel plugin <guilabel +>CVS Integration (Cervisia)</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevfilterrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Shell Filtering and Insertion</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevgrepviewrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Grep Frontend</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevsnippetrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Frammenti di codice</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevtoolsrc</filename +> — contiene le impostazioni usate dal plugin <guilabel +>Tools Menu Addition</guilabel +>.</para +></listitem> +</itemizedlist> + +<itemizedlist id="app-files-user-config-doc"> +<title +>File di configurazione usati dal plugin Documentazione</title> + <listitem +><para +><filename +>docchmpluginrc</filename +> — contiene le informazioni relative ai file di aiuto &Microsoft; CHM definite nella finestra di configurazione <guilabel +>Raccolta Documentazione CHM</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>doccustompluginrc</filename +> — contiene le informazioni sui file di documentazione personalizzati definite nella finestra <guilabel +>Raccolta documentazione personalizzata</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docdevhelppluginrc</filename +> — contiene le informazioni sui file di documentazione DevHelp di GNOME 2 definite nella finestra <guilabel +>Raccolta documentazione DevHelp</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docdoxygenpluginrc</filename +> — contiene le informazioni sulla documentazione API generata da Doxygen definite nella finestra <guilabel +>Raccolta documentazione Doxygen</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>dockdevtocpluginrc</filename +> — contiene le informazioni sui file di documentazione KDevelopTOC definite nella finestra <guilabel +>TOC della raccolta documentazione KDevelop</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>docqtpluginrc</filename +> — contiene le informazioni sui file della documentazione Qt inclusi nella finestra <guilabel +>Raccolta documentazione Qt</guilabel +>.</para +></listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-config --> + +</sect1 +> <!-- app-files-user --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-project"> +<title +>Configurazione del progetto</title> + +<para +>La maggior parte della configurazione del progetto viene conservata nei file di configurazione <filename +><nome-progetto>.kdevelop</filename +> e <filename +><nome-progetto>.kdevses</filename +> invece che in file separati come le altre configurazioni globali. Questi file contengono: </para> +<simplelist> + <member +><filename +><nome-progetto>.kdevelop</filename +> — informazioni sulla configurazione globale del progetto.</member> + <member +><filename +><nome-progetto>.kdevses</filename +> — informazioni sulla configurazione necessarie per ripristinare i comportamenti specifici della sessione in esecuzione.</member> +</simplelist> +<para +>Sono file in formato &XML;; possono essere visualizzati e modificati (con cautela) con qualunque editor di testo. </para> + +<sect2> +<title +>File contenitori persistenti per il codice </title> + +<para +>Esiste un terzo file di configurazione del progetto, il contenitore persistente per il codice <filename +><nome-progetto>.kdevelop.pcs</filename +>. È un file binario che contiene una cache per il parser in modo da velocizzare la sequenza di caricamento del progetto. Inoltre, il contenitore persistente per il codice conserva le informazioni usate dal componente <guilabel +>Completamento codice</guilabel +>. </para> + +<note +><para +>Possono esistere ulteriori file di contenitore persistente per il codice nella linguetta <guilabel +>Completamento codice</guilabel +> della finestra di configurazione <guilabel +>Specifica del C++</guilabel +>. Le informazioni su questi file <filename +>.pcs</filename +> aggiuntivi vengono conservate globalmente nella directory <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-it/docs/kdevelop/kdevelop/app-menu.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/app-menu.docbook new file mode 100644 index 00000000000..bd14982eb22 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/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 +>Menu e barre degli strumenti</title> + +<para +>(... da scrivere ...) </para> + +<sect1 id="app-menus-menu"> +<title +>Menu</title> + +<para +>(... da scrivere ...) </para> + +<sect2 id="app-menus-menu-common"> +<title +>Menu generali</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- app-menus-menu-common --> + +<sect2 id="app-menus-menu-project"> +<title +>Menu specifici del progetto</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- app-menus-menu-project --> + +<sect2 id="app-menus-menu-specific"> +<title +>Menu specifici dei plugin</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- app-menus-menu-specific --> + +</sect1 +> <!-- app-menus-menu --> + +<sect1 id="app-menus-tool"> +<title +>Barre degli strumenti</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- app-menus-tool --> + +</appendix +> <!-- app-menus --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/app-misc-info.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/app-misc-info.docbook new file mode 100644 index 00000000000..e1180b7b814 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/app-misc-info.docbook @@ -0,0 +1,28 @@ +<appendix id="app-misc-info"> +<title +>Ulteriori informazioni</title> +<sect1 id="gettinginformation"> +<title +>Ottenere informazioni</title> +<para +>(... da scrivere ...) </para> +</sect1 +> <!-- gettinginformation --> + +<sect1 id="app-reporting-bugs"> +<title +>Segnalazione dei bug</title> +<para +>(... da scrivere ...) </para> +</sect1 +> <!-- app-reporting-bugs --> + +<sect1 id="app-licensing"> +<title +>Licenza</title> +&underFDL; &underGPL; </sect1 +> <!-- app-licensing --> +</appendix +> <!-- app-misc-info --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/app-uimodes-examples.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/app-uimodes-examples.docbook new file mode 100644 index 00000000000..150dc7bf70e --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/app-uimodes-examples.docbook @@ -0,0 +1,174 @@ +<appendix id="app-uimodes-examples"> +<title +>Esempi delle modalità dell'interfaccia utente di &kdevelop;</title> + +<sect1 id="ideal-desc"> +<title +>Modalità IDEAl</title> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-ideal-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Schermata</phrase +></textobject> + <caption +><para +>Modalità IDEAl di &kdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-ideal-mode-0.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Schermata</phrase +></textobject> + <caption +><para +>Modalità IDEAl di &kdevelop; con le linguette chiuse</para +></caption> + </mediaobject> +</screenshot> + +<para +>Questa schermata di esempio illustra uno dei principali vantaggi della modalità IDEAl: rende disponibile una grande area di lavoro. Tutte le viste degli strumenti sono disponibili facendo clic sulla linguetta corrispondente. </para> +<para +>Probabilmente servirà un po' di tempo per prendere confidenza con le icone nella barra delle linguette. Se si è disorientati si può posizionare il mouse su una linguetta e aspettare alcuni secondi: apparirà una descrizione di aiuto. In questa schermata viene mostrato l'aiuto corrispondente al <quote +>Gestore Automake</quote +>, che descrive la linguetta inferiore della barra destra. </para> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +</sect1 +> <!-- ideal-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="mdi-desc"> +<title +>Modalità finestre childframe</title> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-mdi-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Schermata</phrase +></textobject> + <caption +><para +>Modalità finestre childframe di &kdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +</sect1 +> <!-- mdi-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="tabbed-desc"> +<title +>Modalità a schedario</title> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-tabbed-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Schermata</phrase +></textobject> + <caption +><para +>Modalità a schedario di &kdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +</sect1 +> <!-- tabbed-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="toplevel-desc"> +<title +>Modalità finestra toplevel</title> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-toplevel-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Schermata</phrase +></textobject> + <caption +><para +>Modalità finestra toplevel di &kdevelop;</para +></caption> + </mediaobject> +</screenshot> + +<para +>Fare clic <link linkend="uimodes-survey" +>qui</link +> per tornare alla pagina delle modalità. </para> + +</sect1 +> <!-- toplevel-desc --> + +</appendix +> <!-- app-uimodes-examples --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/applicationwizard.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/applicationwizard.docbook new file mode 100644 index 00000000000..ba0451e5ed9 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/applicationwizard.docbook @@ -0,0 +1,1378 @@ +<chapter id="applicationwizard"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Primi passi — la procedura guidata per le applicazioni</title> +<!-- FIXME (bp, 2006-06-18) This is a misnomer. It should be something like --> +<!-- Working With Projects --> +<!-- featuring the application manager as part of the New Projects section. --> + +<indexterm zone="applicationwizard"> + <primary +>procedura guidata per le applicazioni</primary +></indexterm> + +<para +>In &kdevelop; lo sviluppo di software è organizzato in <emphasis +>progetti</emphasis +>. Un progetto include tutto il necessario per programmare: i file sorgente, i file di dati, le necessarie funzioni di gestione come il sistema make, l'accesso ai componenti e agli strumenti necessari per rendere l'applicazione funzionante. </para> +<para +>L'organizzazione del lavoro di sviluppo in progetti permette di gestire facilmente tutte le attività e risulta molto pratico se si lavora su diverse applicazioni contemporaneamente. Si indica a &kdevelop; il progetto a cui si vuole lavorare e si procede dal punto dove è stato lasciato. </para> + +<sect1 id="new-projects"> +<title +>Nuovi progetti</title> + +<!-- TODO (bp, 2006-06-18) This whole section must be completely rewritten. --> +<!-- There is no need for a tutorial habit anymore. --> + +<indexterm zone="new-projects"> + <primary +>progetto</primary> + <secondary +>nuovo</secondary +></indexterm> + +<para +>Quando si vuole iniziare un nuovo progetto di programmazione, vengono svolte parecchie procedure di setup: l'impostazione di una struttura di directory, la creazione dei file sorgente e header, l'inizializzazione del sistema make, ecc. </para> +<para +>&kdevelop; fornisce un sistema semplice per iniziare un nuovo progetto di programmazione — la <emphasis +>procedura guidata per le applicazioni</emphasis +>. La si può trovare al menu <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Nuovo Progetto</guimenuitem +></menuchoice +>. </para> +<para +>Usando la procedura guidata sono necessarie solo poche fasi per iniziare un nuovo progetto: </para> +<orderedlist> + <listitem +><para +><link linkend="new-projects-start-type" +>Selezionare il linguaggio di programmazione</link +> che si vuole usare e il tipo di applicazione da costruire scegliendo da una serie di modelli predefiniti. </para +></listitem> + <listitem +><para +><link linkend="new-projects-start-general" +>Fornire alcune informazioni generali</link +> come il nome dell'applicazione, la directory dove essa deve essere costruita, ecc. </para +></listitem> + <listitem +><para +>Decidere se si vuole usare un <link linkend="new-projects-start-cvs" +>version control system</link +>, come ad esempio CVS e se necessario fornire gli eventuali dati necessari. </para +></listitem> + <listitem +><para +>Impostare i modelli per <link linkend="new-projects-start-templates" +>i file sorgente e header</link +> (se possibile). </para +></listitem> + <listitem +><para +>Infine la procedura guidata <link linkend="new-projects-start-build" +>preparerà tutto il necessario</link +>, come la struttura della directory, i modelli dei file sorgente/header, gli strumenti di gestione come make, &etc; </para +></listitem> +</orderedlist> +<para +>Voilà — è tutto. La procedura guidata creerà un insieme di file, con i quali si potrà facilmente iniziare a lavorare. </para> +<para +>Adesso si scenderà maggiormente nei dettagli... </para> + +<sect2 id="new-projects-start"> +<title +>Fasi preliminari</title> + +<indexterm zone="new-projects-start"> + <primary +>finestra di dialogo</primary> + <secondary +>Creare un nuovo progetto</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>progetto</primary> + <secondary +>Creare un nuovo progetto</secondary> + <tertiary +>finestra di dialogo</tertiary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>progetto</primary> + <secondary +>modelli</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>modelli</primary> + <secondary +>progetto</secondary +></indexterm> + +<para +>Per creare un nuovo progetto con &kdevelop;, selezionare <guimenuitem +>Nuovo Progetto...</guimenuitem +> dal menu <guimenu +>Progetto</guimenu +>. Apparirà la finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +> mostrando la pagina <guilabel +>Generale</guilabel +>: </para> + +<screenshot id="screenshot-newprojectwizard"> + <mediaobject> + <imageobject> + <imagedata fileref="create-new-project.png" format="PNG"/> + </imageobject> + <caption +><para +>Finestra di dialogo per creare un nuovo progetto </para +></caption> + </mediaobject> +</screenshot> + +<para +>Come si può vedere, la finestra di dialogo è divisa in una parte superiore e una inferiore. In quella superiore si può decidere il linguaggio di programmazione e il tipo di applicazione, mentre in quella inferiore sono presenti alcune informazioni generali. </para> + +<sect3 id="new-projects-start-type"> +<title +>Selezionare il linguaggio di programmazione e il tipo di applicazione</title> + +<indexterm zone="new-projects-start-type"> + <primary +>progetto</primary> + <secondary +>tipo di applicazione</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>progetto</primary> + <secondary +>linguaggio di programmazione</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>progetto</primary> + <secondary +>linguaggio</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>linguaggio</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>linguaggio di programmazione</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>applicazione</primary> + <secondary +>tipo</secondary +></indexterm> + +<para +>La selezione viene effettuata nella parte sinistra della zona superiore, dove è presente una lista di cartelle corrispondenti a vari linguaggi di programmazione, per esempio: </para> + +<itemizedlist> + <listitem +><para +>Ada <indexterm> + <primary +>Ada</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C <indexterm> + <primary +>C</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C++ <indexterm> + <primary +>C++</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Database (Progetti SQL) <indexterm> + <primary +>SQL</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + <indexterm> + <primary +>Database</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Fortran <indexterm> + <primary +>Fortran</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Haskell <indexterm> + <primary +>Haskell</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Java <indexterm> + <primary +>Java</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>PHP <indexterm> + <primary +>PHP</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Pascal <indexterm> + <primary +>Pascal</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Perl <indexterm> + <primary +>Perl</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Python <indexterm> + <primary +>Python</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Ruby <indexterm> + <primary +>Ruby</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Shell (Script per la shell Bash) <indexterm> + <primary +>Bash</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + <indexterm> + <primary +>shell</primary> + <secondary +>nuovo progetto</secondary +></indexterm> + </para +></listitem> +</itemizedlist> + +<para +>Più precisamente queste cartelle non contengono i veri strumenti di programmazione, ma dei <emphasis +>modelli</emphasis +> predefiniti che possono essere usati come punto di partenza per la programmazione in quel particolare linguaggio. Per avere un'idea di quello che viene fornito, aprire le varie cartelle. In alcune di esse saranno presenti una serie di sottocartelle, mentre in altre ci saranno alcuni semplici elementi. Le sottocartelle organizzano i modelli disponibili a seconda dei vari compiti, mentre gli elementi rappresentano dei modelli che possono essere selezionati. </para> +<para +>Non si scenderà ulteriormente nei dettagli su quale compito viene svolto dai vari modelli, ma è semplice scoprirlo. Quando si seleziona un elemento vengono fornite alcune informazioni nei campi a destra. Più in basso si troverà una <emphasis +>breve descrizione</emphasis +> di cosa dovrebbe fare il modello. In alto, se disponibile, verrà mostrata un'immagine dell'applicazione che verrà prodotta dal modello una volta compilata e avviata senza modifiche. Normalmente questa immagine è uno <emphasis +>screenshot</emphasis +> della finestra principale dell'applicazione. </para> +<para +>Per prima cosa, selezionare il modello che si adatta meglio agli scopi della propria applicazione. Poi inserire le proprietà generali nei campi in basso come mostrato in seguito. </para> + +<formalpara> +<title +>Selezionare un sistema di gestione dei progetti</title> +<para +>Ogni modello è legato ad uno specifico <link linkend="makesystems" +>Sistema di gestione dei progetti</link +>, che attualmente non può essere scelto liberamente. Si deve trovare un modello che corrisponda alle proprie necessità oppure modificare il progetto dopo la sua creazione. </para> +</formalpara> + +</sect3 +> <!-- new-projects-start-type --> + +<sect3 id="new-projects-start-general"> +<title +>Fornire le informazioni generali</title> + +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>proprietà</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>proprietà</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>applicazione</primary> + <secondary +>nome</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>nome</primary> + <secondary +>applicazione</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>directory</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>directory</primary> + <secondary +>progetto</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>percorso</primary> + <secondary +>nuovo progetto</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>autore</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>email</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>autore</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>email</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>main.cpp</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>main.cpp</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>progetto</primary> + <secondary +>licenza</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>licenza</primary +></indexterm> + +<para +>La parte più in basso della pagina <guilabel +>Generale</guilabel +> della finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +> contiene un gruppo di campi chiamati <guilabel +>Proprietà</guilabel +> che devono essere compilati in modo che la procedura guidata sappia come costruire la struttura iniziale del progetto. </para> +<formalpara> +<title +>Nome dell'applicazione</title> +<para +>Ovviamente l'applicazione deve avere un nome. Inserirlo nel campo più in alto del riquadro <guilabel +>Proprietà</guilabel +> chiamato <guilabel +>Nome Applicazione</guilabel +>. Nell'esempio è stato usato il nome <quote +>NuovaApplicazione</quote +>. </para> +</formalpara> +<para +>I caratteri speciali vengono rifiutati; gli unici caratteri ammessi sono: <itemizedlist> + <listitem +><para +>caratteri maiuscoli e minuscoli</para +></listitem> + <listitem +><para +>numeri</para +></listitem> + <listitem +><para +>il carattere underline</para +></listitem> +</itemizedlist> +</para> +<para +>Questa restrizione è necessaria poiché la procedura guidata usa il nome dell'applicazione per costruire <emphasis +>i nomi di alcune classi</emphasis +>, quindi questo nome dovrà attenersi alle regole del linguaggio di programmazione usato. </para> +<formalpara> +<title +>Directory del progetto</title> +<para +>Nella linea inferiore dell'area <guilabel +>Proprietà</guilabel +> è presente il campo <guilabel +>Posizione Finale</guilabel +> e visualizza la directory dove verrà creata l'applicazione. </para> +</formalpara> +<para +>Mentre si scrive il nome si noterà che la procedura guidata ripete il proprio input alla fine della linea <guilabel +>Posizione Finale</guilabel +>, usando solo i caratteri minuscoli. </para> +<para +>Per questo deve essere selezionato con cura. Se si usa il nome di una directory già usata la procedura guidata non permetterà di continuare con la prossima fase tenendo disattivato il pulsante <guibutton +>Successivo ></guibutton +> (rendendolo grigio). Tuttavia la procedura guidata <emphasis +>segnalerà</emphasis +> il problema aggiungendo la scritta <quote +>(dir./file già esistente)</quote +> nella linea <guilabel +>Posizione finale</guilabel +>. </para> + +<formalpara> +<title +>Il percorso di partenza</title> +<para +>Ci sono due modi per scegliere un altro percorso per la propria applicazione: si può selezionare un altro nome, ma non è sempre attuabile. In alternativa si può selezionare un altro percorso della directory dell'applicazione. </para> +</formalpara> +<para +>Questo viene fatto nella seconda riga del gruppo <guilabel +>Proprietà</guilabel +>, chiamata <guilabel +>Posizione</guilabel +>, dove si inserisce il <emphasis +>percorso di partenza</emphasis +> dell'applicazione. Quando il progetto è inizializzato la procedura guidata aggiunge a questo percorso il nome dell'applicazione. Il percorso completo viene visualizzato nella linea <guilabel +>Posizione finale</guilabel +>. </para> +<para +>La procedura guidata copierà un <emphasis +>valore iniziale</emphasis +> nel campo <guilabel +>Posizione</guilabel +> ricavato dall'opzione <guilabel +>Directory progetti predefinita</guilabel +> durante la <link linkend="setup-general" +>configurazione generale</link +>. In questo caso il percorso iniziale per i nuovi progetti è <filename class="directory" +>/home/devel/</filename +>. </para> +<para +>Cambiare il contenuto del campo <guilabel +>Posizione</guilabel +> in modo che la directory di sviluppo dell'applicazione mostrata nella <guilabel +>Posizione finale</guilabel +> sia univoca. </para> +<!--TODO add tab description Project Options --> +<note +><para +>Accertarsi che il percorso che si inserisce nel campo <guilabel +>Posizione</guilabel +> sia esistente. In caso contrario non si potrà continuare con la prossima fase. Nel caso in cui il percorso non esistesse la procedura guidata <emphasis +>segnalerà</emphasis +> il problema aggiungendo il testo <quote +>(non valido)</quote +> nella linea <guilabel +>Posizione finale</guilabel +>. </para +></note> + +<screenshot id="screenshot-createnewprojectoptions"> + <mediaobject> + <imageobject> + <imagedata fileref="createnewprojectoptions.png" format="PNG"/> + </imageobject> + <caption +><para +>Impostare un nuovo progetto con il CVS </para +></caption> + </mediaobject> +</screenshot> + +<formalpara> +<title +>Informazioni personali</title> +<para +>I campi seguenti non sono fondamentali come quelli precedenti. Inserire il proprio nome (cioè il nome del responsabile) nel campo <guilabel +>Autore</guilabel +>, e un indirizzo di email valido nel campo <guilabel +>Posta elettronica</guilabel +>, in modo che gli utenti possano fornire un eventuale feedback per l'applicazione. </para> +</formalpara> + +<note> +<orderedlist> + <listitem +><para +>La procedura guidata riempie questi campi con alcuni valori di default, ricavati dalle impostazioni presenti nel centro di controllo KDE. Se i valori di default dei campi <guilabel +>Autore</guilabel +> e <guilabel +>Posta elettronica</guilabel +> non sono appropriati si dovrebbe controllare la propria configurazione di posta nel &kcontrolcenter;. </para +></listitem> + <listitem +><para +>Se questa informazione è disponibile, verrà integrata dalla procedura guidata nel modello dell'applicazione. Ad esempio nei programmi &kde; in C++ la si troverà vicino all'inizio del file <filename +>main.cpp</filename +>. </para +></listitem> + <listitem +><para +><guilabel +>Posta elettronica</guilabel +> è un campo <emphasis +>opzionale</emphasis +>, poiché non tutti gli sviluppatori hanno accesso a Internet. Se si desidera si può lasciare il campo vuoto e procedere. </para +></listitem> +</orderedlist> +</note> + +<formalpara> +<title +>Informazioni sulla versione e sulle licenze</title> +<para +>Infine inserire un numero di versione nel campo <guilabel +>Versione</guilabel +> e selezionare la licenza con la quale rilasciare l'applicazione nel menu <guilabel +>Licenza</guilabel +>. </para> +</formalpara> + +<para +>Se si seleziona un tipo di applicazione per la quale vengono forniti i modelli dei sorgenti dalla procedura guidata (⪚ C/C++), si potrà vedere il testo di notifica della licenza nella terza pagina della finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +> (vedere il capitolo <link linkend="new-projects-start-templates" +>Fornire i modelli dei file header/sorgente</link +>). </para> +<para +>Se si seleziona <quote +>Personalizzato</quote +> nel menu <guilabel +>Licenza</guilabel +> si dovrà inserire il testo della licenza. </para> + +<note +><para +>Sia la versione che le informazioni sulla licenza saranno integrati nei modelli in un formato appropriato per il tipo di applicazione selezionata. </para +></note> + +<para +>Quando sono state inserite correttamente tutte le informazioni, premere il pulsante <guibutton +>Successivo ></guibutton +> per procedere. </para> +</sect3 +> <!-- new-projects-start-general --> + +</sect2 +> <!-- new-projects-start --> + +<sect2 id="new-projects-start-cvs"> +<title +>Fornire le informazioni del Version System</title> + +<indexterm zone="new-projects-start-cvs"> + <primary +>CVS</primary> + <secondary +>nuovo progetto</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>progetto</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>database</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>versione</primary> + <secondary +>database</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>versione</primary> + <secondary +>CVS</secondary +></indexterm> + +<para +>Nella seconda fase la procedura guidata mostrerà la pagina <guilabel +>Version Control System</guilabel +> dove si può decidere quale version control system si vuole usare. </para> + +<note +><para +>Questo capitolo si limita a fornire le informazioni necessarie per la creazione di progetti. Per ulteriori informazioni su &CVS; vedere il capitolo <link linkend="cvs" +>Usare &CVS;</link +> </para +></note> + +<formalpara> +<title +>Nessun Version Control System</title> +<para +>Inizialmente è selezionato <quote +>Nessuno</quote +> nel menu <guilabel +>Sistema di controllo versione</guilabel +> e la pagina è vuota. Se non si vuole usare un version control system, fare clic sul pulsante <guibutton +>Successivo ></guibutton +> e proseguire. </para> +</formalpara> + +<formalpara> +<title +>Usare &CVS;</title> +<para +>In caso contrario si deve selezionare il version control system che si vuole usare dal menu <guilabel +>Sistema di controllo versione</guilabel +>. In questo esempio si userà <quote +>&cvs;</quote +>. Se lo si seleziona, la procedura guidata ridisegnerà la pagina, visualizzando una serie di campi da riempire. </para> +</formalpara> + +<screenshot id="screenshot-newproject-cvs"> + <mediaobject> + <imageobject> + <imagedata fileref="create-new-project-cvs.png" format="PNG"/> + </imageobject> + <caption +><para +>Impostare un nuovo progetto con il CVS </para +></caption> + </mediaobject> +</screenshot> + +<para +>Un version control system come &CVS; (che significa <quote +>Concurrent Versions System</quote +>) conserva copie dei file del progetto in una sorta di database. Se si usa &CVS; si possono caricare (<quote +>commit</quote +>) o scaricare questi file nella propria directory del progetto (<quote +>checkout</quote +>, o <quote +>update</quote +>). La particolarità consiste nella struttura in cui sono immagazzinati i file che permette di ripristinare un precedente stato di sviluppo. Con &CVS; diversi progettisti possono collaborare facilmente ad un grande progetto senza disturbarsi a vicenda. </para> + +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>radice</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>radice</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>locale</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 locale</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 +>Radice &CVS;</title> +<para +>&CVS; deve <emphasis +>amministrare</emphasis +> il database costituito dai file del progetto, conservando alcune informazioni speciali in una directory chiamata <emphasis +>radice &CVS;</emphasis +>. Quindi per prima cosa si deve indicare a &kdevelop; dove è situata questa directory radice. </para> +</formalpara> + +<para +><emphasis +>Radice &CVS; locale</emphasis +>. Ci sono due possibilità: usare un database &CVS; <emphasis +>locale</emphasis +> o uno che è mantenuto su un <emphasis +>server remoto</emphasis +>. Se si sviluppa in proprio, si potrebbe usare il database &CVS; come una sorta di sistema di backup sul proprio computer. Normalmente questo è impostato sulla propria directory home e ha come nome <filename +>cvsroot</filename +>. Potrebbe essere simile a questo: </para> +<para +><userinput +><filename class="directory" +>/home/devel/cvsroot</filename +></userinput +> (dove <filename +>devel</filename +> indica semplicemente l'utente <quote +>sviluppatore</quote +>, ad esempio) </para> + +<note +><para +>Di fatto, questa è la forma abbreviata. Esattamente, la radice locale del &CVS; dovrebbe essere indirizzata usando il prefisso <computeroutput +>:local:</computeroutput +>. La forma breve è permessa solo nei casi in cui il nome del file inizia con una barra (<computeroutput +>/</computeroutput +>). Il nome completo per l'esempio sarebbe esattamente così:<filename class="directory" +>:local:/home/devel/cvsroot</filename +> </para +></note> + +<para +>Inserire il nome della directory radice del &CVS; del proprio sistema nel campo <guilabel +>Radice CVS</guilabel +>. In principio si può selezionare ogni nome, anche database &CVS; multipli, ma è consigliabile attenersi alla radice &CVS; impostata. </para> +<para +><emphasis +>Inizializzare una nuova radice &CVS;</emphasis +>. Se non esiste ancora una radice &CVS;, &kdevelop; può comandare a &CVS; di crearne una nella directory indicata. Selezionare la casella <guilabel +>Init root</guilabel +> sotto al campo <guilabel +>Radice CVS</guilabel +>. </para> +<note +><para +>Come detto in precedenza, &kdevelop; invia al sistema &CVS; i comandi per inizializzare una nuova radice &CVS;. Fortunatamente, &CVS; è abbastanza saggio da controllare se esiste già una directory radice. Perciò non succede nulla di male se si seleziona inavvertitamente la casella <guilabel +>Init root</guilabel +> in una directory radice già esistente. </para +></note> + +<para +><emphasis +>Radice &CVS; remota</emphasis +>. Ci sono situazioni dove il database &CVS; deve essere mantenuto su un server remoto, specialmente quando diversi sviluppatori lavorano allo stesso progetto. In questo caso si deve inserire l'&URL; della radice &CVS; di questo server nel campo <guilabel +>Radice CVS</guilabel +>. Per esempio, se si vuole accedere al server &CVS; di &kde;: </para> +<para +><userinput +><filename class="directory" +>:pserver:<replaceable +>mylogin</replaceable +>@cvs.kde.org:/home/kde</filename +></userinput +> dove <replaceable +>mylogin</replaceable +> indica il nome che è stato impostato nell'account &CVS; di &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 +>Tipi di server &CVS; remoti</title> +<para +>Principalmente ci sono due tipi largamente usati di server &CVS; remoti, il <emphasis +>pserver</emphasis +> che usa un protocollo non cifrato protetto da password e il server <emphasis +>ext</emphasis +> che usa il trasferimento dati cifrato rsh o ssh. Si distinguono dal prefisso dell'&URL;: </para> +</formalpara> +<para> +<filename +>:pserver:</filename> +</para> +<para +>per un <quote +>server protetto da password</quote +> non cifrato, e </para> +<para> +<filename +>:ext:</filename> +</para> +<para +>per un server cifrato di tipo rsh o ssh. Per esempio </para> +<para> +<userinput +><filename class="directory" +>:ext:<replaceable +>mylogin</replaceable +>@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename +></userinput> +</para> +<para +>accede alla radice &CVS; del famoso strumento di gestione di &CVS; <application +>Cervisia</application +> sul server SourceForge. </para> +<para +>Se si vuole usare un server cifrato rsh o ssh per l'accesso &CVS; si deve indicare a &kdevelop; il protocollo di cifratura da usare. Inserire <userinput +>rsh</userinput +> o <userinput +>ssh</userinput +> nel campo <guilabel +>CVS_RSH</guilabel +> della pagina <guilabel +>Version Control System</guilabel +> della finestra <guilabel +>Crea nuovo progetto</guilabel +>. </para> + +<note +><para +>Bisogna fare attenzione se si usa un server &CVS; cifrato con &kdevelop;. Vedere il capitolo <link linkend="cvs" +>Usare &CVS;</link +> per i dettagli. </para +></note> + +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>CVS</primary> + <secondary +>deposito</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>deposito</primary> + <secondary +>CVS</secondary +></indexterm> + +<formalpara id="new-projects-start-cvs-repository"> +<title +>Il deposito &CVS;</title> +<para +>Fin qui è stato indicato a &kdevelop; dove risiede la radice &CVS; che gestisce il database e come accedervi. Adesso si deve inserire sotto quale nome si vogliono salvare i file del progetto nel database. La posizione dove i file di progetto vengono memorizzati è detta <emphasis +>deposito (repository)</emphasis +>. </para> +</formalpara> +<para +>In principio si può usare qualunque nome per il deposito &CVS;, purché aderisca alle specifiche per i nomi dei file, tuttavia molti sviluppatori usano semplicemente il nome stesso dell'applicazione. Siccome &CVS; costruirà una directory con questo nome nella radice &CVS;, se si usa il nome dell'applicazione sarà più facile trovarla. </para> +<para +>Inserire il nome del deposito che si vuole usare nel campo <guilabel +>CVS repository</guilabel +> della pagina <guilabel +>Version Control System</guilabel +> della finestra <guilabel +>Crea nuovo progetto</guilabel +>. Nell'esempio è: <userinput +>NuovaApplicazione</userinput +> </para> + +<warning +><para +><emphasis +>Si eviti di usare un deposito già esistente!</emphasis +> Il sistema &CVS; non avverte in caso di file duplicati ed elimina tutto quello che non produce un conflitto formale. Si rovinerà tutto! </para +></warning> + +<formalpara> +<title +>Campi restanti</title> +<para +>Non c'è molto altro lavoro da fare: la procedura guidata ha impostato i campi rimanenti. Nel dettaglio: </para> +</formalpara> +<para +>Il campo <guilabel +>Tag del Vendor</guilabel +> è usato solo per ragioni di compatibilità. Si può mantenere il valore di default <quote +>vendor</quote +> che viene inserito dalla procedura guidata. </para> +<para +>Il campo <guilabel +>Messaggio</guilabel +> permette di commentare i contenuti iniziali di &CVS;. Usare qualunque testo desiderato oppure lasciare il valore di default <quote +>nuovo progetto</quote +> che viene inserito dalla procedura guidata. </para> +<para +>Il <guilabel +>Tag di release</guilabel +> contiene il nome che etichetta lo stato iniziale del progetto. Una tale <emphasis +>etichetta</emphasis +> definisce all'interno del deposito &CVS; un certo punto dal quale si può in seguito accedere a quello stadio di sviluppo. (Ulteriori informazioni nel capitolo <link linkend="cvs" +>Usare &CVS;</link +>) </para> +<para +>La procedura guidata mette un valore di default <quote +>avvia</quote +> che è una buona proposta. Si può lasciare questa. </para> + +<note> +<para +>Fino al momento della costruzione del progetto, &kdevelop; non saprà se c'è qualche informazione sbagliata: sarà il sistema &CVS; a individuare questi errori quando costruirà il deposito. Quindi si deve controllare la finestra <guilabel +>Messaggi</guilabel +> di &kdevelop; quando viene creato il progetto. Se c'è stato qualche errore nelle impostazioni del &CVS; nella maggior parte dei casi si vedranno messaggi di errore come questi: </para> + +<screen +><computeroutput> +* cd '/home/devel/test' && cvs -d '/home/devel/mycvsroot' \ + import -m 'nuovo progetto' '' 'vendor' 'avvia' &&\ + sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \ + '/home/devel/mycvsroot' +* cvs [import aborted]: /home/devel/mycvsroot/CVSROOT: No such file or + directory +* *** Exited with status: 1 *** +</computeroutput +></screen> + +<para +>In questo caso si deve impostare manualmente &CVS; (a questo punto &kdevelop; dovrebbe aver inizializzato con successo i file del progetto) o cancellare la directory del progetto e ricominciare da capo con il comando <guimenuitem +>Nuovo Progetto...</guimenuitem +> dal menu <guimenu +>Progetto</guimenu +>. </para> +</note> + +<para +>Dopo aver inserito tutte le informazioni relative a &CVS;, fare clic sul pulsante <guibutton +>Successivo ></guibutton +> per procedere. </para> + +<note +><para +>Se si vuole correggere un errore nella pagina precedente, premere il pulsante <guibutton +>< Precedente</guibutton +>. La procedura guidata ricorderà le impostazioni della pagina attuale, in modo da poter procedere facilmente quando si ritornerà a questa pagina. </para +></note> + +</sect2 +> <!-- new-projects-start-cvs --> + +<sect2 id="new-projects-start-templates"> +<title +>Fornire i modelli dei file header/sorgente</title> + +<para +>Nella prossima fase saranno impostate alcune informazioni da includere nei file sorgente e header. </para> +<para +>Nelle rispettive pagine vengono forniti i modelli dei file header e sorgente per le applicazioni C/C++. Per gli altri linguaggi potrebbe essere disponibile solo il modello per il file sorgente, e in alcuni casi si troveranno le pagine dei modelli vuote. </para> +<para +>Se la pagina viene usata, sarà riempita dalla procedura guidata con alcuni commenti, che nel caso di applicazioni C++ appariranno così: </para> + +<screen +><computeroutput +><literal> +/*************************************************************************** + * Copyright (C) 2003 by Nome * + * io@io.it * + * * + * 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 +>Gli altri modelli forniranno informazioni simili in un formato adatto al linguaggio di programmazione usato. </para> +<para +>Il gestore delle applicazioni usa le informazioni che sono state fornite nella pagina <guilabel +>Generale</guilabel +> della finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +>, cioè i contenuti dei campi <guilabel +>Autore</guilabel +> e <guilabel +>Posta elettronica</guilabel +>. Anche le informazioni sulla licenza vengono inserite in base alla selezione effettuata nel menu <guilabel +>Licenza</guilabel +>. </para> + +<sect3 id="new-projects-start-templates-edit"> +<title +>Come modificare i modelli</title> + +<indexterm zone="new-projects-start-templates-edit"> + <primary +>modelli</primary> + <secondary +>progetto</secondary> + <tertiary +>modificare</tertiary +></indexterm> +<indexterm zone="new-projects-start-templates-edit"> + <primary +>progetto</primary> + <secondary +>modelli</secondary> + <tertiary +>modificare</tertiary +></indexterm> + +<para +>Quando &kdevelop; creerà un nuovo file sorgente e/o header, verranno elaborati i modelli presenti nella finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +>. Le informazioni fornite nei modelli saranno incluse nell'intestazione dei file che precede il codice. </para> +<para +>Oltre al semplice testo, &kdevelop; riconosce diverse variabili che permettono di includere informazioni nel file. La procedura guidata usa alcune di queste varibili per inserire le informazioni <guilabel +>Autore</guilabel +>, <guilabel +>Posta elettronica</guilabel +> e <guilabel +>Licenza</guilabel +>. </para> + +<variablelist> +<varlistentry> +<term +>Includere informazioni di &doxygen;</term> +<listitem> +<para +>Se, ad esempio, si vuole che la documentazione &API; di &doxygen; visualizzi alcune informazioni sul contenuto del file si potrebbero includere le seguenti linee nel modello di file sorgente. </para> +<screen +><computeroutput> +/** + * \file $MODULE$.cpp + * \brief (inserire-qui-una-breve-descrizione). + **/ +</computeroutput +></screen> +<para +>Quando verrà creato un nuovo file sorgente, &kdevelop; sostituirà la variabile <varname +>$MODULE$</varname +> con il nome del file creato. Per esempio, se si crea una nuova classe C++ chiamata <classname +>ASimpleTest</classname +> il file <filename +>asimpletest.cpp</filename +> conterrà le linee seguenti: </para> +<screen +><computeroutput> +/** + * \file asimpletest.cpp + * \brief (inserire-qui-una-breve-descrizione). + **/ +</computeroutput +></screen> +<para +>Si dovrà fornire una breve descrizione dopo la parola chiave <quote +>\brief</quote +>, ma parte del lavoro è stato fatto automaticamente. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Il file della licenza</term> +<listitem> +<para +>Si potrebbe, ad esempio, includere nel modello un accenno al testo di licenza usato. A questo scopo di usa la variabile <varname +>$LICENSEFILE$</varname +>, aggiungendo una linea come questa: </para> + +<screen +><computeroutput> +// Vedere $LICENSEFILE$ per il testo completo della licenza. +</computeroutput +></screen> +<para +>La procedura guidata sostituirà <varname +>$LICENSEFILE$</varname +> con il nome del file dove si trova il testo completo della licenza, cioè: </para> +<screen +><computeroutput> +// Vedere COPYING per il testo completo della licenza. +</computeroutput +></screen> +<para +>per la licenza <acronym +>GPL</acronym +>, o </para> +<screen +><computeroutput> +// Vedere LICENSE.BSD per il testo completo della licenza. +</computeroutput +></screen> +<para +>se si decide di rilasciare l'applicazione sotto licenza <acronym +>BSD</acronym +>. </para> +<para +>Ovviamente esistono molte altre variabili riconosciute da &kdevelop;. Vedere la sezione <link linkend="newfiles-edittemplates" +>Modificare i modelli</link +> del capitolo <link linkend="editing" +>Strumenti di Editing</link +> per ulteriori informazioni. </para> +</listitem> +</varlistentry> +</variablelist> + +<note +><para +>I modelli che sono stati definiti saranno utilizzati solo dopo che la procedura guidata ha creato il nuovo progetto. Le informazioni che contengono si trovano informazioni all'inizio dei file che vengono creati. Quando verranno creati i file iniziali la procedura guidata userà alcuni modelli standard predefiniti, che dovranno essere modificati manualmente. </para +></note> + +</sect3 +> <!-- new-projects-start-templates-edit --> +</sect2 +> <!-- new-projects-start-templates --> + +<sect2 id="new-projects-start-build"> +<title +>Compilare i file iniziali</title> + +<indexterm zone="new-projects-start-build"> + <primary +>progetto</primary> + <secondary +>nuovo</secondary> + <tertiary +>compilare</tertiary +></indexterm> +<indexterm zone="new-projects-start-build"> + <primary +>progetto</primary> + <secondary +>prima compilazione</secondary +></indexterm> + +<para +>È stato fatto quasi tutto. Nell'ultima pagina il testo del pulsante <guibutton +>Successivo > </guibutton +> cambierà diventando <guibutton +>Fine</guibutton +>. </para> +<para +><emphasis +>Pensarci due volte prima di fare clic!</emphasis +> Si può ancora rivedere ogni cosa premendo ripetutamente il pulsante <guibutton +>< Precedente</guibutton +>. Siccome la procedura guidata ricorda tutte le informazioni che sono state inserite, potrebbe essere consigliabile prendersi il tempo per rivederle ancora una volta. Nel caso si usi un &CVS; locale, non dimenticare di controllare il nome del <emphasis +>deposito &CVS;</emphasis +> (non dovrebbero esistere sottodirectory con quel nome nella directory radice &CVS; — se esistono provare un altro nome per il deposito). </para> +<para +>Se non si vuole costruire il nuovo progetto, fare clic sul pulsante <guibutton +>Annulla</guibutton +> in modo da chiudere la finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +>. In caso contrario premere il pulsante <guibutton +>Fine</guibutton +> e controllare nella finestra <guilabel +>Messaggi</guilabel +> l'inizializzazione del progetto. </para> +<para +>Se si vuole usare un sistema di versioning (&CVS;) ci sono effettivamente due percorsi. La procedura guidata costruirà prima le directory del progetto e i file, in seguito chiamerà il programma &CVS; che inserirà nella finestra <guilabel +>Messaggi</guilabel +> il proprio output. Se capita qualche errore in queste fasi si fermerà il processo, mostrando il messaggio di errore opportuno nella finestra. </para> + +<note +><para +>Nella maggior parte dei casi, quando il progetto è stato impostato, &kdevelop; caricherà automaticamente il/i file sorgente di uno o più moduli principali in modo da poter iniziare facilmente a lavorare. (Tuttavia, quale modulo sorgente verrà visualizzato dipende dal modello inizialmente selezionato nella procedura guidata). </para +></note> + +<para +>Non dimenticarsi di fare un controllo preliminare del lavoro svolto dalla procedura guidata. Per esempio si potrebbe voler modificare le informazioni di intestazione in base ai propri modelli, che normalmente si trovano nella sottodirectory <filename class="directory" +>templates</filename +> della directory del progetto. Saranno sufficienti alcune semplici operazioni di copia. </para> +<para +>In seguito è consigliabile <emphasis +>compilare il progetto</emphasis +> prima di iniziare a cambiare il codice. Nella maggior parte dei casi sarà possibile effettuare la compilazione. In questo modo si può capire se il progetto è stato impostato in modo opportuno. In caso contrario, rimuovere semplicemente la directory del progetto (anche nella radice &CVS; se è stata usata) e ripartire nuovamente. </para> + +<warning id="defaultbuild-warning" +> <!-- ### remove this when "default" works again --> + + <indexterm zone="defaultbuild-warning"> + <primary +>configurazione di compilazione di default</primary> + <secondary +>avvertimento</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>configurazioni di compilazione</primary> + <secondary +>avvertimento per compilazione di default</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>avvertimento</primary> + <secondary +>configurazione compilazione default</secondary +></indexterm> + + <para +>Prima di compilare il nuovo progetto, controllare in <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Configurazione compilazione</guimenuitem +></menuchoice +>. Se sono visualizzate tre selezioni: <guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +>, e <guimenuitem +>debug</guimenuitem +> e quest'ultima è selezionata si deve mantenere questa configurazione oppure selezionare <guimenuitem +>optimized</guimenuitem +>. </para> + <para +>A causa di alcune limitazioni nell'impostazione attuale di autoconf/automake non si dovrebbe <emphasis +>per nessun motivo</emphasis +> compilare nella configurazione <guimenuitem +>default</guimenuitem +>. Questo corromperà alcune impostazioni interne della directory, quindi <command +>configure</command +> si lamenterà quando si tenterà di usarlo in seguito nella configurazione <guimenuitem +>optimized</guimenuitem +> o <guimenuitem +>debug</guimenuitem +>. </para> + <para +>(Questo si applica solo con queste capacità di multiselezione. Se il tipo della propria applicazione fornisce solo la configurazione <guimenuitem +>default</guimenuitem +>, si deve ovviamente usare quest'ultima). </para> +</warning> + +</sect2 +> <!-- new-projects-start-build --> + +</sect1 +> <!-- new-projects --> + +<sect1 id="projects-configure"> +<title +>Configurazione dei progetti</title> + +<para +>(... da scrivere ...)</para> + +</sect1> + +</chapter +> <!-- applicationwizard --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/automake-file-popup.png b/tde-i18n-it/docs/kdevelop/kdevelop/automake-file-popup.png Binary files differnew file mode 100644 index 00000000000..e256803cad1 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/automake-file-popup.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/automake-subproject-popup.png b/tde-i18n-it/docs/kdevelop/kdevelop/automake-subproject-popup.png Binary files differnew file mode 100644 index 00000000000..39629c56a16 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/automake-subproject-popup.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/automake-target-popup.png b/tde-i18n-it/docs/kdevelop/kdevelop/automake-target-popup.png Binary files differnew file mode 100644 index 00000000000..13e185cc9d5 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/automake-target-popup.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/automakemanager.png b/tde-i18n-it/docs/kdevelop/kdevelop/automakemanager.png Binary files differnew file mode 100644 index 00000000000..6d05e702072 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/automakemanager.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/build-commands.png b/tde-i18n-it/docs/kdevelop/kdevelop/build-commands.png Binary files differnew file mode 100644 index 00000000000..c04bb2dddc3 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/build-commands.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/build-configurations.png b/tde-i18n-it/docs/kdevelop/kdevelop/build-configurations.png Binary files differnew file mode 100644 index 00000000000..f3edb6058f3 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/build-configurations.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/build-menu-automake.png b/tde-i18n-it/docs/kdevelop/kdevelop/build-menu-automake.png Binary files differnew file mode 100644 index 00000000000..c69162984d8 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/build-menu-automake.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/build-menu.png b/tde-i18n-it/docs/kdevelop/kdevelop/build-menu.png Binary files differnew file mode 100644 index 00000000000..6785540bae0 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/build-menu.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/class-browsers.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/class-browsers.docbook new file mode 100644 index 00000000000..4629ec38570 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/class-browsers.docbook @@ -0,0 +1,89 @@ +<chapter id="class-browsers"> +<title +>Il browser delle classi</title> +<indexterm zone="class-browsers" +><primary +>browser delle classi</primary +></indexterm> + +<para +>Quando si lavora ad un progetto con un linguaggio orientato agli oggetti, l'attenzione non è concentrata sui file sorgente e i loro nomi, ma sulle classi e le loro relazioni. Per aiutare a navigare lo spazio delle classi e dei simboli definiti, &kdevelop; include vari browser delle classi che visualizzano la struttura delle classi in varie modalità. </para> + +<sect1 id="classview"> +<title +>Vista delle classi</title> + +<para +>Questa vista è mostrata nella parte sinistra della finestra principale e contiene un elenco lineare di tutte le classi, variabili e funzioni del progetto. È organizzata come una vista ad albero. Se si apre il nodo di una classe facendo clic su esso, viene visualizzata una lista di tutti i metodi e gli attributi di quella classe. </para> + +<figure id="screenshot-classview" float="1"> +<title +>Una schermata della vista delle classi</title> +<mediaobject> +<imageobject +><imagedata fileref="classview.png"/></imageobject> +</mediaobject> +</figure> + +<para +>La vista delle classi funziona in due modalità differenti. Per default tutti i simboli sono raggruppati in <quote +>classi</quote +>, <quote +>strutture</quote +>, <quote +>funzioni</quote +>, <quote +>variabili</quote +> e <quote +>namespace</quote +>. Nel menu contestuale si può scegliere <guimenuitem +>List by Namespaces</guimenuitem +>. In questa modalità viene visualizzata la gerarchia dei namespace, con i simboli raggruppati nel namespace dove sono definiti. Può essere utile nei progetti che fanno grande uso di namespace (innestati), mentre è meno utile in progetti che non li usano. </para> + +<para +>Si può anche cambiare il modo con cui vengono visualizzati i nomi delle classi. Normalmente sono mostrati senza il namespace in cui sono definiti. Questo implica che non si possono distinguere immediatamente classi che hanno lo stesso nome definite in namespace diversi. Se si rimane con il mouse per un po' sopra ad un elemento viene mostrato un aiuto che mostra l'intero percorso del nome. Si può decidere di visualizzare sempre il nome completo scegliendo <guimenuitem +>Full Identifier scopes </guimenuitem +> dal menu contestuale. </para> + +<para +>Facendo clic su una classe o su un metodo viene mostrata la definizione. Si può anche saltare alla dichiarazione di un metodo scegliendo <guimenuitem +>Vai alla dichiarazione</guimenuitem +> dal menu contestuale. In questo menu sono presenti anche le voci <guimenuitem +>Aggiungi metodo...</guimenuitem +> e <guimenuitem +>Aggiungi attributo...</guimenuitem +>, che aprono delle finestre di dialogo dove si possono generare nuove dichiarazioni di metodi e variabili senza implementazione. </para> + +</sect1 +> <!-- classview --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classtools"> +<title +>Strumenti per le classi</title> + +<para +>La finestra di dialogo class tool è attivata facendo clic una classe con il tasto destro nella vista delle classi e selezionando <guimenuitem +>Class tool...</guimenuitem +>. </para> + +</sect1 +> <!-- classtools --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classhierarchy"> +<title +>Gerarchia delle classi</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- classhierarchy --> + +</chapter +> <!-- class-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/classview.png b/tde-i18n-it/docs/kdevelop/kdevelop/classview.png Binary files differnew file mode 100644 index 00000000000..edcdcc2bc0d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/classview.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/commands.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/commands.docbook new file mode 100644 index 00000000000..c68d6b3a4d4 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/commands.docbook @@ -0,0 +1,2999 @@ +<chapter id="commands"> + +<!-- TODO +- CAUTION: Check everything against actual KDevelp behaviour. Do not rely on tool tips etc. +- Summarize menu entries, like in getting-started. +- Complete descriptions, e.g. from What's This. +- Link to more detailed description, e.g. in plugin chapter. +--> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Volker</firstname +> <surname +>Paul</surname +></author> + <othercredit role="translator" +><firstname +>Alessio</firstname +><surname +>Rolleri</surname +><affiliation +><address +><email +>aroller@libero.it</email +></address +></affiliation +><contrib +></contrib +></othercredit +> + </authorgroup> + + <date +>2005-04-03</date> +</chapterinfo> + +<title +>Descrizione dei comandi</title> + +<note +><para +>Le scorciatoie da tastiera mostrate in questo capitolo sono quelle di default. Non possono essere modificate. </para +></note> + + + +<sect1 id="menubar"> +<title +>La barra dei menu</title +> <para +>Notare che alcune voci di menu compaiono solo quando sono disponibili. In particolare, alcune voci sono collegate con le funzionalità dei <link linkend="plugin-tools" +>plugin</link +> che sono disponibili solo quando il plugin è abilitato.</para> + + + + + + +<!-- ======================= F I L E ============================= --> + +<sect2 id="menu-file"> +<title +>Il menu <guimenu +>File</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Nuovo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Crea un nuovo file. Viene chiesto all'utente di selezionare la directory (di default è la directory sorgente dell'attuale progetto) e di inserire il nome del file. Il tipo di file può essere selezionato da una lista. Inoltre, l'utente può scegliere se il file dovrà essere aggiunto al progetto. In seguito il gestore automake chiederà a quale target aggiungere il nuovo file. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Apri</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apre un file esistente mostrando una semplice finestra di dialogo.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Apri Recenti</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizza un sottomenu che contiene i file recentemente aperti. Quando uno di essi viene selezionato, KDevelop lo aprirà. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Apertura rapida file</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizza un elenco dei file presenti nella directory sorgente del progetto attuale. L'utente può selezionare il file dall'elenco o inserire il suo nome. Il file viene in seguito aperto. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Salva</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Salva il file attuale.</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Salva con nome...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Usa la finestra di dialogo <guilabel +>Salva con nome...</guilabel +> per permettere di salvare una copia del file con un nome nuovo.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Salva tutto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Salva tutti i file aperti.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycap +>F5</keycap +></shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Ricarica</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Ricarica il file attuale per visualizzare le modifiche effettuate con altri programmi. (Notare che queste modifiche sono normalmente rilevate automaticamente e all'utente viene chiesto se vuole ricaricare il file).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Annulla tutto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Annulla tutte le modifiche effettuate nei file aperti. Viene chiesto se salvare le modifiche in modo di poter invertire l'operazione per ogni file modificato. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>P</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Stampa...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Effettua la stampa.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Esporta</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esporta il file </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Chiudi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiude l'attuale file. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Chiudi tutto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiude tutti i file aperti. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Chiudi tutti gli altri</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiude tutti i file tranne quello attuale. Molto utile se sono stati aperti molti file e ci si vuole concentrare su uno solo. Senza questo comando si dovrebbe chiudere tutti i file e aprire nuovamente l'attuale file. </para> +<para +>Notare che esiste una comando simile nel menu Finestra. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +> </shortcut +> <guimenu +>File</guimenu +> <guimenuitem +>Esci</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiude KDevelop.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +<!-- ======================= E D I T ============================= --> + + +<sect2 id="menu-edit"> +<title +>Il menu <guimenu +>Modifica</guimenu +></title> + + +<variablelist> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Z</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Annulla</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Annulla </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>Z</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Rifai</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Rifai </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>X</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Taglia</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Taglia </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Copia</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Copia </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>V</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Incolla</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Incolla </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>A</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Seleziona tutto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Seleziona tutto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>A</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Deseleziona</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Deseleziona </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>B</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Modalità selezione a blocchi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modalità di selezione a blocchi </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Ins</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Modalità di sovrascrittura</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modalità di sovrascrittura </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Trova</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Trova </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F3</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Trova successivo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Trova il successivo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F3</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Trova precedente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Trova il precedente </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Sostituisci</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Sostituisce </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Vai alla riga</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Vai alla riga </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Trova nei file</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Trova nei file </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Trova-Seleziona-Sostituisci</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Trova-Seleziona-Sostituisci </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Modifica</guimenu +> <guimenuitem +>Riformatta sorgente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Riformatta il codice sorgente </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Espandi testo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Espande il testo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>L</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Espandi abbreviazioni</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Espande le abbreviazioni </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Space</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Completa testo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Completa il testo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F2</keycap +></keycombo +> </shortcut +> <guimenu +>Modifica</guimenu +> <guimenuitem +>Crea membro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Crea membro </para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + +<!-- ======================= V I E W ============================= --> + + +<sect2 id="menu-view"> + +<title +>Il menu <guimenu +>Visualizza</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Indietro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Indietro </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Avanti</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avanti </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>/</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Passa a...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa a... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Alza Editor</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Alza Editor </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Errore successivo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Errore successivo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Errore precedente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Errore precedente </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Modalità a tutto schermo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modalità a tutto schermo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F12</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Cambia intestazione/implementazione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa tra i file di intestazione/implementazione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Viste strumenti</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Viste strumenti </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Strumento area di aggancio</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Strumenti area di aggancio </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Passa alla riga di comando</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa alla riga di comando </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>View</guimenu +> <guimenuitem +>Schema</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Schema </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F10</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>A capo automatico dinamico</guimenuitem +> </menuchoice +></term> +<listitem +><para +>A capo automatico dinamico </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Indicatore a capo automatico dinamico</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Indicatore a capo automatico dinamico </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Mostra/Nascondi indicatore a capo statico</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra indicatore a capo statico </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F6</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Mostra/Nascondi bordo per le icone</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra/Nascondi bordo per le icone </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F11</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Mostra/Nascondi i numeri di riga</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra/Nascondi i numeri di riga </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Mostra/Nascondi segni della barra di scorrimento</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra/Nascondi segni della barra di scorrimento </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F9</keycap +></keycombo +> </shortcut +> <guimenu +>Visualizza</guimenu +> <guimenuitem +>Mostra/Nascondi segni di raggruppamento</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra/Nascondi segni di raggruppamento </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Raggruppamento codice</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Raggruppamento codice </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Imposta codifica</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Imposta codifica </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= P R O J E C T ============================= --> + + +<sect2 id="menu-project"> +<title +>Il menu <guimenu +>Progetto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Nuovo progetto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Nuovo Progetto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Apri progetto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apri Progetto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Apri progetto recente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apri progetto recente </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Linguaggio attivo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Linguaggio attivo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Importa progetto esistente...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Importa progetto esistente... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Nuova classe...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Nuova classe... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Diagramma d'ereditarietà classe</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Diagramma d'ereditarietà classe </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Aggiungi traduzione...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Aggiungi traduzione... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Configurazione compilazione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configurazione compilazione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Pubblicazione e distribuzione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Pubblicazione e distribuzione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Opzioni progetto... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Chiudi progetto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiudi progetto </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= B U I L D ============================= --> + + +<sect2 id="menu-build"> +<title +>Il menu <guimenu +>Progetto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F8</keycap +></keycombo +> </shortcut +> <guimenu +>Compila</guimenu +> <guimenuitem +>Compila progetto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Compila progetto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Compila</guimenu +> <guimenuitem +>Compila target attivo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Compila progetto attivo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Compila File</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Compila File </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui Configure</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esegui Configure </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui automake & compagni</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esegui automake & compagni </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Installa</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Installa </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Installa (come amministratore)</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Installa (come amministratore) </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Ripulisci progetto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Ripulisci progetto </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</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 +>Compila</guimenu +> <guimenuitem +>Genera i messaggi e uniscili</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Genera i messaggi e uniscili </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui programma</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esegui programma </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Genera la documentazione API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Genera la documentazione API </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Cancella la documentazione API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Cancella la documentazione API </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Escape</keycap +></keycombo +> </shortcut +> <guimenu +>Compila</guimenu +> <guimenuitem +>Interrompi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Interrompi </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + +<!-- ======================= D E B U G ============================= --> + + +<sect2 id="menu-debug"> +<title +>Il menu <guimenu +>Progetto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Avvia</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Avvia </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Interrompi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Interrompi </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Interrompi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Interrompi </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Esegui fino al cursore</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esegui fino al cursore </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Passa sopra</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa sopra </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Passa sopra l'istruzione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa sopra l'istruzione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Passa dentro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa dentro </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Passa dentro l'istruzione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa dentro l'istruzione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Passa fuori</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Passa fuori </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Attiva/disattiva breakpoint</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Attiva/disattiva breakpoint </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Visualizzatori</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizzatori </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Esamina file core...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esamina file core... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Collega al processo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Collega al processo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Controlla perdita di memoria valgrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Controlla perdita di memoria valgrind </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Debug</guimenu +> <guimenuitem +>Profilo con KCachegrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Profilo con KCachegrind </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + + + +<!-- ======================= B O O K M A R K S ============================= --> + + + +<sect2 id="menu-bookmarks"> +<title +>Il menu <guimenu +>Segnalibri</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>B</keycap +></keycombo +> </shortcut +> <guimenu +>Segnalibri</guimenu +> <guimenuitem +>Metti segnalibro</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Aggiunge la selezione attuale ai segnalibri</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Segnalibri</guimenu +> <guimenuitem +>Pulisci tutti i segnalibri</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Pulisci tutti i segnalibri</para +></listitem> +</varlistentry> +</variablelist> + +</sect2> + + + + +<!-- ======================= W I N D O W ============================= --> + + +<sect2 id="menu-window"> +<title +>Il menu <guimenu +>Finestra</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>W</keycap +></keycombo +></shortcut +> <guimenu +>Finestra</guimenu +> <guimenuitem +>Chiudi finestra selezionata...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiudi finestra selezionata...</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +></shortcut +> <guimenu +>Finestra</guimenu +> <guimenuitem +>Chiudi</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiudi</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Finestra</guimenu +> <guimenuitem +>Chiudi tutto</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiudi tutto</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Finestra</guimenu +> <guimenuitem +>Chiudi tutti gli altri</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Chiudi tutti gli altri</para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + + + + +<!-- ======================= T O O L S ============================= --> + + +<sect2 id="menu-tools"> +<title +>Il menu <guimenu +>Strumenti</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Modalità sola lettura</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Modalità sola lettura </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Tipo di file</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Tipo di file </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Evidenziazione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Evidenziazione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Fine riga</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Fine riga </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</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 +>Strumenti</guimenu +> <guimenuitem +>Indenta</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Indenta </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Annulla indentazione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Annulla indentazione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Pulisci indentazione</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Pulisci indentazione </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Tab</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Allinea</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Allinea </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Commenta</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Commenta </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Decommenta</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Decommenta </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Maiuscolo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Maiuscolo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Minuscolo</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Minuscolo </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Iniziali maiuscole</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Iniziali Maiuscole </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Unisci righe</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Unisci righe </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>A capo documento</guimenuitem +> </menuchoice +></term> +<listitem +><para +>A capo documento </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Visualizzatore differenze...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizzatore differenze... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Esegui comando...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Esegui comando... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Selezione filtro tramite comando...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Selezione dei filtri attraverso un comando esterno usando il <link linkend="KDevFilter" +>plugin Filter</link +>. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Debug dell'espressione regolare...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Debug dell'espressione regolare... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Part Explorer</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Part Explorer </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Apertura rapida classe...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apertura rapida classe... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>M</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Apertura rapida metodo...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apertura rapida metodo... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>P</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Anteprima output doxygen</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Anteprima output doxygen </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Strumenti</guimenu +> <guimenuitem +>Documenta funzione corrente</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Documenta funzione corrente </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= S E T T I N G S ============================= --> + + +<sect2 id="menu-settings"> +<title +>Il menu <guimenu +>Impostazioni</guimenu +></title> + + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>M</keycap +></keycombo +></shortcut +> <guimenu +>Impostazioni</guimenu +> <guimenuitem +>Mostra/Nascondi barra dei menu</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra/Nascondi barra dei menu</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Barre degli strumenti</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Apre un sottomenu dove si può scegliere di mostrare o nascondere varie barre degli strumenti.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Mostra la barra di stato</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra la barra di stato</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura le scorciatoie...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configura le scorciatoie... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura le barre degli strumenti...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configura le barre degli strumenti... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura le notifiche...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configura le notifiche... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura editor...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configura editor... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Configura KDevelop </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= H E L P ============================= --> + + +<sect2 id="menu-help"> +<title +>Il menu <guimenu +>Aiuto</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Manuale di KDevelop</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Visualizza questo documento</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F1</keycap +></keycombo +></shortcut +> <guimenu +>Aiuto</guimenu +> <guimenuitem +>Che cos'è?</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Disegna un punto interrogativo (?) vicino al puntatore del mouse. Facendo clic su un elemento di una finestra, come il pulsante <guiicon +>Stop</guiicon +>, verrà visualizzata una breve spiegazione. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Consiglio del giorno</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Consiglio del giorno </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Aiuto</guimenu +> <guimenuitem +>Cerca nell'indice della documentazione...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Cerca nell'indice della documentazione... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Aiuto</guimenu +> <guimenuitem +>Ricerca nella documentazione...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Ricerca nella documentazione... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Pagina manuale...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Pagina manuale... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Pagina info...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Pagina info... </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Segnala un bug...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Segnala un bug.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Informazioni su KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra alcune brevi informazioni sul numero di versione, sugli autori e l'accordo di licenza di KDevelop.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Informazioni su KDE...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Mostra alcune informazioni sulla versione di &kde; in uso.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +</sect1> + + + + +</chapter> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png Binary files differnew file mode 100644 index 00000000000..6fe6472fbc3 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-qt.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-qt.png Binary files differnew file mode 100644 index 00000000000..81c7bc5e763 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog-qt.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog.png Binary files differnew file mode 100644 index 00000000000..8cfda61bbf8 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-adddialog.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-DevHelp.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-DevHelp.png Binary files differnew file mode 100644 index 00000000000..a5093758aac --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-DevHelp.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-TOC.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-TOC.png Binary files differnew file mode 100644 index 00000000000..c55c5656f6e --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-TOC.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-bookmark.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-bookmark.png Binary files differnew file mode 100644 index 00000000000..e670309f08a --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-bookmark.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-general.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-general.png Binary files differnew file mode 100644 index 00000000000..5f95b25cc97 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-general.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-textsearch.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-textsearch.png Binary files differnew file mode 100644 index 00000000000..adaf97ddae0 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-doctree-textsearch.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-chm.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-chm.png Binary files differnew file mode 100644 index 00000000000..cd78c6b72dc --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-chm.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-custom.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-custom.png Binary files differnew file mode 100644 index 00000000000..f7a53a1656e --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-custom.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-devhelp.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-devhelp.png Binary files differnew file mode 100644 index 00000000000..ff72cf91445 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-devhelp.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-dox.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-dox.png Binary files differnew file mode 100644 index 00000000000..4bf0a0ac90e --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-dox.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-edit.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-edit.png Binary files differnew file mode 100644 index 00000000000..4a03ef55eb8 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-edit.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-general.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-general.png Binary files differnew file mode 100644 index 00000000000..8c8cc29dcf4 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-general.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-toc.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-toc.png Binary files differnew file mode 100644 index 00000000000..66bc8b95195 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-docu-toc.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-editor.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-editor.png Binary files differnew file mode 100644 index 00000000000..23775f35a88 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-editor.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-selector.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-selector.png Binary files differnew file mode 100644 index 00000000000..517611f786b --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-selector.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-templates.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-templates.png Binary files differnew file mode 100644 index 00000000000..ef1f85f6fbc --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-file-templates.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-general.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-general.png Binary files differnew file mode 100644 index 00000000000..40e6c8ccddc --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-general.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-buildconfig.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-buildconfig.png Binary files differnew file mode 100644 index 00000000000..e9638fee298 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-buildconfig.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-configure.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-configure.png Binary files differnew file mode 100644 index 00000000000..c03578a8324 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-configure.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cpp.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cpp.png Binary files differnew file mode 100644 index 00000000000..5b5a28c4a12 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cpp.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cppoptions.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cppoptions.png Binary files differnew file mode 100644 index 00000000000..4dbcddabff4 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-cppoptions.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-doc.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-doc.png Binary files differnew file mode 100644 index 00000000000..500b5abb0b5 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-doc.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-make.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-make.png Binary files differnew file mode 100644 index 00000000000..b8373a68c44 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-make.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-run.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-run.png Binary files differnew file mode 100644 index 00000000000..e392c8a193f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-project-run.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-select.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-select.png Binary files differnew file mode 100644 index 00000000000..61d31cc3685 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-select.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/configure-snippets.png b/tde-i18n-it/docs/kdevelop/kdevelop/configure-snippets.png Binary files differnew file mode 100644 index 00000000000..501acfcd973 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/configure-snippets.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project-cvs.png b/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project-cvs.png Binary files differnew file mode 100644 index 00000000000..067bd0cddff --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project-cvs.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project.png b/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project.png Binary files differnew file mode 100644 index 00000000000..f50d3937312 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/create-new-project.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/createnewproject.png b/tde-i18n-it/docs/kdevelop/kdevelop/createnewproject.png Binary files differnew file mode 100644 index 00000000000..ee6919426dd --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/createnewproject.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/createnewprojectoptions.png b/tde-i18n-it/docs/kdevelop/kdevelop/createnewprojectoptions.png Binary files differnew file mode 100644 index 00000000000..ebb6f75a4f2 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/createnewprojectoptions.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/credits.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/credits.docbook new file mode 100644 index 00000000000..a9cae9f794f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/credits.docbook @@ -0,0 +1,40 @@ +<chapter id="credits"> +<title +>Riconoscimenti</title> + +<sect1 id="credits-contributions"> +<title +>Contributi</title> + +<para> +<itemizedlist> + <listitem +><para +>La stesura iniziale di questo manuale è stata scritta da Bernd Gehrmann <email +>bernd@kdevelop.org</email +> e Caleb Tennis <email +>caleb@aei-tech.com</email +>. </para +></listitem> + <listitem +><para +>I capitoli <link linkend="automake-manager-summary" +>Sommario sul gestore Automake</link +> e <link linkend="automake-manager-operation" +>Operazioni del gestore Automake</link +> sono stati scritti da 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-it/docs/kdevelop/kdevelop/cvs.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/cvs.docbook new file mode 100644 index 00000000000..75d9176efc0 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/cvs.docbook @@ -0,0 +1,131 @@ +<chapter id="cvs"> +<title +>Usare &CVS;</title> +<indexterm zone="cvs" +><primary +>CVS</primary +></indexterm> +<indexterm zone="cvs" +><primary +>controllo modifiche</primary +></indexterm> + +<sect1 id="cvs-basics"> +<title +>Fondamenti di &CVS;</title> + +<para +>&CVS; è il sistema di controllo delle modifiche che viene usato in molti progetti open source - incluso &kde;. Esso conserva tutti i sorgenti in una locazione centrale, chiamata <emphasis +>deposito</emphasis +> (repository). Dal deposito, gli sviluppatori possono controllare la versione corrente del progetto o gli snapshot di un qualunque istante di tempo. A differenza di altri sistemi di controllo delle modifiche, non è necessario <emphasis +>fare il lock</emphasis +> dei file su cui si vuole lavorare. In questo modo lo sviluppo può essere altamente parallelizzato. </para> + +<para +>Quando uno sviluppatore ha finito un compito, <emphasis +>effettua il commit</emphasis +> del suo codice (accompagnato da un messaggio di log). &CVS; si occupa della fusione dei cambiamenti fatti dai diversi sviluppatori. Ovviamente può succedere che più sviluppatori lavorino sullo stesso pezzo di codice; potrebbe risultare una serie di cambiamenti in conflitto tra loro (in pratica questo accade raramente, ed è spesso un segno di una carenza di comunicazione). In questo caso &CVS; rifiuta le modifiche; si potrà fare il commit di un file solo dopo che saranno risolti tutti i conflitti. </para> + +<para +>Finora si sono descritte le caratteristiche di base di &CVS; che compaiono normalmente, ma &CVS; ne fornisce molte di più: si possono mantenere diversi rami di un progetto (⪚ &kde; 1.1.2 e &kde; 2 erano rami dell'albero di sviluppo di &kde;), unire i cambiamenti di un ramo con un altro, chiedere le differenze tra le revisioni, la storia delle revisioni di file &etc; </para> + +<para +>&CVS; è implementato come un sistema client-server. Come utente, tutta la comunicazione con il deposito viene effettuata attraverso il programma a linea di comando &cvs;. É disponibile un livello più alto di interfaccia utente attraverso frontend come &cervisia; (<ulink url="http://cervisia.sf.net" +></ulink +>) o <application +>TkCVS</application +> (<ulink url="http://tkcvs.sf.net" +></ulink +>). In &kdevelop; può essere usata direttamente solo una piccola parte delle funzionalità di &cvs; che sono importanti per il lavoro quotidiano. </para> + +<para +>Viene supposta una conoscenza di base dell'uso di &CVS;. In particolare, si dovrebbe sapere come controllare un dato progetto nel deposito. Viene raccomandato il libro <quote +>Open Source Development With &CVS;</quote +> di Karl Fogel che è distribuito liberamente (tranne i capitoli non-tecnici). Vedere <ulink url="http://cvsbook.red-bean.com/cvsbook.html" +></ulink +>. </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-commands"> +<title +>Comandi &CVS; in &kdevelop;</title> + +<para +>Nella vista dei file, sono disponibili le seguenti voci del menu contestuale: </para> + +<variablelist> +<varlistentry> +<term +>Aggiungi al deposito</term> +<listitem> +<para +>Predispone i file contrassegnati per l'aggiunta al deposito. Il file viene trasferito al deposito quando si effettua il commit del file (o della directory che lo contiene) la volta successiva. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Rimuovi dal deposito</term> +<listitem> +<para +>Predispone un file per la rimozione dal deposito. Questo cancella il file anche nel file system locale, quindi usare questa funzione con prudenza! </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Aggiorna</term> +<listitem> +<para +>Esegue il comando <command +>cvs update</command +> per fondere tutti i cambiamenti degli altri utenti nella directory di lavoro. Quando si usa questa voce di menu su una directory normalmente viene fatto l'aggiornamento ricorsivamente, tranne il caso in cui questa opzione sia stata disabilitata nel file di configurazione <filename +>.cvsrc</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Commit</term> +<listitem> +<para +>Esegue il comando <command +>cvs commit</command +> per inviare tutte le modifiche locali al deposito. Notare che si dovrebbe fare l'aggiornamento prima di dare questo comando, altrimenti nel caso che un altro utente abbia inviato nel frattempo le proprie modifiche &CVS; potrebbe dare un messaggio di errore. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Tutti questi comandi sono eseguiti da &kdevelop; come sottoprocessi senza nessuna opzione a linea di comando o variabile d'ambiente. Questo potrebbe costituire un problema se ci si connette con il server &CVS; attraverso una connessione &ssh; che richiede l'inserimento di una password ogni volta che viene effettuato l'invio o l'aggiornamento. Ad esempio questo è necessario quando il proprio progetto è ospitato su <filename +>sourceforge.net</filename +>. Nella &CVS;/SSH FAQ che si può trovare nella documentazione di SourceForge sono descritte le soluzioni a questo problema. </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-behind"> +<title +>Dietro le quinte</title> + +<sect2 id="cvs-behind-workdir"> +<title +>Cosa registra &CVS; nella directory di lavoro</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- cvs-behind-workdir --> + +</sect1 +> <!-- cvs-behind --> + +</chapter +> <!-- cvs --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/debugger.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/debugger.docbook new file mode 100644 index 00000000000..9e6f2a92a70 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/debugger.docbook @@ -0,0 +1,335 @@ +<chapter id="debugger"> +<title +>L'interfaccia del debugger</title> +<indexterm zone="debugger" +><primary +>debugger</primary +></indexterm> + +<para +>Per i linguaggi C e C++, KDevelop contiene un debugger interno che è direttamente integrato nell'editor. Tecnicamente è implementato come un frontend che usa <application +>gdb</application +> (portable &GNU; debugger) attraverso una pipe. Il debugger può essere avviato in diversi modi: </para> + +<itemizedlist> +<listitem> +<para +>Con <menuchoice +><guimenu +>Debug</guimenu +><guimenuitem +>Avvia</guimenuitem +></menuchoice +>, il programma principale del proprio progetto viene caricato nel debugger. </para> +</listitem> + +<listitem> +<para +>Usando <menuchoice +><guimenu +>Debug</guimenu +><guimenuitem +>Esamina il file core...</guimenuitem +></menuchoice +> viene caricato in memoria un file core che è stato generato dal kernel del sistema operativo quando il programma è andato in crash (la generazione di file core potrebbe essere disattivata sul proprio sistema, vedere <application +>ulimit(1)</application +>). Questo è utile per un'analisi post-mortem del programma. </para> +</listitem> + +<listitem> +<para +>Con <menuchoice +><guimenu +>Debug</guimenu +><guimenuitem +>Collega al processo</guimenuitem +></menuchoice +> si usa il debugger su un programma già in esecuzione. Verrà mostrata una lista di processi da dove si può selezionare quello che dovrà essere supervisionato dal debugger. </para> +</listitem> + +<listitem> +<para +>Notare che questo debug è possibile se il proprio progetto è stato compilato con l'attivazione delle informazioni di debug. Possono essere attivate nella finestra di dialogo <guibutton +>Opzioni compilatore</guibutton +>. Quando questa opzione è attivata il compilatore genera dati aggiuntivi che permettono al debugger di associare i nomi dei file e numeri di linea con gli indirizzi nel file eseguibile. </para> +</listitem> +</itemizedlist> + +<para +>Il frontend del debugger fornisce diverse viste <quote +>nel</quote +> processo: </para> + +<para +>Se si tenta di effettuare il debug di un progetto che non ha le informazioni di debug si riceverà il messaggio <computeroutput +>Sorgente inesistente...</computeroutput +> nella barra di stato. Se si tenta di impostare un breakpoint, viene visualizzato come <computeroutput +>Pendente (aggiungi)</computeroutput +> nella finestra dei breakpoint (vedere sotto). </para> + +<variablelist> +<varlistentry> +<term +>Variabili</term> +<listitem> +<indexterm zone="debugger" +><primary +>osservare variabili</primary +></indexterm> +<para +>Questa finestra elenca i valori di tutte le variabili locali del punto corrente dell'esecuzione del programma. Esso include le variabili dell'intero stack delle chiamate, &ie; la funzione dove è stato interrotto il processo, la funzione che ha chiamato quella funzione e così via fino a <function +>main()</function +>. </para> + +<para +>Un altro ramo di variabili contiene le variabili di osservazione. Si possono configurare quali variabili mostrare qui. Possono essere osservate sia le variabili locali che globali. Si possono aggiungere variabili facendo clic sul pulsante <guibutton +>Aggiungi</guibutton +> o premendo <keycap +>RETURN</keycap +> mentre è selezionata la voce <guilabel +>Espressione da controllare</guilabel +>. Possono essere rimosse nuovamente attraverso il menu contestuale. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Stack del frame</term> +<listitem> +<indexterm zone="debugger" +><primary +>Stack del frame</primary +></indexterm> +<para +>(... da scrivere ...) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Breakpoint</term> +<listitem> +<indexterm zone="debugger" +><primary +>Breakpoint</primary +></indexterm> +<para +>In questa finestra vengono mostrati e modificati i breakpoint. &kdevelop; usa <application +>GDB</application +>, quindi per capire pienamente le sue funzionalità di debug, è necessario conoscere anche <ulink url="http://www.gnu.org/software/gdb" +>quest'ultimo</ulink +>. </para> + +<para +>Se si vuole controllare il codice sorgente, i breakpoint sono definiti nel file <filename +>kdevelop/languages/cpp/debugger/breakpoint.h</filename +>. </para> + +<para +>Nel bordo sinistro la finestra presenta vari pulsanti per:</para> + +<itemizedlist> +<listitem +><para +>Aggiungere un breakpoint vuoto</para +></listitem> +<listitem +><para +>Modificare il breakpoint selezionato</para +></listitem> + <listitem +><para +>Eliminare il breakpoint selezionato</para +></listitem> +<listitem +><para +>Rimuovere tutti i breakpoint</para +></listitem> +</itemizedlist> + +<para +>La parte principale della finestra è costituita da una tabella con 7 colonne. Ogni linea della tabella rappresenta un breakpoint. Le colonne sono:</para> + +<orderedlist> +<listitem +><para +>Casella di selezione</para +></listitem> +<listitem +><para +>Il tipo può essere: Non Valido, File:Linea, Punto di Controllo, Indirizzo, Funzione</para +></listitem> +<listitem +><para +>Stato: i valori possono essere:</para> +<itemizedlist> + <listitem +><para +>Attivo</para +></listitem> + <listitem +><para +>Disabilitato: ogni breakpoint può essere <quote +>abilitato</quote +> o <quote +>disabilitato</quote +>; finché non viene abilitato, non ha effetti sul programma.</para +></listitem> + <listitem +><para +>Pendente (aggiungi): un breakpoint è in questo stato se non è disponibile nessuna informazione di debug. Dalla pagina Info di GDB: <blockquote +><para +>Se una specifica posizione del breakpoint non viene trovata, potrebbe essere all'interno di una libreria condivisa (shared) che non è stata ancora caricata. In questo caso, si può far creare a GDB un breakpoint speciale (noto come <quote +>breakpoint pendente</quote +>) che tenterà di effettuare la propria risoluzione quando verrà caricata la libreria condivisa.</para +> </blockquote +> </para +></listitem> +</itemizedlist> +</listitem> +<listitem +><para +>Pendente (chiaro)</para +></listitem> +<listitem +><para +>Pendente (modifica)</para +></listitem> +<listitem +><para +>Posizione nel formato nomefile:numerolinea</para +></listitem> +<listitem +><para +>Condizione</para +></listitem> +<listitem +><para +>Ignora il conteggio: se esiste un numero <varname +>COUNT</varname +> maggiore di zero, per le prossime <varname +>COUNT</varname +> volte in cui viene raggiunto il breakpoint, l'esecuzione del programma non verrà interrotta; <application +>gdb</application +> non intraprende alcuna azione, a parte decrementare il valore della variabile.</para +></listitem> +<listitem +><para +>Trovati: conta quante volte è stato raggiunto il breakpoint.</para +></listitem> +</orderedlist> + + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Disassembla</term> +<listitem> +<indexterm zone="debugger" +><primary +>disassembla</primary +></indexterm> +<para +>(... da scrivere ...)</para> + +</listitem> +</varlistentry> +</variablelist> + + +<sect1 id="settingbreakpoints"> +<title +>Impostare i breakpoint</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- settingbreakpoints --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id ="debuggeroptions"> +<title +>Opzioni</title> + +<variablelist> +<varlistentry> +<term +>Visualizzare nomi mangled (storpiati)</term> +<listitem> +<indexterm zone="debugger" +><primary +>nomi storpiati</primary +></indexterm> +<indexterm zone="debugger" +><primary +>storpiatura</primary +><secondary +>nome</secondary +></indexterm> + +<para +>Nel C++, i nomi delle funzioni negli eseguibili sono detti <quote +>mangled</quote +> (storpiati), &ie; il nome della funzione include le informazioni sul tipo degli argomenti. Questo è necessario per il supporto al sovraccaricamento delle funzioni. L'algoritmo di mangling non è standardizzato e differisce persino tra versioni diverse del compilatore C++ &GNU;. </para> + +<para +>Normalmente nella finestra di disassemblaggio vengono visualizzati nomi non mangled, quindi le firme delle funzioni sono simili a come appaiono nel codice sorgente, quindi facilmente leggibili. In alternativa si può decidere di vedere i nomi mangled. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Tentare di impostare i breakpoint al caricamento delle librerie</term> +<listitem> +<indexterm zone="debugger" +><primary +>lazy breakpoint</primary +></indexterm> +<indexterm zone="debugger" +><primary +>Breakpoint</primary +><secondary +>lazy</secondary +></indexterm> + +<para +>Il backend del debugger <application +>gdb</application +> non permette di inserire breakpoint all'interno di codice non caricato. Questo potrebbe essere sconveniente in una applicazione altamente modulare, dove spesso il codice viene caricato su richiesta come un plugin (usando la funzione di libc <function +>dlopen(3)</function +>), quindi &kdevelop; ha esteso il proprio supporto per i breakpoint nelle librerie condivise. Se si imposta questa opzione si potranno impostare i breakpoint in librerie che non sono state caricate. Quando <application +>gdb</application +> notificherà che una libreria è stata caricata, &kdevelop; tenterà di impostare i breakpoint sospesi. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Abilitare la barra degli strumenti fluttuante</term> +<listitem> +<indexterm zone="debugger" +><primary +>barra degli strumenti del debugger</primary +></indexterm> +<indexterm zone="debugger" +><primary +>barra degli strumenti</primary +><secondary +>debugger</secondary +></indexterm> + +<para +>(... da scrivere ...) </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1 +> <!-- debuggeroptions --> + +</chapter +> <!-- debugger --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/doctree-add-bookmark.png b/tde-i18n-it/docs/kdevelop/kdevelop/doctree-add-bookmark.png Binary files differnew file mode 100644 index 00000000000..d11f7514ff7 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/doctree-add-bookmark.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/doctree-reduced.png b/tde-i18n-it/docs/kdevelop/kdevelop/doctree-reduced.png Binary files differnew file mode 100644 index 00000000000..87a04e52eea --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/doctree-reduced.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/doctree.png b/tde-i18n-it/docs/kdevelop/kdevelop/doctree.png Binary files differnew file mode 100644 index 00000000000..80fb34b75bb --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/doctree.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/doctreeview.png b/tde-i18n-it/docs/kdevelop/kdevelop/doctreeview.png Binary files differnew file mode 100644 index 00000000000..864d44a1e73 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/doctreeview.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/documentation.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/documentation.docbook new file mode 100644 index 00000000000..21508ff208a --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/documentation.docbook @@ -0,0 +1,73 @@ +<chapter id="documentation"> +<title +>Documentazione</title> + +<para +>Sfortunatamente la documentazione fa parte delle questioni più trascurate; tuttavia una volta impostata e mantenuta, la documentazione interna ed esterna fornisce un aiuto molto importante. </para> + +<para +>La documentazione ha diversi aspetti. C'è <itemizedlist> + <listitem +><para +><emphasis +>documentazione interna al progetto</emphasis +>, che consiste principalmente in <itemizedlist> + <listitem +><para +><emphasis +>commenti</emphasis +> nei file header/sorgente </para +></listitem> + <listitem +><para +><emphasis +>documentazione &API; interna</emphasis +> del proprio progetto generata da strumenti speciali come ⪚ &doxygen; </para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><emphasis +>documentazione esterna del progetto</emphasis +> che comprende <itemizedlist> + <listitem +><para +><emphasis +>documentazione &API; esterna</emphasis +> ⪚ di librerie di sistema (&kde; &Qt; &etc;) </para +></listitem> + <listitem +><para +>altra documentazione (manuali di programmazione, informazioni generali di sistema, articoli HowTo e simili) </para +></listitem> + </itemizedlist> + </para +></listitem> +</itemizedlist> +</para> +<para +>Tutta questa documentazione dovrebbe essere manutenibile e a portata di mano ogni volta che serve. &kdevelop; ha la soluzione proprio per questo. </para> + +<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen --> + +<sect1 id="docbrowser"> +<title +>Il browser della documentazione</title> + + +<figure id="screenshot-doctreeview" float="1"> +<title +>Una schermata dell'albero della documentazione</title> +<mediaobject> +<imageobject +><imagedata fileref="doctreeview.png"/></imageobject> +</mediaobject> +</figure> + +</sect1 +> <!-- docbrowser --> + +</chapter +> <!-- documentation --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/documents-contents.png b/tde-i18n-it/docs/kdevelop/kdevelop/documents-contents.png Binary files differnew file mode 100644 index 00000000000..38c57a70241 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/documents-contents.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/documents-search.png b/tde-i18n-it/docs/kdevelop/kdevelop/documents-search.png Binary files differnew file mode 100644 index 00000000000..9ea0faaf474 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/documents-search.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/edit-doctree-TOC-entry.png b/tde-i18n-it/docs/kdevelop/kdevelop/edit-doctree-TOC-entry.png Binary files differnew file mode 100644 index 00000000000..08fddb8c870 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/edit-doctree-TOC-entry.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/editing.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/editing.docbook new file mode 100644 index 00000000000..250e0c141c7 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/editing.docbook @@ -0,0 +1,608 @@ +<chapter id="editing"> +<title +>Strumenti di editing</title> + +<sect1 id="editing-snippets"> +<title +>Frammenti di codice</title> + +<itemizedlist> + <title +>Caratteristiche (panoramica preliminare)</title> + <listitem +><para +>SnippetPart aggiunge una vista che viene agganciata a destra </para +></listitem> + <listitem +><para +>L'aggiunta, la modifica e la rimozione di frammenti di codice può essere fatta attraverso un menu a comparsa </para +></listitem> + <listitem +><para +>Facendo doppio clic su una porzione di codice la inserirà nella vista attiva nella posizione attuale del cursore </para +></listitem> + <listitem +><para +>Gli aiuti mostrano i contenuti di un frammento di codice </para +></listitem> + <listitem +><para +>I frammenti di codice sono memorizzati nella cartella home, quindi ogni utente può avere i propri. </para +></listitem> + <listitem +><para +>I frammenti di codice possono contenere variabili sotto forma di $<varname +>NOMEVARIABILE</varname +>$. Quando vengono usati sarà chiesto all'utente di fornire i valori sostitutivi per le variabili </para +></listitem> +</itemizedlist> +</sect1 +> <!-- editing-snippets --> + +<sect1 id="keyboardmapping"> +<title +>Tasti Speciali</title> +<indexterm zone="keyboardmapping" +><primary +>scorciatoie da tastiera</primary +></indexterm> + +<para +>Di seguito verranno elencate le scorciatoie dell'editor di default. Possono essere configurate a piacimento. </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Sinistra </keycap +></para +></entry> +<entry +><para +>Si muove di un carattere a sinistra </para +></entry +></row> + +<row +><entry +><para +><keycap +>Destra </keycap +></para +></entry> +<entry +><para +>Si muove di un carattere a destra </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Sinistra </keycap +></keycombo +></para +></entry> +<entry +><para +>Si muove di una parola a sinistra </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Destra </keycap +></keycombo +></para +></entry> +<entry +><para +>Si muove di una parola a destra </para +></entry +></row> + +<row +><entry +><para +><keycap +>Su </keycap +></para +></entry> +<entry +><para +>Si muove in alto di una linea </para +></entry +></row> + +<row +><entry +><para +><keycap +>Giù </keycap +></para +></entry> +<entry +><para +>Si muove in basso di una linea </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Up </keycap +></para +></entry> +<entry +><para +>Si muove in alto di una pagina </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Down </keycap +></para +></entry> +<entry +><para +>Si muove in basso di una pagina </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Si muove all'inizio del file </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Si muove alla fine del file </para +></entry +></row> + +<row +><entry +><para +><keycap +>Home </keycap +></para +></entry> +<entry +><para +>Si muove all'inizio della linea </para +></entry +></row> + +<row +><entry +><para +><keycap +>End </keycap +></para +></entry> +<entry +><para +>Si muove alla fine della linea </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>Per tutti le combinazioni sopra elencate, può essere premuto in aggiunta il tasto &Shift; per selezionare dalla posizione attuale a quella seguente. </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Backspace </keycap +></para +></entry> +<entry +><para +>Cancella il carattere a sinistra </para +></entry +></row> + +<row +><entry +><para +><keycap +>Delete </keycap +></para +></entry> +<entry +><para +>Cancella il carattere sotto al cursore </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> C </keycap +></keycombo +></para +></entry> +<entry +><para +>Copia il testo selezionato negli appunti </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> V </keycap +></keycombo +></para +></entry> +<entry +><para +>Incolla il testo selezionato negli appunti </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> X </keycap +></keycombo +></para +></entry> +<entry +><para +>Cancella il testo selezionato e lo mette negli appunti </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Annulla </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Shift;&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Ripete </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +</sect1 +> <!-- keyboardmapping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="editing-reporter"> +<title +>Reporter di problema</title> + +<para +>(... da scrivere ...) </para> +</sect1 +> <!-- editing-reporter --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="searchinggrepping"> +<title +>Cercare e usare grep</title> +<indexterm zone="searchinggrepping" +><primary +>cercare</primary +></indexterm> +<indexterm zone="searchinggrepping" +><primary +>trovare</primary +></indexterm> + +<sect2 id="searching"> +<title +>cercare il testo</title> + +<para +><keycombo +>&Ctrl;<keycap +>F</keycap +></keycombo +>- Trova <keycombo +>&Ctrl;<keycap +>R</keycap +></keycombo +>- Sostituisci </para> + +</sect2 +> <!-- searching --> + + +<sect2 id="isearch"> +<title +>ISearch</title> +<indexterm zone="isearch" +><primary +>isearch</primary +></indexterm> +<indexterm zone="isearch" +><primary +>ricerca incrementale</primary +></indexterm> +<indexterm zone="isearch" +><primary +>ricerca</primary +><secondary +>incrementale</secondary +></indexterm> + +<para +>La ricerca tradizionale con il comando <menuchoice +><guimenu +>Modifica</guimenu +> <guimenuitem +>Trova</guimenuitem +></menuchoice +> richiede di specificare l'intero termine da cercare prima di avviare la ricerca. Spesso è molto più veloce cercare in modo incrementale. Se si fa clic nel campo chiamato <guilabel +>ISearch</guilabel +> nella barra degli strumenti, la ricerca verrà effettuata mentre si digita. Spesso il termine desiderato viene trovato dopo aver scritto 3 o 4 lettere. </para> + +</sect2 +> <!-- isearch --> + + +<sect2 id="grep"> +<title +>Grep</title> +<indexterm zone="grep" +><primary +>ricerca</primary +><secondary +>nei file</secondary +></indexterm> + +<para +>Entrambi i meccanismi di ricerca descritti prima sono limitati all'interno di un file sorgente. Attraverso la voce <guimenuitem +>Trova nei file...</guimenuitem +> nel menu <guimenu +>Modifica</guimenu +> è disponibile uno strumento aggiuntivo che permette di cercare attraverso un insieme (anche grande) di file. Fondamentalmente è un frontend per il programma &grep;(1). </para> + +<para +>Nella finestra di dialogo si può specificare in quali file effettuare la ricerca. In una casella a scelta multipla sono disponibili parecchi caratteri jolly. In questo modo si può facilmente restringere il meccanismo di ricerca ai file header. Inoltre, si può specificare la directory da dove far partire la ricerca. Se si seleziona la casella <guibutton +>Ricorsivo</guibutton +>, la ricerca proseguirà in tutte le sottodirectory della gerarchia sottostante alla directory specificata. </para> + +<para +>Generalmente il termine da cercare è un'espressione regolare che segue la sintassi POSIX. Per esempio, si può usare il termine <literal +>"\<K.*"</literal +> per trovare tutte le parole che iniziano con la lettera K. I seguenti caratteri sono interpretati in maniera speciale: </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry> + <literal +>.</literal> +</entry +><entry +>Corrisponde ad ogni carattere </entry +></row> +<row +><entry> + <literal +>^</literal> +</entry +><entry +>Corrisponde all'inizio di una linea </entry +></row> +<row +><entry> + <literal +>$</literal> +</entry +><entry +>Corrisponde alla fine di una linea </entry +></row> +<row +><entry> + <literal +>\<</literal> +</entry +><entry +>Corrisponde all'inizio di una parola </entry +></row> +<row +><entry> + <literal +>\></literal> +</entry +><entry +>Corrisponde alla fine di una parola </entry +></row> +<row +><entry> + <literal +>?</literal> +</entry +><entry +>L'elemento precedente è presente meno di una volta </entry +></row> +<row +><entry> + <literal +>*</literal> +</entry +><entry +>L'elemento precedente è presente zero o più volte </entry +></row> +<row +><entry> + <literal +>+</literal> +</entry +><entry +>L'elemento precedente è presente una o più volte </entry +></row> +<row +><entry> + <literal +>{n}</literal> +</entry +><entry +>L'elemento precedente è presente esattamente n volte </entry +></row> +<row +><entry> + <literal +>{n,}</literal> +</entry +><entry +>L'elemento precedente è presente n o più volte </entry +></row> +<row +><entry> + <literal +>{,n}</literal> +</entry +><entry +>L'elemento precedente è presente meno di n volte </entry +></row> +<row +><entry> + <literal +>{n,m}</literal> +</entry +><entry +>L'elemento precedente è presente almeno <literal +>n</literal +> volte ma meno di <literal +>m</literal +> volte </entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>I riferimenti alle espressioni tra parentesi sono disponibili tramite la notazione <literal +>\n</literal +>. </para> + +<para +>In aggiunta per i programmatori C++ ci sono alcuni modelli di ricerca tipici. Questi permettono ad esempio di cercare tutte le chiamate alle funzioni membro di un certo oggetto. </para> + +<para +>Quando si avvia una ricerca facendo clic sul pulsante <guibutton +>Trova</guibutton +>, essa verrà effettuata da un processo asincrono esterno. Tutti gli elementi trovati appariranno nella vista chiamata <guilabel +>Grep</guilabel +>. Si può saltare direttamente all'elemento trovato facendo clic su di esso. Notare che grep scansiona i file come sono memorizzati nel file system. Se si hanno versioni modificate di questi file nel proprio editor si potrebbero ricevere errori nel numero di linea o alcuni elementi potrebbero non essere validi — si possono evitare questi problemi salvando anticipatamente tutti i file. </para> + +</sect2 +> <!-- grep --> + +</sect1 +> <!-- searchinggrepping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="code-completion"> +<title +>Completamento del codice</title> + +<para +>(... da scrivere ...) </para> +</sect1 +> <!-- code-completion --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="newfiles"> +<title +>Creare nuovi file e classi</title> + +<para +>(... da scrivere ...) </para> + +<sect2 id="newfiles-edittemplates"> +<title +>Modificare i modelli</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- newfiles-edittemplates --> + +</sect1 +> <!-- newfiles --> + +</chapter +> <!-- editing --> +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-menu.png b/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-menu.png Binary files differnew file mode 100644 index 00000000000..24b2c5e4bf5 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-menu.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-regenerate.png b/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-regenerate.png Binary files differnew file mode 100644 index 00000000000..34a62957e22 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/editor-ctags-regenerate.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/editor-find-menu.png b/tde-i18n-it/docs/kdevelop/kdevelop/editor-find-menu.png Binary files differnew file mode 100644 index 00000000000..b1b0c0570dd --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/editor-find-menu.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/editor-search-doc.png b/tde-i18n-it/docs/kdevelop/kdevelop/editor-search-doc.png Binary files differnew file mode 100644 index 00000000000..7cd861df1ae --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/editor-search-doc.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/empty-ide.png b/tde-i18n-it/docs/kdevelop/kdevelop/empty-ide.png Binary files differnew file mode 100644 index 00000000000..fbb2662c850 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/empty-ide.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/file-browsers.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/file-browsers.docbook new file mode 100644 index 00000000000..2bd2f5f2f2f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/file-browsers.docbook @@ -0,0 +1,67 @@ +<chapter id="file-browsers"> +<title +>Il browser dei file</title> + +<para +>&kdevelop; può visualizzare diversi tipi di liste ed alberi per la selezione dei file nella parte sinistra della finestra principale: </para> + +<variablelist> +<varlistentry> +<term +>Albero dei file</term> +<listitem> +<para +>Questo mostra una vista ad albero della gerarchia di file al di sotto della directory del progetto. Facendo clic su un file verrà caricato nell'editor. Per i file che non contengono testo &kdevelop; avvierà un'applicazione che può gestire il tipo MIME corrispondente. </para> + +<para +>L'albero dei file viene aggiornato regolarmente ogni volta che cambia qualcosa nel file system. Per esempio, se si creano nuovi file o directory (anche fuori da &kdevelop;), il cambiamento si riflette immediatamente nella lista dei file. Su &Linux;, questa funzione utilizza la libreria FAM. Su altri sistemi operativi o su NFS le directory visualizzate sono controllate periodicamente a brevi intervalli. </para> + +<para +>L'albero dei file nasconde i file che normalmente non sono interessanti, come i file oggetto. In <guimenuitem +>Opzioni Progetto</guimenuitem +> nel menu <guibutton +>Gruppi di file</guibutton +> si possono configurare (come elenco di caratteri jolly separati da virgola) quali pattern devono essere usati per filtrare i file irrilevanti. </para> + +<para +>Inoltre si può decidere di limitare l'albero dei file per visualizzare solo i file che appartengono al progetto corrente. Questa modalità può essere cambiata facendo clic con il tasto destro del mouse sull'elemento radice dell'albero. </para> + +<figure id="screenshot-filetree" float="1"> +<title +>Una schermata dell'albero dei file</title> +<mediaobject> +<imageobject +><imagedata fileref="filetree.png"/></imageobject> +<textobject +><phrase +>Una schermata dell'albero dei file</phrase +></textobject> +</mediaobject> +</figure> + +</listitem> +</varlistentry> +<varlistentry> +<term +>Gruppi di file</term> +<listitem> +<para +>Questo visualizza i file che appartengono al progetto, raggruppati per estensione. Come nell'albero di file, si può modificare un file facendo clic con il &LMB;. </para> + +<para +>I gruppi mostrati in questa visualizzazione possono essere configurati con <guibutton +>Gruppi di file</guibutton +> nella finestra di dialogo <guimenuitem +>Opzioni progetto...</guimenuitem +>. Per adattare la visualizzazione alle proprie esigenze, è utile capire come i file vengono distribuiti nei gruppi. Per ogni file &kdevelop; attraversa tutti i gruppi dall'alto al basso. Per ogni gruppo viene controllato se il file corrisponde ad uno schema. Se viene trovata una corrispondenza il file viene visualizzato in quel gruppo e viene interrotta l'iterazione. Questo spiega perché gli schemi più generali dovrebbero essere messi al di sotto di quelli più specifici: per esempio l'ultimo schema dovrebbe essere un asterisco per il gruppo <guilabel +>Altro</guilabel +>. </para> + +</listitem> +</varlistentry> +</variablelist> + +</chapter +> <!-- file-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/file-list-close-selected.png b/tde-i18n-it/docs/kdevelop/kdevelop/file-list-close-selected.png Binary files differnew file mode 100644 index 00000000000..7fae22c5739 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/file-list-close-selected.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/file-selector.png b/tde-i18n-it/docs/kdevelop/kdevelop/file-selector.png Binary files differnew file mode 100644 index 00000000000..22d36d36663 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/file-selector.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/filetree.png b/tde-i18n-it/docs/kdevelop/kdevelop/filetree.png Binary files differnew file mode 100644 index 00000000000..09df127cd3a --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/filetree.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/find-in-files.png b/tde-i18n-it/docs/kdevelop/kdevelop/find-in-files.png Binary files differnew file mode 100644 index 00000000000..a39348c2c83 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/find-in-files.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/folded-tabs.png b/tde-i18n-it/docs/kdevelop/kdevelop/folded-tabs.png Binary files differnew file mode 100644 index 00000000000..a31b0e1e6fe --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/folded-tabs.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/getting-started.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/getting-started.docbook new file mode 100644 index 00000000000..8c2407a42c8 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/getting-started.docbook @@ -0,0 +1,4082 @@ + +<!-- +Please keep the formatting simple. +Do not indent XML constructs. +Keep lines at 80 characters length maximum. +--> + +<chapter id="getting-started"> + +<chapterinfo> +<authorgroup> +<author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> +<othercredit role="translator" +><firstname +>Alessio</firstname +> <surname +>Rolleri</surname +> <affiliation +><address +><email +>aroller@libero.it</email +></address +> </affiliation +><contrib +>Traduzione del documento</contrib +></othercredit +> +</authorgroup> +</chapterinfo> + +<title +>Iniziare ad usare &kdevelop;</title> + +<para +>Come iniziare ad usare l'&IDE; &kdevelop; dopo averlo installato? Siccome è una applicazione complessa, se l'utente non ha mai usato questo tipo di ambiente di sviluppo integrato, la curva di apprendimento potrebbe risultare piuttosto drastica.</para> + +<para +>Si cercherà di ammorbidirla analizzando una semplice applicazione C++ per KDE. Si effettuerà una (rapida) panoramica su:</para> + +<simplelist> +<member +><link linkend="gettingstarted-overview" +>Un primo sguardo — gli elementi dell'interfaccia utente dell'IDE &kdevelop;.</link +></member> +<member +><link linkend="gettingstarted-configure" +>Alcune configurazioni iniziali</link +></member> +<member +><link linkend="gettingstarted-new" +>Come creare un nuovo progetto</link> +</member> +<member +><link linkend="gettingstarted-edit" +>Alcuni consigli sui documenti</link +></member> +<member +><link linkend="gettingstarted-compile" +>Come compilare l'applicazione del progetto.</link +></member> +<member +><link linkend="gettingstarted-extend" +>Come aggiungere le classi e altri dettagli al proprio progetto.</link +></member> +<member +><link linkend="gettingstarted-debug" +>Come effettuare il debug dell'applicazione.</link +></member> +<member +><link linkend="gettingstarted-doc" +>Alcuni strumenti di base per costruire il programma o la documentazione utente.</link +></member> +<member +><link linkend="gettingstarted-keys" +>Per ultimo, ma non ultimo, le scorciatoie da tastiera</link +></member> +</simplelist> + +<para +>Prima di iniziare deve essere chiarito un concetto importante.</para> + +<formalpara> +<title +>Cosa attendersi?</title> +<para +>Come detto precedentemente, &kdevelop; è un <emphasis +>Ambiente di sviluppo integrato</emphasis +>, quindi non è uno strumento di sviluppo di per se, ma piuttosto un front end grafico per accedere facilmente ad una grande quantità di strumenti di sviluppo, molti dei quali richiedono complessi comandi da inserire in una console testuale.</para> +</formalpara> + +<para +>Mentre &kdevelop; facilita molte attività legate alla programmazione, questo insieme di strumenti mantiene una certa complessità. Quindi per imparare a fondo l'uso dell'&IDE; è necessario comprende l'utilizzo di questi strumenti che vengono eseguiti in sottofondo.</para> + +<para +>Dunque non verrà insegnato come scrivere software, ma piuttosto verrà effettuata una introduzione su come &kdevelop; è stato progettato per facilitare la programmazione. Se si vuole conoscere maggiormente lo scopo di un Integrated Development Environmente, si veda il capitolo <link linkend="unixdev" +>Sviluppo su &UNIX;</link +> che contiene una panoramica storica e in particolare il capitolo <link linkend="unixdev-ide" +>Integrare concetti e strumenti</link +>.</para> + +<note> +<para +>In seguito si tratterà il caso generale in cui &kdevelop; viene avviato nella <guilabel +>Modalità IDEAl semplificata</guilabel +>. Se è già stata selezionata un'altra interfaccia utente alcuni elementi potrebbero non essere presenti oppure mostrare comportamenti leggermente diversi da quelli descritti. Per verificare quale interfaccia utente viene attualmente usata, controllare nella finestra di dialogo <menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Configura KDevelop...</guimenuitem +><guimenuitem +>Interfaccia Utente</guimenuitem +></menuchoice +>.</para> +</note> + +<sect1 id="gettingstarted-overview"> +<title +>Un primo sguardo a &kdevelop;</title> + +<para +>Questo è quello che verrà visualizzato la prima volta che viene avviato &kdevelop;. Si troveranno informazioni preliminari su:</para> + +<simplelist> +<member +><link linkend="gettingstarted-overview-basic" +>Come si presenta l'IDE &kdevelop;.</link +></member> +<member +><link linkend="gettingstarted-overview-help" +>Come ricevere aiuto</link +></member> +<member +><link linkend="gettingstarted-overview-menu" +>Cosa è presente nei menu?</link +></member> +<member +><link linkend="gettingstarted-overview-tools" +>A cosa servono le viste strumenti?</link +></member> +</simplelist> + +<sect2 id="gettingstarted-overview-basic"> +<title +>In superficie</title> + +<para +>Quando si avvia &kdevelop; per la prima volta, verrà visualizzata una schermata simile a questa:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="empty-ide.png" format="PNG"/> +</imageobject> +<caption> +<para +>Aspetto iniziale di &kdevelop;</para> +<para +>(In realtà la finestra iniziale di &kdevelop; sarà più grande, ma gli elementi presenti sono gli stessi).</para> +</caption> +</mediaobject> +</screenshot> + +<formalpara> +<title +>Area di lavoro e linguette degli strumenti</title> +<para +>Inizialmente &kdevelop; userà la cosiddetta <link linkend="uimodes-survey" +>interfaccia utente IDEAl</link +>, dove l'area di lavoro ha la massima dimensione possibile ed è circondata a sinistra, destra e in basso da vari pulsanti simili a linguette. Facendo clic su una di queste linguette verrà aperta una cosiddetta <emphasis +>vista strumenti</emphasis +> che permette di svolgere un particolare compito.</para> +</formalpara> + +<formalpara> +<title +>Menu e barre degli strumenti</title> +<para +>In alto è presente la normale barra dei menu e diverse barre degli strumenti, alcune inizialmente vuote. Verranno riempite quando si aprirà un progetto.</para> +</formalpara> + +<formalpara> +<title +>Barra di stato</title> +<para +>Infine è presente nella parte bassa della finestra una barra di stato che fornisce brevi informazioni su vari compiti.</para> +</formalpara> +</sect2> + +<sect2 id="gettingstarted-overview-help"> +<title +>Come ricevere aiuto</title> + +<para +>Oltre al menu <guimenu +>Aiuto</guimenu +>, che fornisce supporto per questioni specifiche, si possono ottenere alcune brevi informazioni dalla barra di stato e da due tipi di aiuto.</para> + +<formalpara> +<title +>Cosa fa questa voce di menu?</title> +<para +>Quando si posiziona il cursore sopra una voce di menu verrà generalmente visualizzata una breve informazione nella barra di stato. In molti casi ripeterà il nome della selezione, mentre in alcuni altri saranno fornite ulteriori informazioni sullo scopo del comando del menu.</para> +</formalpara> + +<formalpara> +<title +>Qual è il nome di questo elemento?</title> +<para +>Quando si posiziona il cursore su un elemento, verrà visualizzato per qualche secondo un aiuto contenente il suo nome. É utile per orientarsi velocemente nella barra degli strumenti o nelle viste strumenti della modalità IDEAl quando è stata impostata la sola visualizzazione delle icone.</para> +</formalpara> + +<formalpara> +<title +>Cosa fa questo elemento?</title> +<para +>Per molti elementi dell'&IDE; sono disponibili ulteriori informazioni attraverso gli aiuti estesi. Selezionare <menuchoice +><guimenu +>Aiuto</guimenu +><guimenuitem +>Che cos'è?</guimenuitem +></menuchoice +> o premere <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +> e selezionare l'elemento con il cursore, che verrà visualizzato con un punto interrogativo. Con questo metodo si possono anche aprire i menu e fare clic su una voce specifica (sia attiva che disattivata) per visualizzare le eventuali informazioni aggiuntive.</para> +</formalpara> +</sect2> + +<sect2 id="gettingstarted-overview-menu"> +<title +>Cosa è presente nei menu?</title> + +<para +>Ci sono dieci menu selezionabili nella barra dei menu. La maggior parte di essi viene riempita quando è stato caricato un progetto, mentre altri quando viene aperto almeno un documento. In breve, essi permettono i seguenti tipi di azioni.</para> + +<note> +<para +>Questa è solo una breve panoramica. Vedere il capitolo relativo alla <link linkend="commands" +>Descrizione dei comandi</link +> per un elenco dettagliato.</para> +</note> + +<variablelist> +<varlistentry> +<term +><guimenu +>File</guimenu +></term> +<listitem> +<formalpara> +<title +>Azioni comuni</title> +<para +>Queste azioni sono molto standard. Permettono di creare, aprire, salvare, stampare, chiudere i file e uscire dall'applicazione &kdevelop;.</para> +</formalpara> + +<formalpara> +<title +>Annulla tutto</title> +<para +>Questo comando permette di annullare tutte le modifiche recenti ma non salvate ricaricando il file dal disco. Funziona su tutti i file aperti, non solo quelli che fanno parte di un progetto.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Modifica</guimenu +></term> +<listitem> +<para +>Questo menu è utile solo se è presente un documento aperto.</para> + +<formalpara> +<title +>Azioni comuni</title> +<para +>Fornisce le normali azioni annulla/rifai e taglia/copia/incolla, oltre a permettere di selezionare blocchi di testo in vari modi.</para> +</formalpara> + +<formalpara> +<title +>Trova e Sostituisci</title> +<para +>Sono presenti due potenti strumenti per le ricerche: <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Trova nei file...</guimenuitem +></menuchoice +> e <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Trova, seleziona e sostituisci...</guimenuitem +></menuchoice +>. In aggiunta alle normali azioni di ricerca e sostituzione limitate al documento aperto permettono di effettuare ricerche e sostituzioni globali in un solo colpo.</para> +</formalpara> + +<formalpara> +<title +>Modifica avanzata del testo</title> +<para +>In futuro sarà possibile riformattare il documento e completare automaticamente le parti di testo incomplete in vari modi.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Visualizza</guimenu +></term> +<listitem> +<para +>Come il menu <guimenu +>Modifica</guimenu +>, questo menu è utile solo quando è presente un documento aperto: saranno disponibili (assieme ad altre) le seguenti azioni:</para> + +<formalpara> +<title +>Cronologia</title> +<para +>Permette di muoversi avanti e indietro attraverso i vari documenti visitati</para> +</formalpara> + +<formalpara> +<title +>Traccia degli errori</title> +<para +>Naviga tra le linee di codice che contengono errori rilevati durante l'ultimo processo di compilazione.</para> +</formalpara> + +<formalpara> +<title +>Azioni relative all'editor</title> +<para +>Alcune voci del menu <guimenu +>Visualizza</guimenu +> controllano l'aspetto dell'editor in uso. Nel caso del componente &kate; (editor avanzato incorporato) saranno disponibili i seguenti comandi:</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +>Controllo del ritorno a capo automatico nella finestra del documento.</para> +</listitem> +<listitem> +<para +>Mostrare o nascondere diversi bordi della finestra del documento: numeri di linea, icone e contrassegni.</para> +</listitem> +<listitem> +<para +>Controllo della visualizzazione delle sezioni annidate (temporaneamente nascoste) nel codice sorgente.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Progetto</guimenu +></term> +<listitem> +<para +>Tutto il lavoro in &kdevelop; si basa sui <emphasis +>progetti</emphasis +>, che raccolgono file di codice sorgente, file per la gestione della compilazione e altre informazioni in una directory . In questo menu si può controllare quale progetto usare, le sue proprietà e altre azioni relative alla sua gestione. In particolare:</para> + +<formalpara> +<title +>Apri Progetto</title> +<para +>Permette di creare nuovi progetti, aprirne di nuovi e importare progetti di altri ambienti.</para> +</formalpara> + +<formalpara> +<title +>Opzioni progetto</title> +<para +>Permette di definire un insieme di varie proprietà del progetto</para> +</formalpara> + +<formalpara> +<title +>Gestione delle classi</title> +<para +>Aggiunge nuove classi al progetto e permette di attraversare l'albero di ereditarietà di una classe.</para> +</formalpara> + +<formalpara> +<title +>Distribuzione del progetto</title> +<para +>Aiuta a costruire pacchetti di distribuzione del progetto.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Compila</guimenu +></term> +<listitem> +<para +>Questo menu è dedicato alla compilazione e alla documentazione del progetto. Si può quindi usare quando è presente un progetto aperto. Fornisce le seguenti azioni:</para> + +<formalpara> +<title +>Compilare, effettuare il link, eseguire</title> +<para +>Permette di compilare ed effettuare il link dell'intero progetto o parti di esso ed eseguire l'applicazione dall'interno dell'&IDE;.</para> +</formalpara> + +<formalpara> +<title +>Preparazione alla compilazione</title> +<para +>Queste operazioni dipendono dal sistema make usato per il progetto. Nel caso di progetti automake, esse permettono di eseguire <filename +>Makefile.cvs</filename +> e <filename +>configure</filename +>. </para> +</formalpara> + +<formalpara> +<title +>Installare l'applicazione</title> +<para +>Permette di installare l'applicazione sia nelle directory locali che nelle directory di sistema accessibili solo all'utente root.</para> +</formalpara> + +<formalpara> +<title +>Documentazione API</title> +<para +>Costruisce o rimuove la documentazione API del progetto basata su doxygen in base alle opzioni del progetto</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Debug</guimenu +></term> +<listitem> +<para +>Anche se questo menu viene riempito una volta che un progetto è aperto, è ovviamente utile solo se il progetto è stato precedentemente compilato con le informazioni di debug (può essere impostato in <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto...</guimenuitem +></menuchoice +>. Sono presenti le seguenti azioni:</para> + +<formalpara> +<title +>Azioni normali del debugger</title> +<para +>La prima parte del menu <guimenu +>Debug</guimenu +> costituisce una interfaccia grafica al debugger &GNU; GDB. Permette di avviare e interrompere l'applicazione nel debugger e procedere in diverse modalità passo-per-passo.</para> +</formalpara> + +<formalpara> +<title +>Breakpoint</title> +<para +>&kdevelop; permette di impostare i breakpoint (punti di interruzione) in diversi modi nei sorgenti dell'applicazione. Uno viene effettuato usando la voce <guimenuitem +>Attiva/disattiva breakpoint</guimenuitem +>.</para> +</formalpara> + +<formalpara> +<title +>Debug avanzato</title> +<para +>Le altre voci del menu <guimenu +>Debug</guimenu +> compiono analisi più sofisticate. Usare <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +> per ottenere ulteriori informazioni sul loro funzionamento.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Script</guimenu +></term> +<listitem> +<para +>Attraverso questo menu si possono chiamare diversi script per compiere facilmente compiti noiosi sul testo presente nella finestra dell'editor selezionata. Tuttavia le azioni disponibili dipendono dallo script selezionato. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Finestra</guimenu +></term> +<listitem> +<para +>È un menu piuttosto standard. Si possono selezionare varie finestre aperte e chiudere una o più finestre contenenti documenti. Si può anche selezionare un gruppo di finestre da chiudere in un colpo solo.</para> + +<para +>A seconda del modulo usato nell'editor potrebbero essere presenti altre voci nel menu. Quindi il modulo di default dell'editor Kate permette di suddividere la finestra orizzontalmente o verticalmente.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Strumenti</guimenu +></term> +<listitem> +<para +>&kdevelop; è altamente configurabile. Si può selezionare il proprio editor preferito per i documenti e fornire strumenti modulari esterni per estendere le capacità di base dell'&IDE;. Il menu <guimenu +>Strumenti</guimenu +> controlla tutte queste impostazioni.</para> + +<formalpara> +<title +>Editing avanzato</title> +<para +>La parte alta del menu <guimenu +>Strumenti</guimenu +> viene fornita del plugin dell'editor in uso. Si può selezionare l'editor preferito in <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop</guimenuitem +> <guilabel +>Editor</guilabel +></menuchoice +>. Quando è stato selezionato un documento, questa porzione del menu visualizzerà i comandi di editing specifici del componente editor usato.</para> +</formalpara> + +<formalpara> +<title +>Gestione pagine web</title> +<para +>Se la finestra del documento attivo contiene una pagina HTML (⪚ visualizzata selezionando la <guilabel +>Documentazione</guilabel +>), il menu <guimenu +>Strumenti</guimenu +> visualizzerà ulteriori voci per la gestione delle pagine Web.</para> +</formalpara> + +<formalpara> +<title +>Altri strumenti</title> +<para +>Normalmente saranno presenti molte altre voci a seconda degli strumenti disponibili. Usare <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +> per ottenere ulteriori informazioni.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Impostazioni</guimenu +></term> +<listitem> +<para +>Questo menu permette di mostrare e nascondere la barra dei menu, le barre degli strumenti e la barra di stato. Inoltre si possono configurare le scorciatoie, le barre degli strumenti, le notifiche, l'editor e il comportamento generale di &kdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Aiuto</guimenu +></term> +<listitem> +<para +>Si può aprire questo manuale, leggere la documentazione Qt, aprire le pagine man (il tradizionale formato UNIX per i manuali) e le pagine info (il formato GNU per i manuali). Inoltre si possono segnalare i bug e ottenere varie informazioni sulla versione e sugli autori di KDevelop.</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="gettingstarted-overview-tools"> +<title +>A cosa servono le viste strumenti?</title> + +<para +>Nella modalità IDEAl l'area di lavoro sarà circondata da tre aree di pulsanti, chiamati <emphasis +>etichette della vista strumenti</emphasis +>. Esse forniscono l'accesso alle <emphasis +>schede della vista strumenti</emphasis +>, che permettono di eseguire molti compiti durante il processo di sviluppo del software. Ognuna delle seguenti tre schede è dedicata ad un diverso scopo.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Parte sinistra</title> +<para +>Fornisce accesso agli strumenti di navigazione e selezione</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Basso</title> +<para +>Queste viste mostrano i messaggi generati dai vari strumenti.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Parte destra</title> +<para +>Fornisce accesso alla documentazione e agli strumenti di gestione dei sorgenti.</para> +</formalpara> +</listitem> +</itemizedlist> + +<para +>Quando un progetto è stato aperto, aumenterà il numero delle schede disponibili per lavorare. L'effettivo insieme delle viste strumenti dipende dai <link linkend="plugin-tools" +>Moduli</link +> disponibili al momento in &kdevelop;. Ulteriori informazioni sono presenti nel capitolo <link linkend="setup" +>Configurare KDevelop</link +>.</para> + +<para +>Attualmente, quando non è aperto alcun progetto e sono stati caricati i moduli di default, si troveranno le seguenti viste. Le schede possono essere aperte e chiuse facendo clic sulla rispettiva linguetta.</para> + +<variablelist> +<varlistentry> +<term +>Navigazione e selezione</term> +<listitem> +<formalpara> +<title +>Selettore file</title> +<para +>Fornisce un pannello per navigare nell'albero delle cartelle e selezionare i file proprio come si farebbe in &konqueror;. Facendo clic su un file esso verrà aperto in una apposita finestra dell'editor nell'area di lavoro. Facendo clic con il tasto destro si aprirà un menu contestuale di navigazione e di gestione dei file.</para> +</formalpara> + +<formalpara> +<title +>Lista file</title> +<para +>Elenca i file attualmente aperti. Facendo clic su un file verrà selezionata la finestra dell'editor nell'area di lavoro. Si può usare per navigare velocemente attraverso un grande numero di file aperti. Inoltre questa vista fornisce dei mezzi per organizzare i file aperti in differenti <emphasis +>sessioni</emphasis +>. Questi sono particolarmente utili nei progetti molto grandi e complessi, aiutando lo sviluppatore nel concentrarsi nei diversi compiti. Facendo clic con il tasto destro del mouse verrà aperto un menu contestuale per la gestione del file.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Visualizzatori di messaggi</term> +<listitem> +<formalpara> +<title +>Applicazione</title> +<para +>Visualizza l'output di una applicazione che è stata avviata all'interno di &kdevelop;.</para> +</formalpara> + +<formalpara> +<title +>Diff</title> +<para +>Usato per visualizzare i contenuti delle patch. Mostra l'output dello strumento di visualizzazione delle differenze che può essere avviato menu <menuchoice +><guimenu +>Strumenti</guimenu +><guimenuitem +>Visualizzatore differenze...</guimenuitem +></menuchoice +>.</para> +</formalpara> + +<formalpara> +<title +>Messaggi</title> +<para +>Visualizza i messaggi generati dagli strumenti di compilazione eseguiti da &kdevelop; attraverso il menu <guimenu +>Compila</guimenu +>.</para> +</formalpara> + +<formalpara> +<title +>Trova nei file</title> +<para +>Visualizza un elenco di elementi trovati nella operazione di ricerca globale avviata dal menu <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Trova nei file...</guimenuitem +></menuchoice +>. Facendo clic su una linea farà automaticamente aprire il file corrispondente alla linea specificata in una finestra dell'editor.</para> +</formalpara> + +<formalpara> +<title +>Sostituisci</title> +<para +>Elenca i risultati della ricerca e sostituzione globale avviata dal menu <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Trova, seleziona e sostituisci...</guimenuitem +></menuchoice +>. In questa vista si può decidere se sostituire effettivamente ogni elemento che è stato trovato.</para> +</formalpara> +<note> +<para +>Questo strumento di ricerca e sostituzione globale è disponibile sono quando un progetto è stato caricato. In caso contrario lo strumento di sostituzione globale nel del menu <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Trova, seleziona e sostituisci...</guimenuitem +></menuchoice +> sarà disabilitato.</para> +</note> + +<formalpara> +<title +>Konsole</title> +<para +>Apre <application +>Konsole</application +> di &kde;, un emulatore di terminale dove si possono inserire comandi da tastiera attraverso una tradizionale interfaccia a linea di comando &UNIX;.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Gestione documentazione e sorgenti</term> +<listitem> +<formalpara> +<title +>Documentazione</title> +<para +>Attraverso questo strumento è possibile accedere all'insieme completo della documentazione. Si può accedere ai file di documentazione, generalmente online da remoto, in maniera strutturata. Sono presenti diversi metodi per consultare direttamente le informazioni utili contenute nei manuali &kde; o &Qt;.</para> +</formalpara> + +<para +>Per ulteriori dettagli, consultare i capitoli <link linkend="documentation" +>Documentazione</link +> e <link linkend="setup-docu" +>Configurazione della documentazione</link +>.</para> + +<formalpara> +<title +>Frammenti di codice</title> +<para +>Questo strumento consente di memorizzare permanentemente frammenti di testo da utilizzare in seguito durante l'editing. È molto flessibile, infatti il testo memorizzato può contenere un insieme di variabili che vengono sostituite dal relativo testo quando si inserisce il frammento.</para> +</formalpara> +<para +>Ulteriori informazioni sono disponibili nei capitoli <link linkend="editing-snippets" +>Frammenti di codice</link +> e <link linkend="setup-snippets" +>Impostazione dello strumento frammenti di codice</link +>.</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> +</sect1> + +<sect1 id="gettingstarted-configure"> +<title +>Un po' di configurazione</title> + +<para +>Prima di iniziare veramente con un primo progetto di esempio, si dovrebbe adattare il comportamento di &kdevelop; alle proprie necessità. Anche se per il momento la maggior parte delle impostazioni sono adeguate, alcune dovrebbero essere modificate.</para> + +<note> +<para +>Se si vuole conoscere la configurazione di &kdevelop; in dettaglio, consultare il capitolo <link linkend="setup" +>Configurazione di KDevelop</link +>.</para> +</note> + +<sect2 id="gettingstarted-configure-general"> +<title +>Alcune impostazioni generali</title> + +<para +>Per configurare &kdevelop; fare clic nel menu <menuchoice +><guimenu +>Impostazioni</guimenu +></menuchoice +> e selezionare <menuchoice +><guimenuitem +>Configura KDevelop...</guimenuitem +></menuchoice +>. Verrà aperta la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +> che contiene a destra la pagina seguente <guilabel +>Generale</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-general.png" format="PNG"/> +</imageobject> +<caption> +<para +>Finestra di dialogo generale</para> +</caption> +</mediaobject> +</screenshot> + +<para +>La maggior parte delle impostazioni predefinite saranno adeguate, ma probabilmente si potrebbe voler modificare due impostazioni.</para> + +<formalpara> +<title +>Directory progetti predefinita</title> +<para +>Al primo avvio di &kdevelop;, questa impostazione conterrà probabilmente la propria directory home. Tuttavia la maggior parte degli utenti desidera avere una directory dedicata per lo sviluppo del software. Se lo si desidera, modificare la casella di testo inserendo la cartella preferita per lo sviluppo. Essa potrà essere selezionata dall'albero delle cartelle premendo il pulsante a sinistra <guilabel +>Apri finestra file</guilabel +> etichettato con l'icona della cartella.</para> +</formalpara> + +<para +>In questi esempi si utilizzerà un utente chiamato <filename class="directory" +>devel</filename +>. Quindi si deve sempre sostituire <quote +>devel</quote +> con il proprio nome utente. L'utente devel utilizzerà la cartella <filename class="directory" +>/home/devel/projects</filename +> per lo sviluppo del software. Nuovamente, si deve sostituire <filename class="directory" +>projects</filename +> con il nome della propria cartella scelta. </para> + +<para +>Per impostazione predefinita, &kdevelop; creerà una sottocartella all'interno di questa cartella genitore per ogni progetto creato. Quindi ⪚ tutti i file di un progetto di nome <quote +>Hello</quote +> verrebbero inseriti nella cartella <filename class="directory" +>/home/devel/projects/hello</filename +>.</para> + +<para +>Ovviamente si possono scavalcare queste impostazioni in caso di necessità. Per maggiori informazioni vedere il capitolo <link linkend="applicationwizard" +>Procedura guidata per le applicazioni</link +>.</para> + +<formalpara> +<title +>Output del compilatore</title> +<para +>Quando &kdevelop; effettua la compilazione dei sorgenti, verranno visualizzati i messaggi degli strumenti di compilazione come <application +>make</application +> nella vista <guilabel +>Messaggi</guilabel +> nella parte bassa dell'area di lavoro. Normalmente questi messaggi saranno oltremodo prolissi. Per avere una migliore percezione di quello che accade, &kdevelop; permette di accorciarli.</para> +</formalpara> + +<para +>A seconda della versione utilizzata, l'impostazione <guilabel +>Output del compilatore</guilabel +> può essere impostata su <quote +>Completo</quote +>, che comporterà la visualizzazione completa dei contenuti dei messaggi. Si potrebbe voler modificare questa impostazione su un valore molto più conveniente, come <quote +>Molto breve</quote +>. </para> + +<caution> +<para +>È necessario prestare attenzione sul fatto che nella finestra <guilabel +>Messaggi</guilabel +> saranno visualizzate <emphasis +>solo le informazioni di base</emphasis +>. Probabilmente in caso di errori si vorranno esaminare una quantità maggiore (se non tutti) di messaggi. Comunque, non sono perduti: facendo clic con il tasto destro sulla vista <guilabel +>Messaggi</guilabel +> e selezionare ⪚ <quote +>Output completo del compilatore</quote +> dal menu contestuale.</para> +</caution> +</sect2> + +<sect2 id="gettingstarted-configure-search"> +<title +>Inizializzazione degli indici di ricerca della documentazione</title> + +<para +>Prima di iniziare lo sviluppo vero e proprio, sarebbe preferibile inizializzare un altro elemento. Se si vuole effettuare ricerche nella documentazione in modo regolare, è necessario creare gli indici di ricerca prima di compiere queste ricerche. Quindi prima di iniziare a lavorare con &kdevelop;, si dovrebbero inizializzare gli indici di ricerca.</para> + +<para +>Aprire la vista strumenti <guilabel +>Documentazione</guilabel +> nella parte destra della finestra principale e selezionare <guilabel +>Cerca</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="documents-search.png" format="PNG"/> +</imageobject> +<caption +><para +>Dove generare gli indici di ricerca</para +></caption> +</mediaobject> +</screenshot> + +<para +>Premere il pulsante <guibutton +>Aggiorna configurazione</guibutton +> per assicurarsi che siano stati impostati gli strumenti principali di ricerca. Verrà visualizzata una finestra di dialogo, indicando <quote +>File di configurazione aggiornato</quote +>. Fare clic su <guibutton +>OK</guibutton +>.</para> + +<para +>Dopo aver compiuto questo passaggio, &kdevelop; sarà pronto ad analizzare la documentazione e potrà costruire gli indici. Premere il pulsante a destra <guibutton +>Aggiorna indice</guibutton +>. Apparirà la finestra di dialogo <guilabel +>Generazione indici di ricerca</guilabel +> visualizzando i progressi dell'operazione.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-docu-indexgen.png" format="PNG"/> +</imageobject> +<caption +><para +>&kdevelop; sta generando gli indici di ricerca della documentazione.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Questa operazione potrebbe richiedere tempo, a seconda della dimensione della documentazione e della velocità del proprio computer. Infine il pulsante <guibutton +>Annulla</guibutton +> sarà sostituito dal pulsante <guibutton +>OK</guibutton +>. Premerlo per procedere.</para> + +<note> +<itemizedlist> +<listitem> +<para +>In alcuni casi l'applicazione <application +>htdig</application +> utilizzata da &kdevelop; per le ricerche potrebbe non essere configurata correttamente. Per ulteriori informazioni, fare riferimento al capitolo <link linkend="setup-docu-textsearch" +>Impostazione degli indici di ricerca</link +>.</para> +</listitem> +<listitem> +<para +>Per poter consultare la documentazione API specifica di &kde; e &Qt;, è necessario che siano presenti le <emphasis +>KDELibs Apidocs</emphasis +> durante l'installazione di &kdevelop;. Se si riscontrano problemi durante la generazione degli indici o la ricerca degli identificatori, come negli <link linkend="gettingstarted-edit-defs" +>esempi seguenti</link +>, assicurarsi che questa documentazione esista e che sia accessibile. Vedere <link linkend="kdevelop-install" +>Installare KDevelop</link +> per ulteriori dettagli.</para> +</listitem> +</itemizedlist> +</note> +</sect2> +</sect1> + + +<sect1 id="gettingstarted-new"> +<title +>Iniziare un nuovo progetto</title> + +<para +>Molte applicazioni consistono di dozzine, centinaia e a volte anche migliaia di file, che devono essere organizzati in modo strutturato e gestibile. Per questo motivo, &kdevelop; organizza i compiti di sviluppo software in <emphasis +>progetti</emphasis +>. Quindi, in generale, la prima cosa da fare per iniziare a sviluppare è creare un nuovo progetto.</para> + +<para +>Fortunatamente, &kdevelop; fornisce uno strumento chiamato Procedura guidata per le applicazioni, che permette di creare un nuovo progetto in modo semplice. (Vedere il capitolo <link linkend="applicationwizard" +>Primi passi —la procedura guidata per le applicazioni</link +> per ulteriori informazioni).</para> + +<para +>Ora si creerà una semplice applicazione &kde; per illustrare come viene facilmente creato un nuovo progetto e quali file e strumenti saranno utilizzati. Si fornirà un breve sguardo a:</para> + +<simplelist> +<member +><link linkend="gettingstarted-new-setup" +>Come iniziare un nuovo progetto con l'aiuto della procedura guidata per le applicazioni</link +></member> +<member +><link linkend="gettingstarted-new-files" +>Quali file vengono inizialmente impostati dalla procedura guidata</link +></member> +<member +><link linkend="gettingstarted-new-toolviews" +>Viste strumenti aggiuntive visualizzate con il progetto</link +></member> +</simplelist> + +<sect2 id="gettingstarted-new-setup"> +<title +>Come creare un nuovo progetto</title> + +<para +>Ora si creerà un semplice progetto &kde; <quote +>Hello World</quote +>, seguendo i seguenti passi.</para> + +<procedure> +<step> +<para +>Per avviare la procedura guidata per le applicazioni, fare clic sul menu <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Nuovo Progetto...</guimenuitem +></menuchoice +>.</para> +</step> + +<step> +<para +>Verrà visualizzata la finestra di dialogo <guilabel +>Crea nuovo progetto</guilabel +>. In alto a sinistra, in <guilabel +>Tutti i progetti</guilabel +> saranno elencati diversi linguaggi di programmazione.</para> + +<substeps> +<step> +<para +>Si vuole costruire una applicazione per &kde; in C++, quindi fare clic sul <guilabel +>+</guilabel +> a fianco dell'etichetta <guilabel +>C++</guilabel +> per espandere quella sezione.</para> +</step> + +<step> +<para +>Verranno visualizzate diverse sottosezioni. Siccome si vuole creare una applicazione &kde;, aprire l'ulteriore sottosezione facendo clic sul <guilabel +>+</guilabel +> vicino all'etichetta <guilabel +>KDE</guilabel +>.</para> +</step> + +<step> +<para +>Saranno elencati una serie di <emphasis +>modelli di progetto</emphasis +>. Fare clic su <guilabel +>Una semplice applicazioni KDE</guilabel +>.</para> + +<para +>Nelle due finestre a destra appariranno un'anteprima dell'applicazione relativa al modello del progetto selezionato e una breve descrizione.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-new-project.png" format="PNG"/> +</imageobject> +<caption> +<para +>Selezionare un modello di progetto <quote +>Hello World</quote +></para> +</caption> +</mediaobject +></screenshot> +</step> + +<step> +<para +>L'applicazione necessita di un nome. Inserire nell'area <guilabel +>Proprietà</guilabel +> in basso un nome adatto nel campo <guilabel +>Nome applicazione</guilabel +>.</para> + +<para +>In questo esempio si è usato il nome <quote +>Hello</quote +>, ma si può inserire un qualunque nome di proprio gradimento che contenga lettere, numeri e il simbolo di underline. La procedura guidata rifiuterà ogni altro carattere.</para> +</step> + +<step> +<para +>Assicurarsi che la casella <guilabel +>Posizione</guilabel +> visualizzi il nome della cartella padre dedicata ai progetti impostata nel capitolo precedente <link linkend="gettingstarted-configure" +>Un po' di configurazione</link +>. In caso contrario, inserire un nome di cartella adatto o selezionarne una dall'elenco di cartelle visualizzate facendo clic sul pulsante a destra con l'icona della cartella.</para> + +<para +>Se tutto andrà bene, la linea intitolata <guilabel +>Posizione finale</guilabel +> in basso mostrerà il percorso completo che sarà usato dal nuovo progetto. Nel caso appaia la scritta <quote +>(non valido</quote +>, allora provare un nuovo nome per il progetto e assicurarsi che la cartella padre per i progetti nella casella <guilabel +>Posizione</guilabel +> esista e sia accessibile in scrittura.</para> +</step> + +<step> +<para +>Fare clic sul pulsante <guibutton +>Avanti</guibutton +> in basso nella finestra per procedere.</para> +</step> +</substeps> +</step> + +<step> +<para +>Si aprirà la pagina <guilabel +>Opzioni progetto</guilabel +> della finestra di dialogo. Assicurarsi che i dati nelle caselle <guilabel +>Autore</guilabel +> e <guilabel +>Posta elettronica</guilabel +> siano corretti. Generalmente saranno generati a partire dalle impostazioni utente di &kde; fornite nella finestra <guilabel +>Password e account utente</guilabel +> del Centro di controllo di &kde;. Se non fossero corretti, inserire i valori desiderati per l'applicazione.</para> + +<screenshot id="gettingstarted-new-setup-options"> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-hello-options.png" format="PNG"/> +</imageobject> +<caption> +<para +>Fornire il nome e l'indirizzo email (opzionale)</para> +</caption> +</mediaobject> +</screenshot> + +<note> +<para +>Si deve inserire almeno il nome dell'<guilabel +>Autore</guilabel +>: esso è obbligatorio per l'impostazione dei file dell'applicazione.</para> +</note> + +<para +>Quando tutto è corretto, verrà abilitato il pulsante <guibutton +>Avanti</guibutton +>. Fare clic per procedere.</para> +</step> + +<step> +<para +>Per il momento possono essere saltate le pagine <guilabel +>Sistema di controllo versione (VCS)</guilabel +>, <guilabel +>Template per i file .h</guilabel +> e <guilabel +>Template per i file .cpp</guilabel +>. Saltarle facendo clic sul pulsante <guibutton +>Avanti</guibutton +> ed infine sul pulsante <guibutton +>Fine</guibutton +>.</para> +</step> +</procedure> + +<para +>La procedura guidata creerà un insieme di file iniziali nella cartella specificata nel campo <guilabel +>Posizione finale</guilabel +> nel passo 2c.</para> + +<para +>Una volta che è finita la fase di creazione, &kdevelop; aprirà una finestra dell'editor per il file di implementazione della <emphasis +>finestra principale dell'applicazione</emphasis +> (che in questo esempio è <filename +>hello.cpp</filename +>), in modo da poter procedere subito.</para> +</sect2> + +<sect2 id="gettingstarted-new-files"> +<title +>File iniziali del progetto</title> + +<para +>Anche se il progetto Hello dell'esempio è piuttosto semplice, la procedura guidata ha creato un numeroso gruppo di file sorgenti e di gestione del progetto. Essi possono essere visualizzati facilmente facendo clic nella vista strumenti <guilabel +>Albero file</guilabel +> in basso a sinistra. In questo modo verrà visualizzato un elenco di file simile al seguente.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-hello-new.png" format="PNG"/> +</imageobject> +<caption> +<para +>File iniziale del progetto <quote +>Hello World</quote +></para> +</caption> +</mediaobject> +</screenshot> + +<para +>Per verificare l'insieme dei file prodotti dalla procedura guidata, si possono aprire le sottocartelle nella vista strumenti di sinistra <guilabel +>Albero file</guilabel +>. Si possono aprire le sottosezioni dell'albero per osservarne la struttura.</para> + +<para +>Solo per dimostrazione, sono state espanse tutte le sezioni della vista strumenti <guilabel +>Gestore Automake</guilabel +> a destra dove sono elencati alcuni dei sorgenti del progetto.</para> + +<sect3 id="gettingstarted-new-files-copyright"> +<title +>Problemi di copyright</title> + +<para +>Tutte le applicazioni conformi a &GNU; devono possedere un copyright. Le note di copyright devono essere inserite in due livelli: nei <emphasis +>singoli file dell'applicazione</emphasis +> e a livello <emphasis +>globale dell'applicazione</emphasis +>. La procedura guidata inserirà le appropriate informazioni di copyright e di licenza nei file del progetto.</para> + +<formalpara> +<title +>Copyright nei singoli file sorgente</title> +<para +>Ci si rammenta della pagina <link linkend="gettingstarted-new-setup-options" +><guilabel +>Opzioni del progetto</guilabel +></link +> nella finestra di dialogo durante la creazione di un nuovo progetto? In essa era necessario indicare il nome dell'autore e, facoltativamente, un indirizzo di posta elettronica. Controllando in alto nella finestra dell'editor del file <guilabel +>hello.cpp</guilabel +> attualmente visualizzata nell'area di lavoro si può notare che la procedura guidata ha inserito queste informazioni nell'intestazione dedicata alla licenza di ogni file sorgente creato.</para> +</formalpara> + +<programlisting +>/*************************************************************************** + * Copyright (C) 2006 by Joe User * + * joe@user.com * + * * + * This program is free software; you can redistribute it and/or modify * +</programlisting> + +<para +>Si potrà trovare lo stesso testo nell'intestazione di ogni file sorgente creato all'interno di &kdevelop; (utilizzando gli strumenti appropriati per la creazione dei file). Queste impostazioni sono memorizzate in alcuni modelli di file che possono essere trovati nella cartella <filename class="directory" +>templates</filename +>.</para> + +<formalpara> +<title +>Copyright dell'applicazione</title> +<para +>Una volta avviata l'applicazione &kde;, l'utente può visualizzare i dati relativi al menu <guilabel +>Aiuto</guilabel +> alla voce <guimenu +>Informazioni su</guimenu +>. Dando un'occhiata al file <filename +>main.cpp</filename +> si può trovare una linea simile alla seguente, anch'essa inserita dalla procedura guidata.</para> +</formalpara> + +<programlisting +>int main(int argc, char **argv) +{ + KAboutData about("hello", I18N_NOOP("Hello"), version, description, + KAboutData::License_GPL, "(C) 2006 Joe User", 0, 0, + "joe@user.com"); + about.addAuthor( "Joe User", 0, "joe@user.com" ); +</programlisting> + +<para +>In questo modo sono state inserite le informazioni sul nome dello sviluppatore (in questo caso <quote +>Joe User</quote +>) e l'indirizzo di posta elettronica nelle pagine Accordo di licenza e <guilabel +>Autori</guilabel +> nella finestra <guilabel +>Informazioni su</guilabel +>.</para> + +<important> +<para +>Quando si effettuano modifiche sostanziali ad un progetto esistente, assicurarsi di inserire il proprio nome e il proprio indirizzo di posta elettronica nelle informazioni di copyright su ogni file modificato e nelle informazioni visualizzate nella finestra. Non si deve essere timidi: in questo modo si aiuterà considerevolmente la comunità open source.</para> +</important> +</sect3> + +<sect3 id="gettingstarted-new-files-source"> +<title +>File sorgenti iniziali</title> + +<para +>La procedura guidata inserirà i file sorgente nella sottocartella <filename class="directory" +>src</filename +> del progetto, dove saranno presenti i file <filename +>main.cpp</filename +>, <filename +>hello.h</filename +> e <filename +>hello.cpp</filename +>.</para> + +<para +>Saranno presenti alcuni file aggiuntivi che possono essere trovati in una tipica applicazione &kde;</para> + +<itemizedlist> +<listitem> +<para +><filename +>hello.desktop</filename +> contiene alcuni metadati usati da &kdevelop; per la manutenzione e l'avvio dell'applicazione.</para> +</listitem> + +<listitem> +<para +><filename +>hi16-app-hello.png</filename +> e <filename +>hi32-app-hello.png</filename +> contengono alcune icone predefinite, utilizzate nella visualizzazione dell'applicazione.</para> +</listitem> + +<listitem> +<para +>Infine, il file <filename +>helloui.rc</filename +> contiene una descrizione dell'interfaccia utente, di fatto i menu forniti dall'applicazione.</para> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-files-doc"> +<title +>Documentazione iniziale dell'applicazione</title> + +<para +>Nella sottocartella <filename class="directory" +>doc/en</filename +> si può trovare il file <filename +>index.docbook</filename +>. Si tratta di un modello predefinito che si può utilizzare per iniziare a scrivere la documentazione utente.</para> +</sect3> + +<sect3 id="gettingstarted-new-files-project"> +<title +>File del progetto e ausiliari</title> + +<para +>Nella vista strumenti <guilabel +>Albero file</guilabel +>, i file introdotti precedentemente sono visualizzati in grassetto, mentre altri non lo sono. Questa visualizzazione riflette il diverso compito per cui vengono utilizzati questi file. Quelli visualizzati in grassetto influenzano direttamente l'applicazione; i file sorgenti produrranno il codice che può essere eseguito, mentre gli altri forniranno i dati e la documentazione necessaria. Questi ultimi devono essere gestiti ed elaborati ordinatamente nelle fasi di compilazione del progetto, e sono chiamati <emphasis +>file di progetto</emphasis +>.</para> + +<para +>Anche nella finestra <guilabel +>Gestore automake</guilabel +> in basso a destra dell'area di lavoro si troverà un elenco dei file di progetto. Queste informazioni sono utilizzate dal gestore per occuparsi del controllo della compilazione, come verrà illustrato in seguito.</para> + +<para +>I file visualizzati non in grassetto sono di natura più ausiliaria. Essi appartengono a diverse classi:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Controllo di compilazione del progetto</title> +<para +>Questi file controllano i processi di compilazione, l'installazione, la costruzione della compilazione, &etc;. Se il progetto usa gli strumenti <application +>autotools</application +> di &GNU;, si troverà un file chiamato <application +>Makefile.am</application +> in tutte le cartelle del progetto. Sono un tipo di file make che contengono dei comandi per la compilazione che verranno eseguiti assieme ai vari file <filename +>configure</filename +> durante le fasi della compilazione. Tale processo genera un file <filename +>Makefile</filename +> in ogni cartella. A loro volta, da questi ultimi, l'utility <application +>make</application +> effettuerà la compilazione dell'applicazione.</para> +</formalpara> + +<para +>I file <filename +>Makefile.am</filename +> devono essere gestiti attraverso il processo di sviluppo. Fortunatamente, &kdevelop; esonera lo sviluppatore da questo peso attraverso il gestore automake, che in sostanza è un front end grafico per la gestione dei contenuti dei <filename +>Makefile.am</filename +>.</para> + +<para +>Gli altri file di controllo attualmente elencati sono <filename +>configure.in.in</filename +> e <filename +>subdirs</filename +> nella cartella root del progetto. Essi saranno elaborati da alcuni file nella cartella di amministrazione di &kde; <filename class="directory" +>admin</filename +> per produrre altri tipi di file <filename +>configure</filename +> e <filename +>Makefile</filename +> ed infine i binari dell'applicazione.</para> +</listitem> + +<listitem> +<formalpara> +<title +>File di controllo di &kdevelop;</title> +<para +>&kdevelop; necessita di alcuni file di controllo e dati di amministrazione, che si trovano nella cartella root del progetto. In questo esempio essi sono <filename +>hello.kdevelop</filename +>, <filename +>hello.kdevelop.pcs</filename +> e <filename +>hello.kdevses</filename +>.</para> +</formalpara> + +<para +>Il file <filename +>xxx.kdevelop</filename +> (dove <quote +>xxx</quote +> indica il nome del progetto) è particolarmente importante: infatti è il <emphasis +>file di progetto di KDevelop 3</emphasis +> ed è necessario se si vuole in seguito caricare il progetto in questo &IDE;.</para> + +<warning> +<para +>Non si dovrebbe mai modificare, rinominare o cancellare questi file di controllo! Probabilmente l'&IDE; non funzionerebbe correttamente con il progetto.</para> +</warning> +</listitem> + +<listitem> +<formalpara> +<title +>File di descrizione GNU del progetto</title> +<para +>Alcuni file della cartella root del progetto sono obbligatori per ogni applicazione conforme agli standard &GNU;. Essi sono: <filename +>AUTHORS</filename +>, <filename +>ChangeLog</filename +>, <filename +>INSTALL</filename +>, <filename +>COPYING</filename +> (che contiene la GNU GENERAL PUBLIC LICENSE), <filename +>INSTALL</filename +>, <filename +>NEWS</filename +>, <filename +>README</filename +> e <filename +>TODO</filename +>.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Altri file</title> +<para +>Altri file, non ancora menzionati, sono:</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +><filename +>Doxyfile</filename +> controlla la creazione della documentazione sulle &API; interne dell'interfaccia di programmazione specifiche del progetto.</para> +</listitem> + +<listitem> +<para +>La cartella <filename class="directory" +>templates</filename +> contiene i modelli di file che l'&IDE; utilizza come base per creare i nuovi file sorgenti. Questi file possono essere modificati in qualunque momento e le modifiche si rifletteranno nei rispettivi file sorgenti che si generano successivamente.</para> + +<para +>Si potrebbe voler ⪚ riallineare gli asterischi nelle linee relative alle note di copyright che sono stati inseriti dalla procedura guidata nei modelli dei file <filename +>cpp</filename +> e <filename +>h</filename +>, in modo da migliorarne l'aspetto.</para> +</listitem> + +<listitem> +<para +>La cartella <filename class="directory" +>po</filename +> sarà usata per la localizzazione. È una parte essenziale dei file di progetto (contiene infatti un file <filename +>Makefile.am</filename +>), ma verrà utilizzata per le traduzioni. Non è di grande interesse per gli sviluppatori software.</para> +</listitem> + +<listitem> +<para +>Infine la cartella<filename class="directory" +>admin</filename +> è necessaria principalmente alle applicazioni &kde;. Contiene un insieme di file necessari per la gestione dei sorgenti e dei file binari dell'applicazione, in modo che possano essere integrati correttamente nell'ambiente &kde;</para> +</listitem> +</itemizedlist> + +</listitem> +</itemizedlist> +</sect3> +</sect2> + +<sect2 id="gettingstarted-new-toolviews"> +<title +>Ulteriori viste strumenti</title> + +<para +>Si può notare come non appena la procedura guidata ha terminato la creazione del progetto, sono apparse diverse viste strumenti aggiuntive. Esse infatti sono utili solo durante lo sviluppo di un progetto e forniscono le seguenti funzionalità.</para> + +<note> +<para +>Le viste strumenti effettivamente disponibili dipendono dai moduli caricati in &kdevelop;. Per controllare quali moduli sono presenti vedere il capitolo <link linkend="setup-plugins" +>Moduli</link +> per ottenere informazioni.</para> +</note> + +<sect3 id="gettingstarted-new-toolviews-left"> +<title +>Strumenti di navigazione e selezioni (parte sinistra)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Segnalibri</title> +<para +>Permette di contrassegnare qualunque linea in un file di testo in modo da ritornare velocemente in quella posizione. &kdevelop; memorizzerà questi <emphasis +>segnalibri</emphasis +>, anche se si chiude la finestra dell'editor. Questa vista strumenti elenca tutti i segnalibri per nome del file e per numero di linea. È sufficiente fare clic su un segnalibro per aprire la finestra delle editor corrispondente con il cursore posizionato sulla relativa linea.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Classi</title> +<para +>Elenca le classi, i metodi, &etc; del progetto. Facendo clic su una voce verrà aperto il file header o sorgente relativo in una finestra dell'editor e il cursore sarà posizionato sulla corrispondente dichiarazione o definizione.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Gruppi di file</title> +<para +>Elenca i file del progetto in raggruppamenti &ie; Sorgenti, Interfaccia utente, icone, traduzioni e altro. Facendo clic su una voce verrà aperto il file corrispondente in una finestra dell'editor.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Variabili</title> +<para +>Questa vista è usata dallo strumento di debug per visualizzare, valutare e controllare le variabili durante le sessioni di debug.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-toolviews-bottom"> +<title +>Messaggi (in basso)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Valgrind</title> +<para +><application +>Valgrind</application +> è un analizzatore run-time di applicazioni. Questa vista strumenti visualizza i risultati delle analisi effettuate da questo strumento, che viene usato ⪚ per trovare le perdite di memoria (memory leaks).</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Problemi di sicurezza</title> +<para +>Il modulo di &kdevelop; <guilabel +>Controllo di sicurezza</guilabel +> analizza i file sorgente attualmente modificati per cercare diversi problemi di sicurezza comuni che possono essere inseriti nelle applicazioni e avverte l'utente in questa vista strumenti.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Breakpoint</title> +<para +>Questa vista permette di impostare, cancellare e gestire esplicitamente i punti di interruzione di debug nei file sorgente dell'applicazione. Viene usata assieme al debugger.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>CTags</title> +<para +>Permette di creare un database di identificatori utilizzando la applicazione <application +>CTags</application +>. Questo database di tag può quindi essere usato al di fuori di questa vista strumenti per cercare nei sorgenti gli identificatori desiderati. Facendo clic sulla linea di un oggetto trovato verrà aperta una finestra dell'editor e verrà posizionato il cursore sull'identificatore corrispondente.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Problemi</title> +<para +>&kdevelop; mantiene una traccia di tutti i problemi di programmazione comuni nel file attualmente aperto nell'editor e li notifica all'utente in questa vista strumenti.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-toolviews-right"> +<title +>Gestione sorgenti (parte destra)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Gestore automake</title> +<para +>Il gestore automake è principalmente un front end grafico per la gestione dei contenuti dei file <filename +>Makefile.am</filename +> posizionati nelle cartelle del progetto. Questa vista strumenti utilizza due finestre: quella superiore visualizza parte delle sottocartelle del progetto, ovvero quelle che contengono esplicitamente dei <emphasis +>file del progetto</emphasis +>. Ogni sottocartella di questo tipo deve contenere un file <filename +>Makefile.am</filename +> e in questo contesto viene chiamata <filename +>sottoprogetto</filename +>.</para> +</formalpara> + +<para +>Facendo clic su una voce verranno visualizzati nella finestra inferiore i file contenuti nel relativo sottoprogetto. I file elencati saranno raggruppati a seconda della loro funzionalità nel sottoprogetto.</para> + +<para +>Il gestore automake è un potente strumento per gestire il progetto e i relativi sottoprogetti, oltre ai vari compiti svolti dai vari file di progetto. Saranno illustrati brevemente gli aspetti principali <link linkend="gettingstarted-extend-automake" +>più avanti</link +>, mentre per una descrizione più completa si può consultare il capitolo <link linkend="project-management" +>Compilazione e gestione del progetto</link +>.</para> +</listitem> +</itemizedlist> +</sect3> +</sect2> +</sect1> + + +<sect1 id="gettingstarted-edit"> +<title +>Alcuni consigli sui documenti</title> + +<para +>In questo progetto di esempio, la procedura guidata aprirà il file <filename +>hello.cpp</filename +> in una finestra dell'editor, in modo da poter iniziare a lavorare immediatamente. Si presume che il lettore abbia una conoscenza sufficiente per utilizzare un editor, tuttavia ci sono alcune caratteristiche pratiche che sono peculiari di &kdevelop; come le finestre dell'editor a schede. Si effettuerà una breve panoramica ad alcune caratteristiche, tra cui:</para> + +<simplelist> +<member +><link linkend="gettingstarted-edit-headers" +>Come passare velocemente tra il file header e il file di implementazione</link +></member> +<member +><link linkend="gettingstarted-edit-defs" +>Come accedere velocemente alle dichiarazioni e alle definizioni</link +></member> +<member +><link linkend="gettingstarted-edit-arrange" +>Come adattare le finestre dell'editor alle proprie necessità</link +></member> +<member +><link linkend="gettingstarted-edit-problems" +>Come tenere sott'occhio i problemi comuni</link +></member> +</simplelist> + +<sect2 id="gettingstarted-edit-headers"> +<title +>Passare dal file header al file di implementazione</title> + +<para +>&kdevelop; fornisce un metodo veloce e facile per passare da un file di implementazione (<filename +>.cpp</filename +>) ad un file header (<filename +>.h</filename +>) e viceversa. Fare clic con il tasto destro nella finestra dell'editor, e apparirà il seguente menu</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-switch-header.png" format="PNG"/> +</imageobject> +<caption +><para +>Come passare da un file di implementazione a un file header</para +></caption> +</mediaobject> +</screenshot> + +<para +>Trovare la voce <guimenuitem +>Commuta tra intestazione e implementazione</guimenuitem +> e selezionarla. &kdevelop; cercherà il file di header o di implementazione e lo aprirà in un'altra finestra dell'editor. In questo esempio, facendo clic con il tasto destro nel file sorgente <filename +>hello.cpp</filename +> verrà visualizzato il file <filename +>hello.h</filename +>.</para> + +<para +>Inoltre, se si fa clic con il tasto destro all'interno del codice di implementazione di una classe, &kdevelop; posizionerà il cursore nella relativa linea di dichiarazione nel file header. Viceversa, con il clic destro su una linea di dichiarazione si passerà alla implementazione corrispondente.</para> + +<para +>Se è già presente la finestra dell'editor contente il file, &kdevelop; la attiverà ed eventualmente riposizionerà il cursore.</para> +</sect2> + +<sect2 id="gettingstarted-edit-defs"> +<title +>Come accedere alle dichiarazioni e alle definizioni</title> + +<para +>Cosa fare se si sta lavorando su un file sorgente e si vuole controllare la dichiarazione o la definizione di un identificatore? Si può effettuare facilmente questa operazione facendo clic con il tasto destro sull'identificatore desiderato.</para> + +<para +>Tuttavia esistono due situazioni da considerare, ovvero:</para> +<simplelist> +<member +><link linkend="gettingstarted-edit-defs-external" +>Accedere agli identificatori definiti esternamente</link +>, e</member> +<member +><link linkend="gettingstarted-edit-defs-project" +>gestire gli identificatori interni</link +></member> +</simplelist> + +<sect3 id="gettingstarted-edit-defs-external"> +<title +>Dichiarazioni e definizioni esterne</title> + +<para +>Nella maggior parte dei casi si vorrà cercare un identificatore che è stato definito esternamente al proprio progetto. Nei progetti &kde; tali identificatori sono tipicamente documentati nelle varie librerie &kde; o &Qt;. Se &kde; e &kdevelop; sono stati installati correttamente, allora &kdevelop; sarà in grado di accedere alla cosiddetta documentazione API e di cercare all'interno di essa l'identificatore.</para> + +<para +>Ad esempio, nella finestra dell'editor del file <filename +>hello.cpp</filename +> si trovano le seguenti linee.</para> + +<programlisting +>Hello::Hello() + : KMainWindow( 0, "Hello" ) +{ +</programlisting> + +<para +>Facendo clic con il tasto destro su <classname +>KMainWindow</classname +> verrà visualizzato un menu. Selezionando la voce <guimenuitem +>Ricerca nella documentazione: KMainWindow</guimenuitem +> si aprirà la vista strumenti <guilabel +>Documentazione</guilabel +>, dove sarà stata inserita la voce <classname +>KMainWindow</classname +> nella sottopagina <guilabel +>Cerca</guilabel +>. Dopo poco tempo verrà aperta una finestra dell'editor nell'area di lavoro principale dove sarà visualizzata la pagina di riferimento della documentazione API di KDE relativa alla classe <classname +>KMainWindow</classname +>.</para> + +<para +>Questa sarà visualizzato come segue (È stata deliberatamente aperta la pagina <guilabel +>Documentazione</guilabel +>, <guilabel +>Cerca</guilabel +> per illustrare il risultato della selezione).</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-search-doc.png" format="PNG"/> +</imageobject> +<caption +><para +>Come cercare un identificatore documentato esternamente</para +></caption> +</mediaobject> +</screenshot> + +<para +>Si può selezinare la voce <guimenuitem +>Cerca documentazione su: KMainWindow</guimenuitem +>. In questo caso verrà aperta la vista strumenti <guilabel +>Documentazione</guilabel +>, mostrando tipicamente una selezione di pagine che contengono il termine cercato (nel nostro caso i termini saranno probabilmente i nomi delle classi <classname +>KMainWindow</classname +> e <classname +>KMainWindowInterface</classname +>). Selezionare la voce di interesse e verrà visualizzata in una finestra del'editor la documentazione relativa.</para> + +<note> +<para +>Nel caso il procedimento non funzionasse, allora potrebbe non essere stato ancora creato un indice della documentazione. Per crearlo, seguire le istruzioni <link linkend="gettingstarted-configure-search" +>fornite precedentemente</link +> e riprovare.</para> +</note> +</sect3> + +<sect3 id="gettingstarted-edit-defs-project"> +<title +>Dichiarazioni e definizioni interne al progetto</title> + +<para +>Le funzioni di ricerca nella documentazione esterna presentano tuttavia delle limitazioni. Non si può ovviamente cercare un identificatore esterno se è stato definito e usato solo all'interno del progetto. &kdevelop; può invece utilizzare gli indici costruiti dall'applicazione <application +>CTags</application +> per effettuare ricerche all'interno dei sorgenti del proprio progetto.</para> + +<para +>Prima di poterlo usare nel progetto di esempio Hello, è necessario generare un indice. Questo può essere effettuato tramite la vista strumenti <guilabel +>CTags</guilabel +> nella parte inferiore dell'area di lavoro.</para> + +<para +>Quando si fa clic sulla linguetta <guibutton +>CTags</guibutton +> verrà visualizzata una finestra di dialogo dove si troverà il seguente pulsante nell'angolo inferiore destro.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-regenerate.png" format="PNG"/> +</imageobject> +<caption +><para +>Costruzione dell'indice CTags con il pulsante <guibutton +>Rigenerare</guibutton +></para +></caption> +</mediaobject> +</screenshot> + +<para +>Premere il pulsante <guibutton +>Rigenerare</guibutton +> e attendere qualche secondo. In seguito il messaggio <guilabel +>Nessun database CTags trovato</guilabel +> sarà sostituito con l'indicazione della data attuale. Ora si è pronti per effettuare le ricerche di identificatori all'interno dei sorgenti del progetto.</para> + +<tip> +<para +>La data presente a fianco del pulsante <guilabel +>Rigenerare</guilabel +> permette di ricordarsi dell'eventualità di indici non aggiornati. Quando non si riesce a trovare un identificatore nel progetto, si consideri la possibilità di dover rigenerare l'indice. Nei grandi progetti questo potrebbe occupare un lasso di tempo considerevole, ma si dovrebbe prendere l'abitudine di rigenerare l'indice regolarmente dopo aver effettuato modifiche significative ai file sorgente.</para> +</tip> + +<para +>La ricerca di un identificatore può essere svolta tramite diversi mezzi.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Utilizzo della vista strumenti CTags</title> +<para +>È un metodo semplice. Inserire il nome dell'identificatore nel campo di input <guilabel +>Ricerca</guilabel +> in basso a sinistra. &kdevelop; cercherà di completare la parola che si sta inserendo mostrando tutte le posizioni occupate dagli identificatori il cui nome inizia con la sequenza di caratteri che si sta inserendo.</para> +</formalpara> + +<para +>Se ad esempio si vuole sapere se è stato utilizzato l'identificatore <quote +>Hello</quote +> si può inserire la lettera "H" nel campo <guilabel +>Ricerca</guilabel +>. &kdevelop; inzierà immediatamente la ricerca, visualizzando questi risultati:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-lookup.png" format="PNG"/> +</imageobject> +<caption +><para +>Come cercare un identificare nella vista strumenti <guilabel +>CTags</guilabel +></para +></caption> +</mediaobject> +</screenshot> + +<para +>Facendo clic su un elemento della lista, verrà aperto una finestra dell'editor che visualizzerà il file relativo e verrà spostato il cursore nella posizione appropriata.</para> +</listitem> + +<listitem> +<formalpara> +<title +>Utilizzo di un menu contestuale in un file sorgente</title> +<para +>È un metodo pratico quando si sta lavorando su un certo file sorgente. Supponendo di lavorare sul file <filename +>main.cpp</filename +>. Incontrando la linea seguente</para> +</formalpara> +<programlisting +>Hello *mainWin = 0; +</programlisting> +<para +>si vuole sapere dove è stato utilizzato l'identificatore <quote +>Hello</quote +> nella applicazione. Per trovarlo, fare clic con il tasto destro sull'identificatore e sarà visualizzato un menu, che mostrerà le seguenti linee</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>Ottenere informazioni di <application +>CTags</application +> su un identificatore interno del progetto</para +></caption> +</mediaobject> +</screenshot> + +<para +>Facendo clic sulla voce di interesse, ad esempio <guilabel +>Ctags - Vai alla definizione: Hello</guilabel +>, verrà aperta immediatamente la finestra dell'editor relativa al file <filename +>hello.cpp</filename +> e verrà posizionato il cursore proprio sulla definizione della classe:</para> +<programlisting +>Hello::Hello() + : KMainWindow( 0, "Hello" ) +{ +</programlisting> +</listitem> + +<listitem> +<formalpara> +<title +>Effettuare una ricerca globale</title> +<para +>Questo tipo di ricerca è utile se si vuole trovare un testo arbitrario nei sorgenti del progetto. Una ricerca globale può essere effettuata in due modi:</para> +</formalpara> +<itemizedlist> +<listitem> +<para +>Si può avviare una ricerca globale attraverso il menu <menuchoice +><guimenu +>Modifica</guimenu +> <guimenuitem +>Trova nei file...</guimenuitem +></menuchoice +>, oppure</para> +</listitem> +<listitem> +<para +>si può usare direttamente il menu contestuale attraverso un clic destro nella finestra dell'editor.</para> +</listitem> +</itemizedlist> + +<para +>Verrà illustrato il secondo metodo nel progetto di esempio Hello, ma i risultati saranno simili al primo metodo. Si ipotizzerà che si stia lavorando sul file <filename +>hello.cpp</filename +> e il cursore sia posizionato sul primo identificare Hello. Ora si vuole sapere dove la parola <quote +>Hello</quote +> è stata utilizzata nei sorgenti del progetto e quante volte essa compare. Questo è un tipico esempio di uso delle funzioni di ricerca globale di &kdevelop;.</para> + +<para +>Mantenendo il cursore sopra a <quote +>Hello</quote +>, fare clic con il tasto destro del mouse. Apparirà il menu contestuale dove si deve selezionare la voce <guilabel +>Grep: Hello</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-find-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>Avviare una ricerca globale all'interno di una finestra dell'editor</para +></caption> +</mediaobject> +</screenshot> + +<para +>Verrà visualizzata la seguente finestra <guilabel +>Trova nei file</guilabel +> (esattamente la stessa che compare selezionando il menu <menuchoice +><guimenu +>Modifica</guimenu +> <guimenuitem +>Trova nei file...</guimenuitem +></menuchoice +>).</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="find-in-files.png" format="PNG"/> +</imageobject> +<caption +><para +>Un front end grafico e versatile per effettuare ricerche globali all'interno del progetto</para +></caption> +</mediaobject> +</screenshot> + +<para +>Si può osservare che è uno strumento molto versatile per avviare ricerche con le applicazioni <application +>find</application +> e <application +>grep</application +> . Non si effettueranno approfondimenti dettagliati, ma si possono tentare degli esperimenti. Al momento dovrebbe essere preselezionato nel campo <guilabel +>Schema</guilabel +> la parola <quote +>Hello</quote +>. In caso contrario, inserirla e premere il pulsante <guibutton +>Cerca</guibutton +> in basso a destra.</para> + +<para +>Verrà aperta la vista strumenti <guilabel +>Trova nei file</guilabel +> in basso, visualizzando i nomi dei file e le linee relative a tutte le parole <quote +>Hello</quote +> presenti nel progetto. Come sempre, facendo clic su una voce &kdevelop; visualizzerà esattamente il file e la posizione relativa in una finestra dell'editor.</para> + +<para +>Esistono due linee di particolare interesse nella finestra della vista strumenti.</para> +<itemizedlist> +<listitem> +<para +>In alto a destra si troveranno le sequenze di comandi utilizzate effettivamente da &kdevelop; per effettuare la ricerca. Sono utili per controllare con maggiore precisione la ricerca.</para> +</listitem> + +<listitem> +<para +>In basso verrà visualizzato il numero di voci trovate durante la ricerca. In questo esempio si dovrebbe leggere <quote +>*** 11 corrispondenze trovate ***</quote +>.</para> +</listitem> +</itemizedlist> + +<para +>&kdevelop; memorizza i risultati della ricerca attraverso la sessione corrente. Se si avvia una nuova ricerca globale, i risultati verranno elencati in una nuova scheda della vista strumenti <guilabel +>Trova nei file</guilabel +>.</para> +</listitem> +</itemizedlist> +</sect3> +</sect2> + +<sect2 id="gettingstarted-edit-arrange"> +<title +>Adattare le finestre dell'editor</title> + +<para +>Quando si deve lavorare con progetti estesi e complessi, ci si potrebbe trovare nella situazione di avere molte schede inserite nella barra delle schede. &kdevelop; fornisce delle funzionalità per ripulire, riordinare e raggruppare queste schede. </para> +<simplelist> +<member +><link linkend="gettingstarted-edit-arrange-clean" +>Come rimuovere schede non necessarie</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-tabs" +>Come riorganizzare le schede</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-split" +>Come visualizzare diversi file nell'area di lavoro contemporaneamente</link +></member> +<member +><link +linkend="gettingstarted-edit-arrange-sourceheader" +>Come modificare contemporaneamente i file header e sorgente C++</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-group" +>Come raggruppare i file sorgente in sessioni di sviluppo</link +></member> +</simplelist> + +<sect3 id="gettingstarted-edit-arrange-clean"> +<title +>Ripulire la barra delle schede</title> + +<para +>Se l'insieme delle schede inizia a diventare disorganizzato, si potrebbe voler chiudere tutte le schede che non sono più necessarie. Con &kdevelop; è possibile effettuare questa operazione attraverso la chiusura in blocco delle finestre dell'editor aperte oppure specificando quali finestre devono essere chiuse e quali devono restare aperte.</para> + +<formalpara> +<title +>Chiusura di varie schede alla volta</title> +<para +>Questo è un metodo che permette di chiudere tutte le schede non necessarie che si può trovare anche in altre applicazioni &kde;. Si può usare il menu <guimenu +>Finestra</guimenu +> oppure fare clic con il tasto destro su una scheda per</para> +</formalpara> +<itemizedlist> +<listitem> +<para +>chiudere la finestra dell'editor attualmente selezionata,</para> +</listitem> +<listitem> +<para +>chiudere tutte le altre finestre dell'editor aperte, oppure</para> +</listitem> +<listitem> +<para +>chiudere tutte le finestre in un solo colpo (disponibile solo nel menu <guimenu +>Finestra</guimenu +>).</para> +</listitem> +</itemizedlist> + +<formalpara> +<title +>Chiusura delle schede selezionate</title> +<para +>Il metodo passo per passo della chiusura delle schede può diventare scomodo quando è presente un grande numero di schede tra le quali se ne vogliono mantenere diverse aperte.Invece che cercare e chiudere una scheda dopo l'altra, si possono selezionare le schede da un elenco e chiuderle con un solo clic del mouse.</para> +</formalpara> + +<para +>Si suppone di avere, nel progetto Hello di esempio, diversi file aperti: <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +>, <filename +>helloui.rc</filename +>, <filename +>hello.desktop</filename +> e <filename +>main.cpp</filename +>. Si vuole chiudere tutte le finestre tranne <filename +>hello.cpp</filename +> e <filename +>hello.h</filename +>. Nella vista strumenti <guilabel +>Lista file</guilabel +> saranno elencati alfabeticamente tutti i file aperti, in modo da individuare facilmente quelli che devono essere chiusi. Procedere come segue:</para> + +<procedure> +<step> +<para +>Aprire <guilabel +>Lista file</guilabel +> e, tenendo premuto il tasto <keycap +>Ctrl</keycap +> fare clic nella lista sui file che si vuole chiudere.</para> +</step> +<step> +<para +>Mantenendo il puntatore dei mouse sul nome di un file della lista, fare clic con il tasto destro del mouse.</para> +</step> +<step> +<para +>Dal menu contestuale <guimenu +>Lista file</guimenu +> selezionare <guimenuitem +>Chiudi selezionato</guimenuitem +>.</para> +</step> +</procedure> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-close-selected.png" format="PNG"/> +</imageobject> +<caption +><para +>Come chiudere le finestre selezionate in una sola operazione.</para +></caption> +</mediaobject> +</screenshot> +<para +>&kdevelop; chiuderà tutte le finestre dell'editor desiderate e si può procedere con una barra di schede nuovamente pulita.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-tabs"> +<title +>Come riorganizzare le schede</title> + +<para +>Anche se sono aperte solo le finestre necessarie, si potrebbe desiderare di organizzare le schede in modo logico. &kdevelop; fornisce alcuni metodi per farlo:</para> + +<formalpara> +<title +>Impostazione di base — dove posizionare le nuove schede</title> + +<para +>Per impostazione predefinita, quando si apre una nuova finestra, verrà posizionata la relativa scheda a destra della scheda attualmente aperta.Questa impostazione può essere modificata in modo che la nuova scheda sia posizionata all'estrema destra nella barra delle schede.</para> +</formalpara> +<para +>Per attivare questo comportamento è necessario modificare le impostazioni dell'interfaccia utente di &kdevelop;</para> +<procedure> +<step> +<para +>Selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +></menuchoice +></para> +</step> +<step> +<para +>Nella parte destra della finestra di dialogo fare clic sull'icona <guilabel +>Interfaccia utente</guilabel +>. Verrà visualizzata la pagina <guilabel +>Interfaccia Utente</guilabel +>.</para> +</step> +<step> +<para +>Nell'angolo in basso si trova la sezione intitolata <guilabel +>Navigazione con schede</guilabel +>. Rimuovere la marcatura della casella <guilabel +>Apri nuova scheda dopo la corrente</guilabel +>.</para> +</step> +<step> +<para +>Chiudere &kdevelop; e riavviarlo. Ora le schede delle nuove finestre aperte saranno posizionate all'estremità destra nella barra delle schede.</para> +</step> +</procedure> + +<para +>Sfortunatamente, questa impostazione non può essere cambiata al volo durante una sessione di lavoro. Si dovrebbe decidere quale comportamento si desidera, almeno fino al prossimo avvio di &kdevelop;.</para> + +<formalpara> +<title +>Come riorganizzare le schede</title> +<para +>Data la varietà dei compiti svolti durante lo sviluppo, prima o poi sorge la necessità di riorganizzare le schede delle finestre.</para> +</formalpara> +<para +>Fare clic sulla scheda che si vuole spostare con il tasto centrale del mouse e spostare leggermente il mouse: il cursore assumerà l'aspetto di due frecce incrociate. Ora è possibile trascinare la scheda, mantenendo il tasto centrale premuto, fino alla posizione desiderata.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-split"> +<title +>Visualizzare diversi file contemporaneamente</title> + +<para +>A prima vista è presente sempre una singola finestra dell'editor aperta per lavorare su un file sorgente. Anche se si può cambiare velocemente scheda, a volte si desidera avere diversi file aperti contemporaneamente, ⪚ per avere un maggior controllo durante i compiti più difficili. &kdevelop; permette di suddividere l'area di lavoro in diverse sezioni, che possiedono una propria serie di schede.</para> + +<para +>Sono presenti due comandi raggiungibili attraverso il menu <guimenu +>Finestra</guimenu +> o facendo clic con il tasto destro in una una scheda o in una linguetta. Verrà illustrata la procedura di suddivisione nuovamente nell'esempio del progetto Hello.</para> + +<para +>Si ipotizzerà che siano aperti nella barra delle schede i seguenti file: <filename +>hello.cpp</filename +> e <filename +>hello.h</filename +>. Mentre si sta lavorando sul file <filename +>hello.cpp</filename +>, si ha spesso la necessità di fare riferimento alle dichiarazioni contenute nel file header <filename +>hello.h</filename +>, quindi è utile poter mantenere i due file aperti simultaneamente.</para> + +<para +>Fare clic con il tasto destro sulla linguetta del file <filename +>hello.h</filename +>. Verrà aperto il seguente menu.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-workspace.png" format="PNG"/> +</imageobject> +<caption +><para +>Come suddividere l'area di lavoro attuale in due parti.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Selezionare la voce <guimenuitem +>Dividi orizzontalmente</guimenuitem +>. L'area di lavoro attuale verrà suddivisa a metà e la finestra dell'editor relativa al file <filename +>hello.h</filename +> sarà spostata nella parte inferiore.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-windows.png"/> +</imageobject> +<caption +><para +>L'area di lavoro è stata divisa orizzontalmente</para +></caption> +</mediaobject> +</screenshot> + +<para +>La linea di separazione tratteggiata tra le finestre può essere trascinata con il mouse in modo da poter adattare le altezze delle finestre.</para> + +<para +>Ci sono alcune considerazioni</para> +<itemizedlist> +<listitem> +<para +>Le aree divise sono completamente funzionali: le nuove schede saranno aperte nell'area di lavoro che contiene la finestra dell'editor attualmente attiva. Si può suddividere ulteriormente una sottoarea a proprio piacimento, aprendo così tutti i file necessari contemporaneamente.</para> +</listitem> + +<listitem> +<para +>Ogni suddivisione sposterà la finestra dell'editor attualmente attiva nella nuova sottoarea di lavoro, in basso o a destra. Le altre schede rimarranno nelle loro posizioni. Non si possono spostare direttamente le finestre attraverso le sottoaree: per fare questo è necessario chiudere esplicitamente la finestra in una area e riaprirla nell'altra.</para> +</listitem> + +<listitem> +<para +>Inoltre, non esiste un metodo diretto per chiudere esplicitamente una sottoarea. Essa verrà chiusa automaticamente alla chiusura dell'ultima scheda contenuta in essa.</para> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-sourceheader"> +<title +>Modificare contemporaneamente i file sorgenti e header C++</title> + +<para +>La capacità di suddividere l'area di lavoro in &kdevelop; ha una simpatica applicazione: permette di aprire automaticamente una sorgente <filename +>.cpp</filename +> e il corrispondente file header <filename +>.h</filename +>. Come opzione, si può lavorare sui due file in modo sincrono, in modo tale che quando si seleziona una dichiarazione nel file header, &kdevelop; navigherà nella corrispondente definizione nel file sorgente e viceversa.</para> + +<para +>Tuttavia questa funzionalità è disattivata come impostazione predefinita: per utilizzarla deve essere attivata.</para> + +<para +>Selezionare <menuchoice +><guibutton +>Progetto</guibutton +> <guimenuitem +>Opzioni progetto</guimenuitem +></menuchoice +>. Verrà visualizzata la finestra di dialogo <guilabel +>Opzioni Progetto</guilabel +>, dove deve essere selezionata l'icona <guiicon +>Gestione C++</guiicon +> e in seguito la scheda <guilabel +>Funzioni navigazione</guilabel +> nella pagina visualizzata a destra.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-source-header.png" format="PNG"/> +</imageobject> +<caption +><para +>Avere i file header e sorgente affiancati</para +></caption> +</mediaobject> +</screenshot> + +<para +>Ora, marcare la casella <guilabel +>Enable split of Header/Source files</guilabel +>, che abilita per impostazione predefinita <guilabel +>Sincronizzazione automatica</guilabel +> e <guilabel +>Verticale</guilabel +>. Per il momento mantenere queste opzioni e fare clic su <guibutton +>OK</guibutton +>.</para> + +<para +>Ora chiudere nel progetto di esempio Hello sia il file <filename +>hello.cpp</filename +> che <filename +>hello.h</filename +>, poi selezionare nuovamente <filename +>hello.cpp</filename +> dalla sottocartella <filename class="directory" +>src</filename +> del progetto. Si aprirà normalmente una finestra dell'editor; tuttavia, aprendo il file <filename +>hello.h</filename +> verrà effettuata automaticamente la divisione dell'area di lavoro e sarà aperto il file header in una finestra dell'editor proprio sotto alla finestra relativa al file <filename +>hello.cpp</filename +>.</para> + +<para +>Inoltre, cercando nella finestra del file <filename +>hello.cpp</filename +> la linea di definizione del costruttore:</para> +<programlisting +>Hello::Hello() +</programlisting> +<para +>e posizionando il cursore su questa linea, si può notare che nella finestra inferiore, relativa al file <filename +>hello.h</filename +>, il cursore si sarà posizionato nella linea corrispondente di dichiarazione del costruttore.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-source-header-navigate.png" format="PNG"/> +</imageobject> +<caption +><para +>&kdevelop; ha navigato automaticamente alla dichiarazione del costruttore</para +></caption> +</mediaobject> +</screenshot> + +<para +>Funziona anche al contrario: se si posiziona il cursore in qualche punto in una finestra dove è presente un costrutto, &kdevelop; navigherà al costrutto corrispondente nell'altra finestra.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-group"> +<title +>Raggruppamento dei file sorgente in sessioni di sviluppo</title> + +<para +>Quando il progetto cresce e lo sviluppo diventa sempre più complesso e obbliga a passare spesso attraverso insiemi diversi di file, allora è il momento di organizzare il lavoro in diverse sessioni. La vista strumenti <guilabel +>Lista file</guilabel +> ha questa funzionalità.</para> + +<para +>Nella parte alto della vista strumenti <guilabel +>Lista file</guilabel +> è presente una barra degli strumenti con la quale si possono creare, salvare, selezionare e rimuovere sessioni. Alternativamente si può usare il sottomenu <menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Vista sessioni</guimenuitem +></menuchoice +>.</para> + +<para +>Nel progetto di esempio, si desidera di voler sempre aprire i file <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +> e <filename +>main.cpp</filename +> in una sola volta, indipendentemente da quale compito si stia svolgendo in quel progetto. Si deve per prima cosa creare una nuova sessione di sviluppo chiamata, ad esempio, <filename +>sources</filename +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-session-create.png" format="PNG"/> +</imageobject> +<caption +><para +>Utilizzo delle sessioni di sviluppo per memorizzare i gruppi di file</para +></caption> +</mediaobject> +</screenshot> + +<para +>Questo può essere svolto attraverso le seguenti fasi:</para> +<procedure> +<step> +<para +>Creazione di una nuova sessione</para> +<substeps> +<step> +<para +>Fare clic sull'icona <guiicon +>New Session</guiicon +> in alto a sinistra nella vista strumenti <guilabel +>Elenco file</guilabel +>.</para> +</step> +<step> +<para +>Verrà visualizzata una finestra di dialogo. Nel campo <guilabel +>Inserisci il nome della sessione</guilabel +> fornire il nome alla nuova sessione, ⪚ <quote +>sources</quote +>.</para> +</step> +<step> +<para +>Chiudere la finestra di dialogo facendo clic su <guibutton +>OK</guibutton +>. La nuova sessione verrà elencata nella casella a discesa sulla barra degli strumenti.</para> +</step> +</substeps> +</step> +<step> +<para +>La nuova sessione sarà inizialmente vuota, e dovrà essere popolata con i file che dovrà contenere.</para> +<substeps> +<step> +<para +>Aprire tutti i file che si vuole raggruppare nella sessione. In questo esempio è stato deciso di inserire i file <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +> e <filename +>main.cpp</filename +>.</para> +</step> +<step> +<para +>Una volta che è stata completato l'elenco, fare clic sull'icona <guiicon +>Salva Sessione</guiicon +>. Non si deve saltare questo passo, altrimenti saranno persi i file elencati.</para> +</step> +</substeps> +</step> +</procedure> + +<para +>Quando si seleziona la sessione <guilabel +>sources</guilabel +> dalla casella a discesa <guilabel +>Apri sessione</guilabel +>, &kdevelop; chiuderà tutte le finestre attualmente aperte e aprirà quelle relative ai file della lista (in questo caso <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +> e <filename +>main.cpp</filename +>). </para> + +<para +>Nel contesto del progetto si possono definire tutte le sessioni che si desiderano. Se si vuole modificare i contenuti della sessione, si può aggiornare l'elenco dei file facendo clic su <guiicon +>Salva sessione</guiicon +>. Se ci si vuole sbarazzare di una sessione, selezionarla nella casella a discesa e fare clic sull'icona <guiicon +>Elimina sessione</guiicon +> sulla barra degli strumenti.</para> + +<para +>Si può impostare l'apertura di una data sessione in modo predefinito quando viene caricato il progetto. Per fare questo, selezionare la sessione nella casella a discesa nella pagina di configurazione del progetto in <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto</guimenuitem +> <guimenuitem +>Lista file</guimenuitem +></menuchoice +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-session-default.png" format="PNG"/> +</imageobject> +<caption +><para +>Aprire una sessione specifica quando il progetto è stato caricato.</para +></caption> +</mediaobject> +</screenshot> +</sect3> +</sect2> + +<sect2 id="gettingstarted-edit-problems"> +<title +>Tenere d'occhio i problemi comuni</title> + +<para +>Quando si apre un file, &kdevelop; analizzerà suo contenuto, in modo che il <emphasis +>reporter di problema</emphasis +> possa scansionare il testo per trovare alcuni errori comuni. L'utente può essere avvertito di alcune posizioni che sono state contrassegnate.</para> + +<para +>Verrà illustrata questa funzionalità nel progetto Hello di esempio.</para> + +<itemizedlist> +<listitem> +<para +>Aprire il file sorgente <filename +>main.cpp</filename +>.</para> +</listitem> + +<listitem> +<para +>Assicurarsi che contenga la seguente linea</para> +<programlisting +>/// @todo do something with the command line args here +</programlisting> +<para +>Essa è stata inserita dalla procedura guidata quando è stato creato il progetto Hello nel capitolo <link linkend="gettingstarted-new" +>Iniziare un nuovo progetto</link +> precedente.</para> +</listitem> + +<listitem> +<para +>Ora aprire la vista strumenti <guilabel +>Problemi</guilabel +> in basso. Se tutto va bene, apparirà questo avviso:</para> +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-todo.png"/> +</imageobject> +<caption +><para +>&kdevelop; avverte che una linea di codice sorgente contiene un contrassegno.</para +></caption> +</mediaobject> +</screenshot> +</listitem> +</itemizedlist> + +<para +>Il formato del comando <computeroutput +>/// @todo</computeroutput +> deriva dal documentatore di codice <application +>Doxygen</application +>, il quale verrà descritto velocemente nella sezione <link linkend="gettingstarted-doc" +>Documentazione</link +>. Non è obbligatorio usare questo formato, e saranno riconosciuti anche i marcatori <computeroutput +>TODO</computeroutput +> e <computeroutput +>FIXME</computeroutput +>.</para> + +<para +>Se si vogliono inserire ⪚ i seguenti commenti contenenti i marcatori <computeroutput +>TODO</computeroutput +> e <computeroutput +>FIXME</computeroutput +> nel file di esempio <filename +>hello.cpp</filename +></para> +<programlisting +>Hello::Hello() + : KMainWindow( 0, "Hello" ) +{ + // set the shell's ui resource file + // TODO check the user interface + setXMLFile("helloui.rc"); + + // FIXME change to a better suited greeting + new QLabel( "Hello World", this, "hello label" ); +} +</programlisting> +<para +>allora essi saranno elencati nella vista strumenti <guilabel +>Problemi</guilabel +></para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-marks.png" format="PNG"/> +</imageobject> +<caption +><para +>Il reporter di problema elencherà le linee del file attuale che richiedono attenzione.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Notare le schede presenti nella vista strumenti <guilabel +>Problemi</guilabel +>, in particolare <guilabel +>Da sistemare</guilabel +> e <guilabel +>Da fare</guilabel +>. Selezionandole, si troveranno le linee contrassegnate con i marcatori <computeroutput +>FIXME</computeroutput +> e <computeroutput +>TODO</computeroutput +>. Ad esempio, gli avvisi contrassegnati con <computeroutput +>TODO</computeroutput +> saranno visualizzati così:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-all-todos.png" format="PNG"/> +</imageobject> +<caption +><para +>Il reporter di problema ha raccolto gli avvisi contrassegnati con <computeroutput +>TODO</computeroutput +>.</para +></caption> +</mediaobject> +</screenshot> + +<para +>La scheda <guilabel +>Errori</guilabel +> non conterrà gli errori di programmazione effettuati: essi saranno rilevati da altri strumenti ⪚ durante la compilazione. Si troveranno invece gli avvisi relativi ad alcuni problemi che sarebbero probabilmente passati inosservati e probabilmente sarebbero stati scoperti con difficoltà durante complesse sessioni di debug.</para> + +<para +>Il reporter di problema di &kdevelop; è un valido strumento, quindi è consigliabile di controllare regolarmente la vista strumenti <guilabel +>Problemi</guilabel +> durante il lavoro.</para> +</sect2> +</sect1> + +<sect1 id="gettingstarted-compile"> +<title +>Come compilare un nuovo progetto</title> + +<para +>La compilazione di un progetto richiede diverse fasi di setup che precedono la compilazione dell'applicazione. Esse sono disponibili attraverso il menu <guimenu +>Compila</guimenu +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>La compilazione di un progetto viene effettuata in diverse fasi</para +></caption> +</mediaobject> +</screenshot> + +<para +>Per il momento si considera solo la parte superiore di questo menu, le cui voci sono elencate in ordine di importanza. Il comando che si utilizza più frequentemente è in alto, alla voce <guimenuitem +>Compila progetto</guimenuitem +>. Il comando effettua l'inizializzazione del progetto, la compilazione e il linking.Le altre voci sono relative alla compilazione di parti del progetto o un singolo file, all'inizializzazione o l'installazione dei binari dell'applicazione.</para> + +<para +>Per ora si considereranno le funzionalità di &kdevelop; relative all'impostazione del progetto, l'inizializzazione, la compilazione e l'esecuzione di una applicazione. Generalmente esse comprendono:</para> + +<simplelist> +<member +><link linkend="gettingstarted-compile-basic" +>Il ciclo di sviluppo</link +></member> +<member +><link linkend="gettingstarted-compile-setup" +>I metodi principali per configurare un progetto</link +></member> +</simplelist> + +<sect2 id="gettingstarted-compile-basic"> +<title +>Il ciclo di sviluppo</title> + +<para +>Quando si è creato un nuovo progetto, generalmente si vuole verificare che tutto sia stato impostato correttamente. Questa verifica implica una prima compilazione del progetto e l'esecuzione dell'applicazione. Per compilare un progetto si devono effettuare diverse fasi:</para> +<simplelist> +<member +><link linkend="gettingstarted-compile-basic-init" +>Come inizializzare un progetto per la prima compilazione</link +></member> +<member +><link linkend="gettingstarted-compile-basic-config" +>Come effettuare la configurazione iniziale</link +></member> +<member +><link linkend="gettingstarted-compile-basic-build" +>Come creare il progetto</link +></member> +<member +><link linkend="gettingstarted-compile-basic-run" +>Come avviare l'applicazione da &kdevelop;</link +></member> +</simplelist> + +<note> +<para +>Queste istruzioni prevedono che il progetto sia basato sugli autotools &GNU;, che attivano il gestore automake in &kdevelop;, come nel progetto di esempio Hello. Se si crea un altro tipo di progetto, ⪚ per il gestore di progetti <application +>QMake</application +>, basato su &Qt;, saranno presenti altre funzionalità nei menu oppure potrebbero risultare assenti. È necessario in questi casi consultare la documentazione del fornitore relativa alla gestione del progetto e alla compilazione dell'applicazione.</para> +</note> + +<sect3 id="gettingstarted-compile-basic-init"> +<title +>Inizializzare il progetto per la compilazione</title> + +<para +>Quando la procedura guidata, dopo la creazione del progetto di esempio Hello, lo ha lasciato in uno stato preliminare. Gli autotools &GNU; richiedono una serie di fasi di inizializzazioni da compiere prima che l'applicazione possa essere effettivamente compilata. Se si cerca di compilare il progetto senza le inizializzazioni, selezionando <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Compila progetto</guimenuitem +></menuchoice +> o premendo il tasto <keycap +>F8</keycap +>, si otterrà il seguente messaggio di avvertimento:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="raw-project-warning.png" format="PNG"/> +</imageobject> +<caption +><para +>Tentativo di compilare un progetto basato su Automake non inizializzato </para +></caption> +</mediaobject> +</screenshot> + +<para +>Premendo il pulsante <guibutton +>Eseguili</guibutton +>, &kdevelop; tenterà di effettuare queste inizializzazioni automaticamente prima della compilazione e il linking. Si analizzeranno queste fasi in dettaglio, quindi chiudere la finestra di dialogo premendo il tasto <guibutton +>Non eseguire</guibutton +>. </para> + +<para +>Come detto in precedenza, la compilazione e il linking dell'applicazione viene effettuato tramite il menu <guimenu +>Compila</guimenu +>. Aprirlo e selezionare la voce <guimenuitem +>Esegui autotools</guimenuitem +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-menu-automake.png" format="PNG"/> +</imageobject> +<caption +><para +>Avviare una inizializzazione</para +></caption> +</mediaobject> +</screenshot> + +<para +>&kdevelop; aprirà la vista strumenti <guilabel +>Messaggi</guilabel +> in basso ed elencherà una serie di messaggi prodotti dagli strumenti. Se tutto è andato bene, la linea finale sarà <quote +><computeroutput +>*** successo ***</computeroutput +></quote +>.</para> + +<para +>Risalendo fino alla prima linea, si troverà il comando inviato da &kdevelop; agli strumenti:</para> + +<programlisting +>cd '/home/devel/projects/hello' && \ +WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -f Makefile.cvs +</programlisting> + +<para +>Questo comando indica in pratica che &kdevelop; è entrato prima nella directory radice del progetto, poi ha impostato un ambiente dedicato, indicando al sistema make quali versioni degli strumenti <application +>autoconf</application +> e <application +>automake</application +> utilizzare. Infine ha comandato lo strumento make (in questo caso &GNU; <application +>gmake</application +>) di elaborare il makefile <filename +>Makefile.cvs</filename +>.</para> + +<para +>Questo makefile è stato impostato automaticamente alla creazione del progetto e contiene tutti i comandi necessari per una corretta inizializzazione in modo che l'applicazione venga eseguita in &kde;. In particolare esso crea gli script <filename +>configure</filename +>, necessari per effettuare la fase successiva.</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-config"> +<title +>Configurazione iniziale</title> + +<para +>La configurazione consiste nell'adattare la compilazione alle peculiarità hardware e software del proprio sistema. È un requisito fondamentale nei processi di compilazione basati sullo schema degli autotools &GNU;.</para> + +<para +>La sequenza di configurazione sarà disponibile solo dopo una corretta inizializzazione di automake, poiché solo dopo questa saranno disponibili i file <filename +>configure</filename +>. Fatto questo, selezionare la voce del menu <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui configure</guimenuitem +></menuchoice +> per iniziare la sequenza di configurazione.</para> + +<para +>&kdevelop; aprirà la vista strumenti <guilabel +>Messaggi</guilabel +> nuovamente ed elencherà i messaggi prodotti dalla configurazione. Se tutto va bene, il messaggio finale sarà <quote +><computeroutput +>Good - your configure finished. Start make now</computeroutput +></quote +> (inviato da configure) seguito dal messaggio di &kdevelop; <quote +><computeroutput +>*** Successo ***</computeroutput +></quote +>.</para> + +<para id="gettingstarted-compile-basic-config-cmd" +>La prima linea nella vista strumenti <guilabel +>Messaggi</guilabel +> conterrà anche in questo caso il comando usato da &kdevelop; per avviare la configurazione:</para> + +<programlisting +>mkdir '/home/devel/projects/hello/debug' && \ +cd '/home/devel/projects/hello/debug' && \ +CXXFLAGS="-O0 -g3" "/home/devel/projects/hello/configure" --enable-debug=full +</programlisting> + +<para +>Da questi messaggi si possono ricavare dettagli interessanti.</para> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> +<entry> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-debug-tree.png"/> +</imageobject> +</mediaobject> +</entry> +<entry> +<itemizedlist> +<listitem> +<para +>Per prima cosa, &kdevelop; ha utilizzato una sottocartella dedicata per il processo di compilazione. Questa cartella, <filename class="directory" +>debug</filename +> (mostrata a sinistra) rispecchia la struttura principale del progetto e contiene in ogni sottocartella un insieme di file relativi alla compilazione, come vari file basati su <filename +>configure</filename +> e un <filename +>Makefile</filename +>.</para> +</listitem> +<listitem> +<para +>Nella sezione <link linkend="gettingstarted-compile-setup" +>Configurazione del progetto</link +> si darà uno sguardo al motivo per cui &kdevelop; usa cartelle diverse per la compilazione. Al momento è sufficiente sapere che &kdevelop; ha creato la cartella <filename class="directory" +>debug</filename +> prima della configurazione e che lo script <filename +>configure</filename +> ha creato la sotto struttura e i <filename +>Makefile</filename +> al suo interno.</para> +</listitem> +<listitem> +<para +>In seguito, dall'interno della cartella <filename class="directory" +>debug</filename +>, &kdevelop; ha chiamato lo script <filename +>configure</filename +> nella cartella radice del progetto utilizzando un ambiente dedicato, dove le opzioni <computeroutput +>CXXFLAGS="-O0 -g3"</computeroutput +> indicheranno in seguito che il compilatore &gcc; non deve ottimizzare i binari e che deve includere in essi tutte le informazioni di debug.</para> +</listitem> +<listitem> +<para +>Infine è stato avviato lo script <filename +>configure</filename +> con l'opzione <computeroutput +>--enable-debug=full</computeroutput +> che gli indica di creare ogni <filename +>Makefile</filename +> in modo tale che le successivi fasi di compilazione e di linking possano avere tutte le informazioni di debug.</para> +</listitem> +</itemizedlist> +</entry> +</row +></tbody +></tgroup> +</informaltable> + +<para +>Tutte queste impostazioni sono configurabili per ogni progetto. Sono disponibili ulteriori informazioni su questo argomento nel capitolo <link linkend="project-management" +>Gestione del progetto</link +>.</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-build"> +<title +>Compilazione del progetto</title> + +<para +>Ora si è pronti alla compilazione vera e propria &ie; compilare ed effettuare il link dell'applicazione. Osservando il menu <guimenu +>Compila</guimenu +> si può notare che sono presenti tre voci dedicate alla compilazione da poter selezionare.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-commands.png" format="PNG"/> +</imageobject> +<caption +><para +>Comandi per costruire i file binari</para +></caption> +</mediaobject> +</screenshot> + +<para +>Procedendo dal basso verso l'alto, essi sono:</para> +<itemizedlist> +<listitem> +<para +><guimenuitem +>Compila file</guimenuitem +> — questo comando compila il file sorgente attualmente aperto nella finestra dell'editor. Viene usato per controllare velocemente eventuali errori.</para> +</listitem> +<listitem> +<para +><guimenuitem +>Compila target attivo</guimenuitem +> — questo comando viene usato principalmente assieme al <link linkend="gettingstarted-extend-automake" +>Gestore automake</link +> che verrà descritto in seguito.</para> +</listitem> +<listitem> +<para +><guimenuitem +>Compila progetto</guimenuitem +> — questo è il comando che, procedendo per tutto il progetto, compilerà ed effettuerà il link di tutti file.</para> +</listitem> +</itemizedlist> + +<para +>Potrebbe essere interessante osservare cosa accade nella cartella <filename class="directory" +>Debug</filename +> creata dalla precedente esecuzione di <filename +>configure</filename +>. Per fare questo è meglio lasciarla aperta con tutte le sottocartelle, come mostrato sopra. Selezionare <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Compila progetto</guimenuitem +></menuchoice +> (oppure premere il tasto <keycap +>F8</keycap +>) per avviare la sequenza di compilazione. Come in precedenza, verrà aperta la vista strumenti <guilabel +>Messaggi</guilabel +> e conterrà l'output del processo. Alcuni file aggiuntivi appariranno nelle sottocartelle di <filename class="directory" +>Debug</filename +>.</para> + +<para id="gettingstarted-compile-basic-build-cmd" +>Siccome nel progetto di esempio non sono presenti molti file sorgente, la vista <guilabel +>Messaggi</guilabel +> conterrà poche linee. In alto si troverà nuovamente il comando inviato da &kdevelop; alla shell sttostante.</para> + +<programlisting +>cd '/home/devel/projects/hello/debug' && \ +WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k +</programlisting> + +<para +>&kdevelop; è passato nella cartella <filename class="directory" +>Debug</filename +> per eseguire il <filename +>Makefile</filename +>. È stato impostato, come durante la <link linkend="gettingstarted-compile-basic-init" +>fase di inizializzazione</link +>, un sotto ambiente dedicato dove è stato eseguito successivamente lo strumento <application +>gmake</application +>.</para> + +<para +>Notare l'opzione <computeroutput +>-k</computeroutput +> di <application +>gmake</application +>: essa forza il processo di compilazione in modo che esso continui fino al suo termine, anche in presenza di errori. Questa opzione ha senso poiché &kdevelop; elenca tutti gli errori nella finestra <guilabel +>Messaggi</guilabel +>. Se compaiono errori, si possono utilizzare le funzioni dell'&IDE;, facendo clic sul messaggio di errore: &kdevelop; si posizionerà esattamente nel file sorgente dove si è verificato l'errore.</para> + +<para +>Cosa è successo all'interno delle sottocartelle di <filename class="directory" +>Debug</filename +>? Non molto: sono comparsi alcuni file nei rami <filename class="directory" +>doc/en</filename +> e <filename class="directory" +>src</filename +>, tra cui il file <filename +>hello</filename +> nella cartella <filename class="directory" +>/home/devel/projects/hello/debug/src/</filename +>. Questo è il file binario dell'applicazione, e per effettuare un controllo del progetto è sufficiente eseguirlo.</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-run"> +<title +>Esecuzione dell'applicazione</title> + +<para +>Per eseguire la nuova applicazione Hello non è necessario compiere altre operazioni: si può selezionare <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui programma</guimenuitem +></menuchoice +> o premere <keycombo +><keycap +>Shift</keycap +> <keycap +>F9</keycap +></keycombo +> o utilizzare il pulsante <guibutton +>Esegue programma</guibutton +> nella <guilabel +>Barra strumenti compilazione</guilabel +> visualizzata sotto.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="run-button.png"/> +</imageobject> +<caption +><para +>Esecuzione dell'applicazione dalla <guilabel +>Barra strumenti compilazione</guilabel +>.</para> +</caption> +</mediaobject> +</screenshot> + +<para +>&kdevelop; avvierà l'applicazione in una console dedicata che si apre nella vista strumenti <guilabel +>Applicazione</guilabel +>. Il comando di esecuzione inviato da &kdevelop; verrà visualizzato sulla prima linea:</para> + +<programlisting +>./hello +</programlisting> + +<para +>questo dimostra che l'&IDE; conosce dove si trova l'eseguibile che deve avviare. Anche questo può essere configurato, per ulteriori informazioni nel capitolo <link linkend="project-management" +>Gestione del progetto</link +>.</para> + +<para +>La linea <computeroutput +>./hello</computeroutput +> sarà molto probabilmente seguita da un messaggio di avvertimento che per il momento può essere ignorato: esso non impedisce a <application +>Hello</application +> si essere avviato.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="hello-world-app.png" format="PNG"/> +</imageobject> +<caption> +<para +>L'applicazione <application +>Hello</application +></para> +</caption> +</mediaobject> +</screenshot> + +<para +>Chiudere la finestra dell'applicazione <application +>Hello</application +> normalmente. Se non è avvenuto nessun errore, &kdevelop; riporterà il messaggio <quote +><computeroutput +>*** Uscito normalmente ***</computeroutput +></quote +> nella vista strumenti <guilabel +>Applicazione</guilabel +>.</para> +</sect3> +</sect2> + +<sect2 id="gettingstarted-compile-setup"> +<title +>Configurazione del progetto</title> + +<para +>In &kdevelop; esistono molti modi per gestire un progetto: questo comportamento è configurabile da progetto a progetto ed è particolarmente interessante per gli sviluppatori più esperti. Tuttavia sono presenti alcune impostazioni specifiche per il progetto che si dovrebbero conoscere da subito. </para> + +<simplelist> +<member +><link linkend="gettingstarted-compile-setup-build" +>A cosa servono le configurazioni di compilazione?</link +></member> + +<member +><link linkend="gettingstarted-compile-setup-config" +>Dove si può definire il comportamento dello script <filename +>configure</filename +></link +></member> + +<member +><link linkend="gettingstarted-compile-setup-make" +>Alcune considerazioni su come dovrebbe essere avviato <application +>make</application +></link +></member> + +<member +><link linkend="gettingstarted-compile-setup-run" +>Dove dovrebbe essere l'eseguibile e come può essere chiamato?</link +></member> +</simplelist> + +<sect3 id="gettingstarted-compile-setup-build"> +<title +>Configurazioni di compilazione</title> + +<para +>Nella sezione <link linkend="gettingstarted-compile-basic-config" +>Configurazione iniziale</link +> è stato avviato per la prima volta lo script <filename +>configure</filename +> e si è notato che &kdevelop; ha impostato una sottocartella dedicata di nome <filename class="directory" +>debug</filename +>. In questa sezione verranno discusse brevemente alcune conseguenze di questo comportamento.</para> + +<para +>Prima di tutti, &kdevelop; non usa necessariamente delle cartelle dedicate: la configurazione di compilazione dedicata viene effettuata tramite dei template usati dalla procedura guidata per le applicazioni quando viene creato un nuovo progetto.</para> + +<para +>Per sapere quale configurazione di compilazione è disponibile attualmente, andare nel menu <menuchoice +><guimenu +>Progetto</guimenu +> <guisubmenu +>Configurazione compilazione</guisubmenu +></menuchoice +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-configurations.png" format="PNG"/> +</imageobject> +<caption +><para +>Nel progetto sono disponibili diverse configurazione di compilazione</para +></caption> +</mediaobject> +</screenshot> + +<para +>In questo caso, nel progetto Hello di esempio, sono disponibili tre diverse configurazioni di compilazione. In altri casi potrebbe — inizialmente — essere presente solo una configurazione di nome <guimenuitem +>default</guimenuitem +>.</para> + +<para +>La configurazione di compilazione attualmente usata ha un segno di marcatura a sinistra. Per passare ad un'altra configurazione selezionare semplicemente la relativa voce del menu.</para> + +<para +>Segue una breve descrizione delle configurazioni di compilazione.</para> + +<variablelist id="gettingstarted-compile-setup-build-configs"> +<varlistentry> +<term +><guimenuitem +>debug</guimenuitem +></term> +<listitem> +<para +>Durante il processo di sviluppo dovrebbe essere usata questa configurazione di compilazione. La compilazione avviene separatamente dalle cartelle che contengono i sorgenti: viene utilizzata la sottocartella <filename class="directory" +>debug</filename +>, &ie; tutti i file oggetto, i file ausiliari e gli eseguibili saranno inseriti in questa sottocartella al contrario delle loro controparti nella cartella root del progetto. Lo script <filename +>configure</filename +> avrà le opzioni <computeroutput +>--enable-debug=full</computeroutput +> e <computeroutput +>CXXFLAGS="-O0 -g3"</computeroutput +>: quest'ultima indica a &gcc; di non ottimizzare il codice e di inserire le informazioni di debug nei file binari.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>optimized</guimenuitem +></term> +<listitem> +<para +>Questa configurazione viene usata per l'applicazione C++ definitiva. La compilazione avviene in una sottocartella dedicata e separata delle cartelle che contengono i sorgenti, chiamata <filename class="directory" +>optimized</filename +>. In questa configurazione non vengono definite delle opzioni per lo script <filename +>configure</filename +>, ma solo le seguenti per il compilatore &gcc;: <computeroutput +>CXXFLAGS="-O2 -g0"</computeroutput +>. In questo modo il compilatore ottimizzerà il codice e non inserirà le informazioni di debug nei binari.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>default</guimenuitem +></term> +<listitem> +<para +>Il termine <quote +>default</quote +> indica l'impostazione standard quando si compila una applicazione dalla console utilizzando ⪚ gli strumenti a linea di comando &GNU; <application +>configure</application +>, <application +>make</application +> e <application +>gmake</application +>. A differenza delle configurazioni <guimenuitem +>debug</guimenuitem +> e <guimenuitem +>optimized</guimenuitem +>, non viene usata una cartella dedicata e l'applicazione verrà compilata nella stessa cartella dei sorgenti. Non sono previste opzioni particolari e la compilazione utilizzerà le impostazioni predefinite degli strumenti (ad es. &gcc;, ecc).</para> + +<warning> +<para +>Si consiglia di valutare attentamente l'uso dell'impostazione di compilazione <guimenuitem +>default</guimenuitem +>!</para> + +<para +>Essa non può essere utilizzata in parallelo alle configurazioni <guimenuitem +>debug</guimenuitem +> e <guimenuitem +>optimized</guimenuitem +>: <emphasis +>qualunque operazione di compilazione effettuata con la configurazione <guimenuitem +>default</guimenuitem +> renderà le altre configurazioni non utilizzabili.</emphasis +> Questo è causato da alcune caratteristiche dei processi di compilazione degli strumenti <application +>automake</application +>/<application +>autoconf</application +>, che non possono essere facilmente evitate.</para> +</warning> +</listitem> +</varlistentry> +</variablelist> + +<para +>Perché utilizzare diverse configurazioni di compilazione, che non sono neppure compatibili tra loro? Esse semplificano i cicli di codifica-compilazione-debug. Le informazioni extra di debug inserite nei file binari, come le piccole modifiche effettuate al codice durante le ottimizzazioni, hanno effetto sul comportamento a runtime dell'applicazione. Quindi nella maggior parte dei casi, quando la struttura logica delle routine sembra essere corretta, si potrebbe voler controllare se essere si comportano correttamente anche in situazioni più pratiche.</para> + +<para +>In questi casi le configurazioni di compilazione entrano in azione: poiché i file oggetto, i file eseguibili e i comandi di compilazione sono mantenuti separati nelle rispettive sottocartelle, devono essere gestite solo le modifiche ai sorgenti quando si passa tra una configurazione e l'altra.</para> + +<para +>Quindi, invece di ripulire e ricompilare tutto da zero con opzioni diverse, è sufficiente passare dalla configurazione <guimenuitem +>debug</guimenuitem +> a <guimenuitem +>optimize</guimenuitem +> per ottenere i sorgenti compilati e pronti per verificare il comportamento dell'applicazione. Se non accade nulla di inappropriato, si può tornare alla configurazione <guimenuitem +>debug</guimenuitem +> e continuare immediatamente il proprio lavoro.</para> + +<para +>Nota finale — molte configurazione di compilazione sono configurabili. Si possono anche definire le proprie configurazioni, se è necessario per il proprio progetto. Verrà illustrata questa possibilità nella prossima sezione.</para> +</sect3> + +<sect3 id="gettingstarted-compile-setup-config"> +<title +>Opzioni di configurazione del progetto</title> + +<para +>Per la catena degli strumenti &GNU; autotools è vitale una configurazione appropriata dell'applicazione. Questa viene effettuata attraverso le definizioni presenti nello script <filename +>configure</filename +> e/o le opzioni dell'ambiente presenti precedentemente all'avvio di <filename +>configure</filename +>, come ⪚ <computeroutput +>CXXFLAGS</computeroutput +>.</para> + +<para +>La maggior parte delle opzioni di configurazione di un progetto possono essere impostate dall'interno della &GUI; di &kdevelop;. Selezionando <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto</guimenuitem +></menuchoice +> e l'icona <guiicon +>Opzioni di configurazione</guiicon +> presente a sinistra nella finestra di dialogo, apparirà la pagina delle opzioni che mostrerà diverse schede.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-configure.png" format="PNG"/> +</imageobject> +<caption +><para +>La maggior parte delle configurazioni può essere definita qui</para +></caption> +</mediaobject> +</screenshot> + +<para +>Come si può vedere, sono presenti molte opzioni. Per ora si darà un breve sguardo ad alcune di esse all'interno del progetto di esempio. Per informazioni dettagliate consultare il capitolo <link linkend="projects-configure" +>Configurazione dei Progetti</link +>. Se si desidera conoscere il significato di tutte le opzioni che possono essere impostate, inserire in una console <command +>info make</command +> (oppure <command +>info:make</command +> dall'interno di &konqueror;) e consultare le sezioni <menuchoice +><guimenu +>Implicit Rules</guimenu +> <guimenuitem +>Implicit Variables</guimenuitem +></menuchoice +>.</para> + +<para +>Sono presenti diverse schede per le impostazioni. La scheda <guilabel +>Generale</guilabel +> contiene le impostazioni più comuni, mentre le altre sono dedicate alle impostazioni più specifiche. Comunque, in ogni caso, i contenuti di queste schede dipenderanno dalla data configurazione di compilazione.</para> + +<para +>La compilazione selezionata è quella la cui configurazione è stata definita nella casella <guilabel +>Configurazione</guilabel +> in alto nella finestra di dialogo <guilabel +>Opzioni di configurazione</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-buildconfig.png" format="PNG"/> +</imageobject> +<caption +><para +>Selezione della configurazione di compilazione da definire.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Ora, selezionando un'altra configurazione di compilazione della casella, si può notare che ⪚ le caselle di testo <guilabel +>Argomenti per configure</guilabel +> e <guilabel +>Compila Directory</guilabel +> sono state modificate in base alle impostazioni citate nell'<link linkend="gettingstarted-compile-setup-build-configs" +>elenco delle configurazioni di compilazione</link +> precedentemente.</para> + +<sect4 id="gettingstarted-compile-setup-config-general"> +<title +>Configurazione generale</title> + +<para +>Nella scheda <guilabel +>Generale</guilabel +> della finestra di dialogo, possono essere impostate le seguenti opzioni:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Argomenti per configure</title> +<para +>Queste sono le opzioni che &kdevelop; assegnerà alla chiamata dello script <filename +>configure</filename +> durante la compilazione. Vedere l' <link linkend="gettingstarted-compile-basic-config-cmd" +>esempio</link +> nella sezione <quote +>Configurazione iniziale</quote +>.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Compila directory</title> +<para +>Questa è la sottocartella della cartella radice del progetto, dove &kdevelop; inserirà tutti i file che verranno creati durante la compilazione. Idealmente il nome della cartella dovrebbe corrispondere al nome della configurazione di compilazione utilizzata, ma si può scegliere qualunque nome diverso dalle cartelle dedicate alle altre configurazioni.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Directory sorgente superiore</title> +<para +>Questa opzione non servirà spesso. È impostata sulla cartella radice del progetto, e deve essere modificata solo se i sorgenti sono posizionati da un'altra parte.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Flag preprocessore C/C++ (CPPFLAGS)</title> +<para +>Qui sono presenti le istruzioni specifiche per il preprocessore. Saranno utilizzate da &kdevelop; per impostare un ambiente temporaneo prima di eseguire gli strumenti di compilazione. Vedere l'<link linkend="gettingstarted-compile-basic-config-cmd" +>esempio</link +> nella sezione <quote +>Configurazione iniziale</quote +>.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Flag linker (LDFLAGS)</title> +<para +>Queste sono configurazioni extra per il linker <application +>ld</application +> che indicano la posizione di eventuali librerie aggiuntive. Vengono usate anche per costruire l'ambiente di compilazione temporaneo.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Variabili d'ambiente</title> +<para +>Qui possono essere definite diverse variabili per l'ambiente di compilazione temporaneo. &kdevelop; imposterà queste variabili prima di eseguire lo strumento di compilazione. Anche in questo caso, le variabili devono essere definite per ogni configurazione di compilazione usata.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect4> + +<sect4 id="gettingstarted-compile-setup-config-spec"> +<title +>Impostazioni specifiche del compilatore</title> + +<para +>Le altre schede della pagina <guilabel +>Opzioni di configurazione</guilabel +> sono dedicate alle impostazioni specifiche per il compilatore. Queste opzioni sono strutturate in modo simile, quindi è sufficiente dare un'occhiata alla pagina <guilabel +>C++</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-cpp.png" format="PNG"/> +</imageobject> +<caption +><para +>Selezionare qui il compilatore e il suo ambiente di lavoro che dovrà essere usato da &kdevelop;.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Queste sono le impostazioni che si possono modificare:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Compilatore C++</title> +<para +>Da questa casella a discesa si può selezionare il compilatore C++ usato da &kdevelop;. Essa elenca tuttavia solo i compilatori noti a &kdevelop;.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Comando compilatore (CXX)</title> +<para +>Opzione consigliata per utenti esperti: è necessaria solo se il compilatore C++ usato non è standard. Contiene il nome con cui viene chiamato.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Flag compilatore (CXXFLAGS)</title> +<para +>Qui si possono inserire ulteriori opzioni che verranno passate da &kdevelop; (attraverso il <filename +>Makefile</filename +>) al compilatore. Alcuni valori saranno preimpostati in base alla configurazione di compilazione selezionata nella casella <guilabel +>Configurazione</guilabel +>.</para> +</formalpara> + +<para +>Notare che si possono selezionare molte opzioni comuni del compilatore dalla finestra di dialogo che apparirà premendo il pulsante <guibutton +>...</guibutton +> alla destra della casella di testo.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-cppoptions.png" format="PNG"/> +</imageobject> +<caption +><para +>Usare questa finestra di dialogo per definire il comportamento del compilatore C++ &GNU;</para +></caption> +</mediaobject> +</screenshot> + +<para +>Qui è stata scelta intenzionalmente la scheda <guilabel +>Ottimizzazione</guilabel +> Notare che è stata impostata l'opzione <guilabel +>Nessuna ottimizzazione</guilabel +> (relativa alla opzione <computeroutput +>-O0</computeroutput +> preimpostata nella configurazione di compilazione <computeroutput +>debug</computeroutput +>).</para> + +<para +>Sfortunatamente da questa finestra di dialogo non possono essere selezionate tutte le opzioni. ⪚ l'opzione <computeroutput +>-g3</computeroutput +> usata dalla configurazione <computeroutput +>debug</computeroutput +> deve, se necessario, essere modificata manualmente.</para> +</listitem> +</itemizedlist> +</sect4> +</sect3> + +<sect3 id="gettingstarted-compile-setup-make"> +<title +>Come viene compilato il programma da parte di Make</title> + +<para +>Si può anche configurare il modo con cui &kdevelop; chiamerà lo strumento <application +>make</application +> nella compilazione del progetto. Selezionare <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto</guimenuitem +></menuchoice +> e in seguito l'icona <guiicon +>Opzioni di make</guiicon +> a sinistra. Apparirà la pagina <guilabel +>Opzioni di make</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-make.png" format="PNG"/> +</imageobject> +<caption +><para +>Definizioni di come &kdevelop; chiamerà lo strumento <application +>make</application +></para +></caption> +</mediaobject> +</screenshot> + +<para +>Per il momento non c'è molto da fare: nella maggior parte dei casi l'unica impostazione interessante sarà <guilabel +>Interrompi al primo errore</guilabel +>, che sarà disattivata in molti progetti. Corrisponde all'opzione <computeroutput +>-k</computeroutput +> nella chiamata a <application +>gmake</application +> vista precedentemente nella <link linkend="gettingstarted-compile-basic-build-cmd" +>compilazione iniziale</link +> del progetto di esempio.</para> + +<para +>Questa opzione ha senso in un &IDE; come &kdevelop;, che visualizza ogni messaggio di errore generato durante la compilazione. Dopo la compilazione infatti possono essere facilmente consultati nella vista strumenti <guilabel +>Messaggi</guilabel +>, attraverso il menu <menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Errore successivo</guimenuitem +></menuchoice +> e <menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Errore precedente</guimenuitem +></menuchoice +> oppure con la i tasti <keycap +>F4</keycap +> e <keycombo +><keycap +>Shift</keycap +> <keycap +>F4</keycap +></keycombo +>. &kdevelop; attiverà automaticamente la finestra dell'editor relativa al file sorgente in questione e posizionerà il cursore nella linea dove è presente l'errore.</para> + +<para +>Se invece si vuole che la compilazione venga interrotta quando viene rilevato un errore, allora marcare la casella <guilabel +>Interrompi al primo errore</guilabel +> nella finestra di dialogo. In questo caso &kdevelop; eseguirà <application +>gmake</application +> senza l'opzione <computeroutput +>-k</computeroutput +>.</para> +</sect3> + +<sect3 id="gettingstarted-compile-setup-run"> +<title +>Come avviare l'eseguibile</title> + +<para +>Una volta completata la compilazione, è possibile eseguire facilmente l'applicazione all'interno di &kdevelop;. Si può usare il menu <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Esegui programma</guimenuitem +></menuchoice +>, i tasti <keycombo +><keycap +>Shift</keycap +><keycap +>F9</keycap +></keycombo +> o il pulsante <guibutton +>Esegue programma</guibutton +> nella <guilabel +>Barra strumenti compilazione</guilabel +> si &kdevelop;.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="run-button.png" format="PNG"/> +</imageobject> +<caption +><para +>Si può eseguire il programma da qui.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Dove si trova l'eseguibile che deve essere avviato? Come si possono impostare le opzioni di chiamata? Come si può avviare l'esecuzione in un terminale separato per verificare il comportamento da console?</para> + +<para +>Tutti questi interrogativi possono essere risolti configurando alcune opzioni di esecuzione di &kdevelop;. Selezionare <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto</guimenuitem +></menuchoice +> e in seguito l'icona <guiicon +>Opzioni di esecuzione</guiicon +>. Verrà visualizzata la pagina <guilabel +>Opzioni di esecuzione</guilabel +> a destra.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-run.png" format="PNG"/> +</imageobject> +<caption +><para +>Definizioni di dove e come eseguire il programma</para +></caption> +</mediaobject> +</screenshot> + +<para +>Sono presenti molte opzioni da impostare, raccolte principalmente in quattro gruppi.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Cartella</title> +<para +>Queste opzioni indicano dove si trova l'eseguibile da chiamare. Esistono tre possibilità da scegliere.</para> +</formalpara> + +<para +>Tuttavia è necessario osservare che si possono definire solo cartelle radice. &kdevelop; cercherà l'eseguibile in alcune sottocartelle definite nel prossimo gruppo di opzioni.</para> + +<itemizedlist> +<listitem> +<para +>Esegui dalla cartella dov'è l'eseguibile. Questa è l'opzione predefinita e per il momento può essere lasciata selezionata.</para> +</listitem> + +<listitem> +<para +>Esegui dalla cartella BUILD in base alla <link linkend="gettingstarted-compile-setup-build" +>configurazione di compilazione</link +> attualmente selezionata. Il nome di questa cartella è stato impostato nella pagina <link linkend="gettingstarted-compile-setup-config-general" +>Configurazione Generale</link +>.</para> + +<para +>Questa è la cartella radice dove verrà cercato l'eseguibile e verrà automaticamente modificata a seconda della sezione che si effettua nel menu <menuchoice +><guimenu +>Progetto</guimenu +> <guisubmenu +>Configurazione compilazione</guisubmenu +></menuchoice +>.</para> + +<para +>Invece che eseguire sempre l'eseguibile compilato più recentemente, come nell'impostazione sopra, questo permette di cambiare il programma da avviare semplicemente selezionando un'altra configurazione di compilazione dal menu <guimenu +>Progetto</guimenu +>.</para> +</listitem> + +<listitem> +<para +>Cartella personalizzata. Anche in questo caso questa opzione specifica solo la cartella radice dalla quale deve essere cercato l'eseguibile.</para> + +<para +>Utilizzare questa opzione se ⪚ si vuole avviare il programma effettivamente installato invece della versione che si trova nelle cartelle del progetto.</para> +</listitem> +</itemizedlist> +</listitem> + +<listitem> +<formalpara> +<title +>Programma</title> +<para +>Questa opzione indica la posizione relativa e il nome del programma da chiamare. Questo è relativo alla cartella radice definita nel gruppo di opzioni precedente. Si possono anche indicare gli argomenti da passare al programma.</para> +</formalpara> + +<note> +<para +>Se si lascia la casella di testo <guilabel +>Programma principale</guilabel +> vuota, verrà usata l'impostazione <emphasis +>Target attivo</emphasis +> del gestore automake. Quando si lascia la casella vuota, anche se è una opzione per utenti esperti, essa può rappresentare una fonte di problemi; nel caso non venga avviato l'eseguibile desiderato, controllare questa impostazione.</para> +</note> +</listitem> + +<listitem> +<formalpara> +<title +>Variabili d'ambiente</title> +<para +>Verrà impostato un ambiente shell dedicato per avviare il programma. In questo gruppo di configurazione si possono definire delle variabili d'ambiente.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Varie</title> +<para +>In fondo alla pagina sono presenti due caselle.</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +><guilabel +>Compila automaticamente prima di eseguire</guilabel +> è pratica opzione in molti casi. &kdevelop; controllerà i cambiamenti del progetto ed effettuerà le fasi di configurazione e di compilazione ogni volta che viene indicato di eseguire il programma.</para> + +<para +>Non marcare la casella nel caso si vuole avviare la versione del programma precedente alle ultime modifiche.</para> +</listitem> + +<listitem> +<para +><guilabel +>Avvia in un terminale esterno</guilabel +> è una opzione interessante se si vuole testare il comportamento di input/output dei programmi che non usano una &GUI; in una console. L'imposizione predefinita di questa casella è di avviare il programma di una finestra di &kdevelop;, senza le funzionalità I/O di una console.</para> +</listitem> +</itemizedlist> +</listitem> +</itemizedlist> +</sect3> +</sect2 +> +</sect1> + +<sect1 id="gettingstarted-extend"> +<title +>Come estendere un progetto — il gestore automake</title> + +<para +>(... da scrivere ...)</para> + +<sect2 id="gettingstarted-extend-automake"> +<title +>Un breve sguardo al meccanismo Automake</title> + +<para +>(... da scrivere ...)</para> +</sect2 +> + +<sect2 id="gettingstarted-extend-pics"> +<title +>Come posizionare le icone in una cartella separata</title> + +<para +>(... da scrivere ...)</para> +</sect2 +> + +<sect2 id="gettingstarted-extend-class"> +<title +>Come aggiungere nuove classi</title> + +<para +>(... da scrivere ...)</para> + +<caution +><para +>Prestare attenzione quando si seleziona il nome di una classe: è molto difficile modificarlo in seguito.</para +></caution> +</sect2 +> + +<sect2 id="gettingstarted-extend-subproject"> +<title +>Cosa è presente in un sottoprogetto?</title> + +<para +>(... da scrivere ...)</para> + +<sect3 id="gettingstarted-extend-subproject-active"> +<title +>Concentrare il lavoro — il target attivo</title> + +<para +>(... da scrivere ...)</para> +</sect3 +> +</sect2 +> + +<sect2 id="gettingstarted-extend-restructure"> +<title +>Alcune operazioni per ristrutturare un progetto</title> + +<para +>(... da scrivere ...)</para> +</sect2 +> +</sect1> + + +<sect1 id="gettingstarted-debug"> +<title +>Come effettuare il debug</title> + +<para +>(... da scrivere ...)</para> +</sect1 +> + + +<sect1 id="gettingstarted-doc"> +<title +>Nota sulla documentazione del progetto</title> + +<para +>Il progetto &kde; utilizza <ulink url="http://www.docbook.org/tdg5/en/html/docbook.html" +>docbook</ulink +> per generare il manuale del progetto (&ie; il manuale utente). Il manuale è disponibile attraverso la barra dei menu dell'applicazione selezionando la voce <menuchoice +><guimenu +>Aiuto</guimenu +> <guimenuitem +>Manuale di <replaceable +>NomeApplicazione</replaceable +></guimenuitem +></menuchoice +>, quando l'applicazione viene eseguita. Quando il progetto è stato costruito, il manuale utente è visualizzato nel &khelpcenter; di &kde;. Esso dovrebbe illustrare all'utente il funzionamento dell'applicazione, quali sono le caratteristiche principali e come configurarla. Dovrebbero essere descritte anche eventuali funzionalità avanzate. </para> +<para +>Tutti i template basati su &kde; possiedono una sottocartella doc che contiene il modello <filename +>index.docbook</filename +> nella cartella en per poter iniziare a scrivere il manuale utente. Si dovrebbe modificare questo file in &kdevelop; e iniziare ad inserire i dettagli personali come il nome, l'indirizzo di posta elettronica, &etc;. Osservare i commenti presenti cercando di seguire queste indicazioni per iniziare a scrivere la documentazione. Per vedere le modifiche in &khelpcenter; si deve ricostruire il progetto.</para> +<note +><para +>Si deve installare il progetto con <menuchoice +><guimenu +>Compila</guimenu +> <guimenuitem +>Installa</guimenuitem +></menuchoice +> o <guimenuitem +>Installa (come amministratore)</guimenuitem +> per vedere il manuale utente nel &khelpcenter;.</para +></note> +<para +>Si possono trovare ulteriori informazioni sulla sintassi docbook nel sito della <ulink url="http://l10n.kde.org/docs/markup/index.html" +>documentazione di &kde;</ulink +>.</para> +</sect1> + +<sect1 id="gettingstarted-keys"> +<title +>Per ultimo ma non ultimo, le scorciatoie da tastiera</title> + +<para +>(... da scrivere ...)</para> +</sect1> + +<sect1 id="gettingstarted-whereto"> +<title +>Dove proseguire</title> + +<para +>(... da scrivere ...)</para> + +<sect2 id="gettingstarted-whereto-faq"> +<title +>Problemi incontrati frequentemente</title> + +<simplelist> +<member +>Capitolo nutshell</member> +<member +>Domande frequenti</member> +<member +>Forum</member> +<member +>Mailing list</member> +</simplelist> +</sect2> + +<sect2 id="gettingstarted-whereto-projects"> +<title +>Lavorare con i progetti</title> + +<para +>(... da scrivere ...)</para> + +<sect3 id="gettingstarted-whereto-projects-open"> +<title +>Usare progetti di &kdevelop; esistenti</title> + +<para +>(... da scrivere ...)</para> +</sect3> + +<sect3 id="gettingstarted-whereto-projects-import"> +<title +>Importare progetti esterni</title> + +<para +>(... da scrivere ...)</para> +</sect3> +</sect2> +</sect1> + +</chapter> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/importdirectory.png b/tde-i18n-it/docs/kdevelop/kdevelop/importdirectory.png Binary files differnew file mode 100644 index 00000000000..1deeb85b18a --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/importdirectory.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/index.cache.bz2 b/tde-i18n-it/docs/kdevelop/kdevelop/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..f3d99dc2b22 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/index.cache.bz2 diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/index.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/index.docbook new file mode 100644 index 00000000000..5c78e906f61 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/index.docbook @@ -0,0 +1,694 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ +<!-- <!ENTITY kdevelop "<application +>KDevelop</application +>" +> --> + <!ENTITY kdevelop "KDevelop"> + <!ENTITY kdevrelease "3.3.91"> + + <!-- abbreviations used in the body text --> + <!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 kdevelop-survey SYSTEM "kdevelop-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 kdevelop-scripting SYSTEM "kdevelop-scripting.docbook"> + + <!-- appendices in separate docbook files --> + <!ENTITY kdevelop-install SYSTEM "kdevelop-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 "&kdevelop;"> + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Italian "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 +>Manuale Utente di &kdevelop;</title> + + <date +>2006-06-19</date> + <releaseinfo +>&kdevrelease;</releaseinfo> + + <authorgroup> + <author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +> <address +><email +>bernd@kdevelop.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> + + <othercredit role="translator" +><firstname +>Alessio</firstname +> <surname +>Rolleri</surname +> <affiliation +><address +><email +>aroller@libero.it</email +></address +> </affiliation +><contrib +>Traduzione del documento</contrib +></othercredit +> + + <legalnotice +>&FDLNotice;</legalnotice> + + <abstract> + <para +>&kdevelop; è un ambiente di sviluppo integrato che può essere usato per un grande numero di attività.</para> + </abstract> + + <keywordset> + <keyword +>KDE</keyword> + <keyword +>KDevelop</keyword> + <keyword +>IDE</keyword> + <keyword +>sviluppo</keyword> + <keyword +>programmazione</keyword> + </keywordset> + +</bookinfo> + +<!-- ====================================================================== --> + +&survey-manual; +&getting-started; <!-- "Getting Started" --> +&kdevelop-survey; <!-- "Overview of &kdevelop; Features" --> +&setup; <!-- "Configuring &kdevelop;" --> +&applicationwizard; <!-- "Getting Started — the &appwizard;" --> +&editing; +&file-browsers; +&class-browsers; +&documentation; +&project-management; +&adv-build-management; +&debugger; +&cvs-chapter; +<!--&kdevelop-scripting;--> <!-- "Scripting &kdevelop;" --> +&credits; + +<!-- ====================================================================== --> +<!-- External Appendices --> + +&kdevelop-install; <!-- "Installing &kdevelop;" --> +&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 +>(... da scrivere ...)</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-it/docs/kdevelop/kdevelop/kdcop_browsing.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdcop_browsing.png Binary files differnew file mode 100644 index 00000000000..2540c901597 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdcop_browsing.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png Binary files differnew file mode 100644 index 00000000000..11aa4f82c8f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png Binary files differnew file mode 100644 index 00000000000..9b748c99a15 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-install.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-install.docbook new file mode 100644 index 00000000000..36a4d262f9d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-install.docbook @@ -0,0 +1,1290 @@ +<appendix id="kdevelop-install"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +> <surname +>Pol</surname +></author> + <author +><firstname +>Anne-Marie</firstname +><surname +>Mahfouf</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Installare &kdevelop;</title> + +<indexterm zone="kdevelop-install"> + <primary +>installazione</primary +></indexterm> + +<para +>In questo capitolo saranno illustrate tutte le fasi per la compilazione e l'installazione di &kdevelop;: <itemizedlist> + <listitem +><para +><link linkend="kdevelop-install-howto" +>Come ottenere &kdevelop;</link +> illustra lo scaricamento dei sorgenti più recenti di &kdevelop; con svn. </para +></listitem> + <listitem +><para +><link linkend="requirements" +>I requisiti di &kdevelop;</link +> che comprendono i programmi e le librerie che devono essere installate per compilare con successo l'IDEA. </para +></listitem> + <listitem +><para +><link linkend="compile-and-install" +>Compilazione e installazione di &kdevelop;</link +> che spiega la procedura di compilazione e installazione. </para +></listitem> + <listitem +><para +><link linkend="make-api" +>Come ottenere la documentazione API di &kdevelop;</link +> indica cosa è un'API e come ottenere un tale strumento per navigare attraverso i sorgenti di &kdevelop;. </para +></listitem> +</itemizedlist> +</para> + +<sect1 id="kdevelop-install-howto"> +<title +>Come ottenere &kdevelop;</title> + +<indexterm zone="kdevelop-install-howto"> + <primary +>ottenere &kdevelop;</primary +></indexterm> +<indexterm zone="kdevelop-install-howto"> + <primary +>&kdevelop;</primary> + <secondary +>ottenere</secondary +></indexterm> + +<para +>&kdevelop; è disponibile in formato binario in molte distribuzioni &Linux; come SuSE, RedHat e altre. Questi file sono impacchettati in formati comodi da installare, principalmente RPM. Per installarli seguire le istruzioni standard fornite con la propria distribuzione. </para> +<para +>Si possono anche ottenere i sorgenti di &kdevelop;, compilarli ed installarli personalmente. Possono essere trovati attraverso la home page del progetto <ulink url="http://www.kdevelop.org" +> http://www.kdevelop.org</ulink +> o attraverso il <ulink url="http://download.kde.org" +>sito ftp di &kde;</ulink +>. </para> + +<sect2 id="howto-svn"> +<title +>Scaricare gli snapshot giornalieri di &kdevelop; con svn</title> + +<indexterm zone="howto-svn"> + <primary +>svn</primary +></indexterm> + +<para +>Se si vuole rimanere sempre aggiornati con lo sviluppo corrente,sono disponibili gli snapshot attraverso il deposito anonymous svn.</para> +<para +>Il nome del modulo è <emphasis +>kdevelop</emphasis +> at <filename class="directory" +> svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdevelop</filename +>. </para> + +<sect3 id="howto-svn-co"> +<title +>Controllo iniziale svn</title> + +<indexterm zone="howto-svn-co"> + <primary +>checkout</primary +></indexterm> +<indexterm zone="howto-svn-co"> + <primary +>&kdevelop;</primary> + <secondary +>svn</secondary> + <tertiary +>checkout</tertiary +></indexterm> + +<para +>Per ottenere una versione iniziale di &kdevelop; la si deve scaricare (questa è la cosiddetta operazione di <emphasis +>checkout</emphasis +>) da un anonymous svn. Seguire questa procedura. </para> + +<note +><para +>In seguito si presumerà che si voglia installare la propria copia di &kdevelop; nella sottodirectory <filename class="directory" +>kde3src</filename +> della propria directory home <filename class="directory" +>~</filename +>. </para +></note> + +<informalexample +><simplelist> + <member +># Creare la directory di destinazione, se necessario: </member> + <member +><prompt +>~> </prompt +> <userinput +>mkdir kde3src</userinput +> </member> + <member +><prompt +>~> </prompt +> <userinput +>cd kde3src</userinput +> </member> + <member +><prompt +>~/kde3src> </prompt +> <userinput +>svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdevelop</userinput +> </member> + <member +><prompt +>~/kde3src> </prompt +> <userinput +>cd kdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><para +>Una volta effettuato il checkout della versione di &kdevelop; si può stare al passo con i cambiamenti usando la procedura di aggiornamento che sarà mostrata nella prossima sezione. </para +></note> + +<important +><para +>Mantenere basso il carico sul server. <emphasis +>Si prega di non effettuare il checkout tutte le volte che si vuole aggiornare &kdevelop;!</emphasis +>: usare invece il comando svn update. </para +></important> + +<para +>Ora si può compilare la propria versione di &kdevelop; come mostrato nel capitolo <link linkend="compile-and-install" +>Compilazione e installazione di &kdevelop;</link +>. </para> + +</sect3 +> <!-- howto-svn-co --> + +<sect3 id="howto-svn-up"> +<title +>Mantenere la propria copia svn aggiornata</title> + +<indexterm zone="howto-svn-up"> + <primary +>aggiornamento</primary +></indexterm> +<indexterm zone="howto-svn-up"> + <primary +>&kdevelop;</primary> + <secondary +>svn</secondary> + <tertiary +>aggiornamento</tertiary +></indexterm> + +<para +>Dopo aver fatto il checkout (e compilato con successo) &kdevelop; da svn come mostrato prima, può essere mantenuto aggiornato in modo da installare tutte le patch. Seguire questa procedura. (Anche in questo caso si presume che si abbia la propria copia di &kdevelop; nella directory <filename class="directory" +>kde3src</filename +>). </para> +<para +>Notare il comando <command +>up</command +> (= <emphasis +>update</emphasis +>) al posto del comando <command +>co</command +> (che indica <emphasis +>checkout</emphasis +>). </para> + +<informalexample +><simplelist> + <member +><prompt +>~> </prompt +> <userinput +>cd kde3src</userinput +> </member> + <member +><prompt +>~/kde3src> </prompt +> <userinput +>cd kdevelop</userinput +> </member> + <member +><prompt +>~/kde3src> </prompt +> <userinput +>svn up</userinput +> </member> +</simplelist +></informalexample> + +<note +><para +>Tenere sotto controllo i messaggi che sono prodotti da svn durante la sequenza di aggiornamento. Da essi dipende l'esatta sequenza di compilazione. </para +></note> + +<para +>Ora si può compilare una nuova versione di &kdevelop; come mostrato nel capitolo <link linkend="compile-and-install-make-svn" +>Considerazioni speciali per la compilazione svn</link +>. </para> +</sect3 +> <!-- howto-svn-up --> + +</sect2 +> <!-- howto-svn --> + +</sect1 +> <!-- howto --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="requirements"> +<title +>Requisiti di &kdevelop;</title> + +<indexterm zone="requirements"> + <primary +>requisiti</primary +></indexterm> +<indexterm zone="requirements"> + <primary +>&kdevelop;</primary> + <secondary +>requisiti</secondary +></indexterm> +<indexterm zone="requirements"> + <primary +>GNU</primary> + <secondary +>requisiti</secondary +></indexterm> + +<para +>Per compilare con successo e usare &kdevelop; sono necessari i seguenti programmi e librerie. Sono disponibili per la maggior parte delle distribuzioni e facili da installare. </para> + +<itemizedlist> +<title +>Requisiti:</title> + <listitem> + <para +><application +>gcc/g++</application +> ≥ 2.95.3 (o compatibile) <indexterm> + <primary +>gcc</primary> + <secondary +>requisiti</secondary +></indexterm> + <indexterm> + <primary +>g++</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="gcc.gnu.org" +>gcc.gnu.org</ulink +> </para> + </listitem> + <listitem> + <para +><application +>&GNU; make</application +> (o compatibile) <indexterm> + <primary +>make</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.gnu.org/software/make" +>www.gnu.org/software/make</ulink +> </para> + </listitem> + <listitem> + <para +>&perl; 5.004 (o maggiore) <indexterm> + <primary +>Perl</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.perl.com" +>www.perl.com</ulink +> </para> + </listitem> + <listitem> + <para +><application +>autoconf</application +> ≥ 2.52 (o maggiore) <indexterm> + <primary +>autoconf</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.gnu.org/software/autoconf" +>www.gnu.org/software/autoconf</ulink +> </para> + </listitem> + <listitem> + <para +><application +>automake</application +> ≥ 1.6 (o maggiore) <indexterm> + <primary +>automake</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.gnu.org/software/automake" +>www.gnu.org/software/automake</ulink +> </para> + </listitem> + <listitem> + <para +><application +>flex</application +> 2.5.4 (o maggiore) <indexterm> + <primary +>flex</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.gnu.org/software/flex" +>www.gnu.org/software/flex</ulink +> </para> + </listitem> + <listitem> + <para +>&Qt; ≥ 3.3.0 (o maggiore) <indexterm> + <primary +>Qt</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.trolltech.com/products/qt" +>www.trolltech.com/products/qt</ulink +> </para> + </listitem> + <listitem> + <para +><application +>KDE</application +> ≥ 3.4.0 (o maggiore) <indexterm> + <primary +>KDE</primary> + <secondary +>requisiti</secondary +></indexterm> + </para> + <para +>Disponibile nel sito <ulink url="www.kde.org" +>www.kde.org</ulink +> </para> + </listitem> +</itemizedlist> + +<itemizedlist> +<title +>Opzionali:</title> + <listitem +><para +>Lo strumento di navigazione dei sorgenti <emphasis +><application +>ctags</application +></emphasis +>, scaricabile da <ulink url="http://ctags.sourceforge.net" +>http://ctags.sourceforge.net</ulink +>, che fornisce un veloce accesso alle dichiarazioni e alle definizioni attraverso dei semplici clic su un nome nell'editor. <indexterm +><primary +>ctags</primary +></indexterm> + </para +></listitem> + <listitem +><para +><emphasis +><application +>dot</application +></emphasis +>, un compilatore di linguaggio grafico <ulink url="http://www.graphviz.org" +>http:/www.graphviz.org</ulink +>. Se si vuole avere una visualizzazione grafica delle relazioni tra classi (altamente raccomandata), è necessario utilizzare questo strumento insieme a &doxygen;. <indexterm +><primary +>dot</primary +></indexterm> + </para +></listitem> + <listitem +><para +>Lo strumento per la documentazione <emphasis +>&doxygen;</emphasis +> <ulink url="http://www.doxygen.org" +> http://www.doxygen.org</ulink +>, necessario se si vuole generare una potente e precisa documentazione API dei propri progetti. <indexterm +><primary +>doxygen</primary +></indexterm> + </para +></listitem> + <listitem +><para +><emphasis +><application +>valgrind</application +></emphasis +> <ulink url="http://developer.kde.org/~sewardj/" +>http://developer.kde.org/~sewardj/</ulink +> aiuta a trovare i problemi di gestione della memoria nelle proprie applicazioni. <indexterm +><primary +>valgrind</primary +></indexterm> + </para +></listitem> + <listitem +><para +><emphasis +><application +>svn</application +></emphasis +> dal sito <ulink url="http://subversion.tigris.org/" +>http://subversion.tigris.org/</ulink +> se si vuole usare il versioning system svn. <indexterm> + <primary +>svn</primary> + <secondary +>requisiti</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Altri compilatori e/o strumenti nel caso si voglia sviluppare in un altro linguaggio/piattaforma diverso da C++/&kde; oppure usare qualche funzione speciale. </para +></listitem> +</itemizedlist> + +<note> +<orderedlist> + <listitem> + <para +>Si può aggirare il vincolo per &autoconf; ≥ 2.52 e &automake; ≥ 1.6 così: rimuovere la directory <filename class="directory" +>admin</filename +> nella directory di installazione di &kdevelop; e scrivere <indexterm> + <primary +>autoconf</primary> + <secondary +>aggirare vincolo versione</secondary +></indexterm> + <indexterm> + <primary +>automake</primary> + <secondary +>aggirare vincolo versione</secondary +></indexterm> + <indexterm> + <primary +>versione necessaria</primary> + <secondary +>aggirare autoconf/automake</secondary +></indexterm> + </para> + <informalexample +><simplelist> + <member +><prompt +>(directory-di-kdevelop)> </prompt +> <userinput +>ln -s $KDEDIR/share/apps/kdelibs/admin admin</userinput +></member> + </simplelist +></informalexample> + <para +>alla console. Questo farà sì che &kdevelop; usi le impostazioni standard nella directory <filename class="directory" +>admin</filename +> di &kde;. </para> + </listitem> + <listitem> + <para +>Si presti attenzione a <emphasis +>non mescolare versioni diverse di &Qt;</emphasis +>. Collegare sempre &kdevelop; alla stessa versione delle librerie &Qt; con cui sono state compilate le librerie &kde;, altrimenti probabilmente si otterranno comportamenti <emphasis +>anomali</emphasis +>. </para> + </listitem> +</orderedlist> +</note> + +</sect1 +> <!-- requirements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compile-and-install"> +<title +>Compilazione e installazione di &kdevelop;</title> + +<indexterm zone="compile-and-install"> + <primary +>&kdevelop;</primary> + <secondary +>compilazione</secondary +></indexterm> +<indexterm zone="compile-and-install"> + <primary +>&kdevelop;</primary> + <secondary +>installazione</secondary +></indexterm> + +<para +>Quando tutti i requisiti sono stati soddisfatti, si può compilare e installare &kdevelop;. Questa appendice esaminerà le fasi di questa procedura. </para> +<itemizedlist> + <listitem +><para +>Nelle <link linkend="compile-and-install-preliminaries" +>fasi preliminari</link +> viene spiegato come impostare le variabili d'ambiente appropriate. </para +></listitem> + <listitem +><para +>La <link linkend="compile-and-install-make" +>compilazione di &kdevelop;</link +> comprende lo scaricamento dei sorgenti da svn e la procedura di compilazione e installazione. </para +></listitem> + <listitem +><para +>Le <link linkend="compile-and-install-options" +>opzioni di configure</link +> permettono di eseguire &kdevelop; anche se viene installato in una posizione diversa dalla directory di &kde;. </para +></listitem> +</itemizedlist> + +<sect2 id="compile-and-install-preliminaries"> +<title +>Fasi preliminari</title> + +<indexterm zone="compile-and-install-preliminaries"> + <primary +>preliminari</primary> + <secondary +>Installazione di &kdevelop;</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 +>Prima di addentrarsi nella sequenza di compilazione è necessario assicurarsi che siano disponibili tutte le librerie e gli strumenti per make. Per realizzarlo è necessario che alcune variabili d'ambiente siano impostate correttamente. Le procedura dipende dalla shell usata. </para> + +<note +><para +>Per evitare di scrivere tutti i comandi necessari ad impostare le variabili d'ambiente ogni volta che si compila, dovrebbero essere inseriti nel proprio file <filename +>.bashrc</filename +> o <filename +>.csgrc</filename +>. In questo modo le variabili d'ambiente verranno impostate correttamente ogni volta che viene avviata la shell. </para +></note> + +<sect3 id="compile-and-install-preliminaries-bash"> +<title +>Impostare le variabili per la shell bash</title> + +<para +>Se si usa la shell bash aggiungere le linee seguenti: </para> + +<informalexample +><simplelist> + <member +><userinput +>export KDEDIR=</userinput +>(percorso dell'installazione di KDE)</member> + <member +><userinput +>export QTDIR=</userinput +>(percorso della libreria 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 +>Impostare le variabili per la shell tcsh</title> + +<para +>Se si usa la shell tcsh aggiungere le linee seguenti: </para> +<para> +<informalexample +><simplelist> + <member +><userinput +>setenv KDEDIR </userinput +>(percorso dell'installazione di KDE)</member> + <member +><userinput +>setenv QTDIR </userinput +>(percorso della libreria 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 +>Compilare &kdevelop;</title> + +<indexterm zone="compile-and-install-make"> + <primary +>make</primary> + <secondary +>Installazione di &kdevelop;</secondary +></indexterm> +<indexterm zone="compile-and-install-make"> + <primary +>compilare</primary> + <secondary +>&kdevelop;</secondary +></indexterm> + +<note +><para +>Si presume che in seguito la propria copia dei sorgenti di &kdevelop; sarà messa nella directory <filename class="directory" +>~/kde3src/kdevelop</filename +>. </para +></note> + +<sect3 id="compile-and-install-make-svn"> +<title +>Considerazioni speciali per la compilazione svn</title> + +<para +>Se si usa uno snapshot da svn;, le fasi iniziali della compilazione dipendono dal fatto che si sia eseguito di un checkout completo oppure un aggiornamento dei soli sorgenti. </para> + +<variablelist> +<varlistentry> +<term id="compile-and-install-make-svn-co" +>Dopo un checkout svn</term> +<listitem> +<para +>Si dovrebbe <emphasis +>inizializzare il sistema make</emphasis +> dopo un recente checkout. Questo è vero anche ogni volta che si deve ricominciare da zero. Scrivere: </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make -f admin/Makefile.common svn-clean</userinput +> </member +></simplelist +></informalexample> +<para +>e dopo seguire <emphasis +>tutte le fasi seguenti</emphasis +>. </para> +<note +><para +>Se si deve ricostruire qualche file danneggiato o mancante, potrebbe essere necessario avere accesso al deposito svn. </para +></note> +<important +><para +>Il comando <command +>svn-clean</command +> <emphasis +>rimuoverà tutti i file</emphasis +> non presenti in svn della directory! Assicurarsi di effettuare un backup di tutte le informazioni importanti prima di inviare questo comando. </para +></important> +</listitem> +</varlistentry> + +<varlistentry> +<term id="compile-and-install-make-svn-up" +>Dopo un aggiornamento svn</term> +<listitem> +<para +>La fase seguente dipende dall'output della sequenza di aggiornamento di svn. Se si riceve qualcosa di simile (notare il contrassegno U o P a sinistra, che indica il cambiamento del file): </para> + +<screen +>U /percorso_directory/Makefile.am +</screen> +<para +>oppure se si è eseguito un checkout completo si deve scrivere: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make -f Makefile.svn</userinput +> </member +></simplelist +></informalexample> +<para +>prima di procedere con <emphasis +>tutte le fasi successive</emphasis +>. </para> +</listitem> +</varlistentry> +</variablelist> +</sect3 +> <!-- compile-and-install-make-svn --> + +<sect3 id="compile-and-install-make-basic"> +<title +>Sequenza dei principali comandi <command +>make</command +></title> + +<para +>Una volta che il sistema make è impostato si deve decidere che tipo di &kdevelop; si vuole usare. Questo viene fatto nella seguente fase di compilazione che costruisce i <filename +>Makefile</filename +> usati dal comando <command +>make</command +>. </para> + +<note +><para +>Se si vuole che &kdevelop; venga installato nella directory di default di &kde; si può tralasciare l'opzione <option +>--prefix</option +> nelle seguenti linee di comando di <command +>configure</command +>. Vedere il capitolo <link linkend="compile-and-install-options" +>Alcune note sulle opzioni di configure</link +>. </para +></note> + +<variablelist> +<varlistentry> +<term +>Versione compilata con il supporto per il debug</term> +<listitem> +<para +>Se si vuole tenere traccia di cosa succede a &kdevelop; a runtime si potrebbe compilare una versione con il supporto per il debug, indicandolo a <command +>configure</command +> così: </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --enable-debug=full --prefix=</userinput +>(dove-si-trova-kde3) </member +></simplelist +></informalexample> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Una versione compilata release</term> +<listitem> +<para +>Se si desidera solo usare &kdevelop; così com'è sarà sufficiente una versione release (più piccola e più veloce). É la versione di default.</para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --prefix=</userinput +>(dove-si-trova-kde3) </member +></simplelist +></informalexample> + +<note> +<para +>Se si vuole costruire la propria <link linkend="make-api" +>documentazione API</link +> per &kdevelop;, si deve includere anche un'altra opzione nel comando <command +>configure</command +>: </para> +<informalexample +><simplelist> + <member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --</userinput +>(opzioni come sopra) <userinput +>\</userinput +></member +> <member +><userinput +>--with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs</userinput +></member> +</simplelist +></informalexample> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Compilare e installare &kdevelop;</term> +<listitem> +<para +><command +>configure</command +> controllerà il sistema e costruirà un file <filename +>Makefile</filename +> in base a quello che rileverà. Il comando <command +>make</command +> per default userà questo <filename +>Makefile</filename +>. Quindi </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make</userinput +> </member +></simplelist +></informalexample> +<para +>È sufficiente. A questo punto, se necessario, ottenere i diritti dell'utente root con: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> +<para +>e inserire la password di root. Quindi installare l'applicazione: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make install</userinput +> </member +></simplelist +></informalexample> +<para +>Questo è tutto. Se &kdevelop; è stato installato nella directory di default di &kde; si può avviare l'IDE. In caso contrario devono essere eseguiti ulteriori comandi come mostrato nella sezione <link linkend="compile-and-install-options-dir" +>Directory di installazione non di default</link +>. </para> + +<note> + <para +>In realtà vengono generalmente installate tre applicazioni relative a &kdevelop;: </para> + <itemizedlist> + <listitem +><para +>L'IDE di &kdevelop; — è l'applicazione che si usa normalmente per lavorare.</para +></listitem> + <listitem +><para +>L'Assistente di &kdevelop; — racchiude in una applicazione separata tutti gli strumenti per la documentazione di &kdevelop;. È utile quando si vuole consultare qualche argomento relativo alla programmazione senza dover avviare l'IDE.</para +></listitem> + <listitem +><para +>Il Designer di &kdevelop; — espande il Designer &Qt; con elementi specifici di &kde; e si integra facilmente con l'IDE di &kdevelop;.</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 +>Alcune note sulle opzioni di <command +>configure</command +></title> + +<sect3 id="compile-and-install-options-dir"> +<title +>Directory di installazione non di default</title> + +<indexterm zone="compile-and-install-options-dir"> + <primary +>&kdevelop;</primary> + <secondary +>installazione</secondary> + <tertiary +>directory non di default</tertiary +></indexterm> +<indexterm zone="compile-and-install-options-dir"> + <primary +>directory non di default</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 +>Per default <command +>configure</command +> predispone l'installazione dell'<acronym +>IDE</acronym +> nella directory di default di &kde;. Questo è necessario perché &kdevelop; accede direttamente ad alcuni strumenti e componenti che risiedono lì. Se si vuole usare una propria directory di installazione, lo si deve indicare a <command +>configure</command +> attraverso l'opzione <option +>--prefix</option +>: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --prefix=</userinput +>(dove-si-trova-kde3) </member +></simplelist +></informalexample> +<para +>Come controindicazione si deve fornire a &kdevelop; un sistema per accedere agli strumenti e ai componenti necessari situati nella directory di &kde;. (Si può sempre usare l'IDE senza farlo, ma le sue capacità saranno molto limitate). </para> +<para +>Accedere alla shell ed eseguire i seguenti comandi prima di avviare &kdevelop; al prompt. </para> + +<note +><para +><emphasis +>Assicurarsi di usare il plurale:</emphasis +> è <quote +><envar +>KDEDIRS</envar +></quote +>, non <quote +><envar +>KDEDIR</envar +></quote +> </para +></note> + +<informalexample +><simplelist> + <member +><prompt +>~> </prompt +> <userinput +>export KDEDIRS=/usr/local/kde:/opt/kde3</userinput +> </member> + <member +><prompt +>~> </prompt +> <userinput +>kbuildsycoca</userinput +> </member> + <member +>(Ora avviare &kdevelop;:) </member> + <member +><prompt +>~> </prompt +> <userinput +>kdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><simplelist> + <member +>La variabile d'ambiente <envar +>KDEDIRS</envar +> deve essere impostata con <emphasis +>l'elenco delle directory &kde;</emphasis +> del proprio sistema. Sono state usate le directory </member> + <member +><filename class="directory" +>/usr/local/kde</filename +>:<filename class="directory" +>/opt/kde3</filename +></member> + <member +>solo come esempio.</member> + <member +>La directory <filename class="directory" +>/usr/local/kde</filename +> potrebbe ad esempio contenere una versione incompleta di &kde; compilata per effettuare il debug, e la directory <filename class="directory" +>/opt/kde3</filename +> potrebbe contenere la versione &kde; standard della propria distribuzione usata per il lavoro di tutti i giorni.</member> +</simplelist +></note> + +<para +>Nella shell tcsh si deve impostare la variabile d'ambiente così: </para> +<informalexample +><simplelist +><member +><prompt +>~> </prompt +> <userinput +>setenv KDEDIRS /usr/local/kde:/opt/kde3</userinput +> </member +></simplelist +></informalexample> +<para +>Il comando <command +>kbuildsycoca</command +> (<quote +>build system control cache</quote +>) cerca le librerie e conserva in cache le loro posizioni e versioni in modo che &kdevelop; le possa trovare. Questa operazione può portare via parecchio tempo - e deve essere fatto ogni volta che si avvia la shell. Si potrebbero mettere i comandi sopra in uno script della shell per risparmiare fatica. </para> +<para +>(Non è consigliabile inserire questi comandi nel file <filename +>.bashrc</filename +> o <filename +>.cshrc</filename +>, poiché <command +>kbuildsycoca</command +> verrebbe eseguito ogni volta che si chiama la shell). </para> + +<note +><para +>Il comando <command +>kbuildsycoca</command +> non viene eseguito come root, quindi deve essere avviato da un utente non root. (Dopo tutto non è <emphasis +>affatto una buona idea</emphasis +> sviluppare applicazioni come utente 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 +>Come ottenere la documentazione API di &kdevelop;</title> + +<indexterm zone="make-api"> + <primary +>API</primary> + <secondary +>&kdevelop;</secondary +></indexterm> +<indexterm zone="make-api"> + <primary +>&kdevelop;</primary> + <secondary +>API</secondary +></indexterm> +<indexterm zone="make-api"> + <primary +>compilare</primary> + <secondary +>&kdevelop;</secondary> + <tertiary +>API</tertiary +></indexterm> +<indexterm zone="make-api"> + <primary +>configure</primary> + <secondary +>&kdevelop; API</secondary +></indexterm> + +<para +>API è l'abbreviazione di <quote +>Application Program Interface</quote +>. In realtà una interfaccia di programmazione delle applicazioni è una serie di descrizioni (cioè un insieme di chiamate) con le quali una applicazione accede al sistema operativo e ad altri servizi. In questo contesto tuttavia viene adottata una definizione più ampia: le API di una applicazione &kde; o &Qt; sono un riassunto delle interfacce delle classi e dei metodi, un sommario da usare come dizionario per navigare tra i sorgenti. </para> +<para +>L'ultima versione delle API è presente nel <ulink url="http://http://www.kdevelop.org/HEAD/doc/api/html/index.html" +>sito web di KDevelop</ulink +>. Sono automaticamente aggiornate ogni 24 ore. </para> +<para +>Se non si possiede sempre un accesso a Internet si può anche costruire la documentazione API dai sorgenti di &kdevelop;. Per farlo si deve indicare al sistema automake la posizione delle API di KDELIBS nel proprio sistema. Questo può essere fatto con la speciale opzione <option +>--with-kdelibsdoxy-dir</option +> del comando <command +>configure</command +> quando si stanno compilando i sorgenti di &kdevelop;: </para> + +<informalexample +><simplelist> + <member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --</userinput +>(solite-opzioni)<userinput +> \</userinput +> </member> + <member> + <userinput +>--with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs</userinput> + </member> +</simplelist +></informalexample> + +<para +>(<command +>make</command +> sostituirà <varname +>$KDEDIR</varname +> con l'attuale directory di &kde;). Poi chiamare il comando <command +>make</command +> <link linkend="compile-and-install-make-basic" +>come al solito</link +>. Dopo che l'IDE &kdevelop; è stato compilato si avrà l'opzione di compilare anche le API. Per questo si deve scrivere </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make apidocs</userinput +> </member +></simplelist +></informalexample> + +<para +>Questo costruirà nella directory di base di &kdevelop; un <filename +>Doxyfile</filename +> che verrà successivamente elaborato dall'applicazione <application +>Doxygen</application +> per costruire una serie di file <filename +>.html</filename +>. Quando il processo della costruzione delle API giunge alla fine (su un sistema lento potrebbe durare più di un'ora) dovranno essere installate, in modo simile all'installazione di &kdevelop;. Se necessario ottenere i diritti di superutente con </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> + +<para +>e inserire la password di root. Quindi installare i file API con </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make install-apidox</userinput +> </member +></simplelist +></informalexample> + +<para +>Una volta fatto, <command +>make</command +> indicherà la directory dove si potranno vedere i contenuti della documentazione delle API. Prendere nota dell'indirizzo, in modo da poterlo usare con &konqueror; e all'interno di &kdevelop;. </para> + +<note +><para +>Si vedranno molto probabilmente molti avvertimenti e/o messaggi d'errore durante la costruzione delle API effettuata con <application +>Doxygen</application +>. Conviene ignorarli, essendo di interesse solo per gli sviluppatori di &kdevelop;. Se la generazione delle API giunge alla fine con successo, si potranno usare i file <filename +>.html</filename +>. </para +></note> + +</sect1 +> <!-- make-api --> + +</appendix +> <!-- kdevelop-install --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png Binary files differnew file mode 100644 index 00000000000..8a3f32e68b3 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-scripting.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-scripting.docbook new file mode 100644 index 00000000000..9ed59f87229 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-scripting.docbook @@ -0,0 +1,74 @@ +<chapter id="kdevelop-scripting"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Ian</firstname +><surname +>Geiser</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Usare gli script in KDevelop</title> + +<sect1 id="running-scripts"> +<title +>Eseguire gli script</title> +<para +>Per accedere agli script disponibili in &kdevelop; selezionare la voce <menuchoice +><guimenu +>Strumenti</guimenu +><guimenuitem +>Script</guimenuitem +></menuchoice +>. Se questa voce non è presente significa che non ci sono script disponibili. </para> +</sect1> + +<sect1 id="adding-scripts"> +<title +>Aggiungere Script</title> +<para +>Dopo aver aggiunto il supporto per KScript nella propria applicazione è semplice inserire degli script. Essi sono composti da due parti: un file desktop che contiene i metadati e lo script vero e proprio. Questo metodo viene usato per motivi di sicurezza e semplicità: il file desktop fornisce le meta-informazioni per i menu e il tipo di script, in modo che l'applicazione host non debba verificare lo script ogni volta che viene caricato. Di seguito viene mostrato un esempio di questo file: </para> +<para +>Il precedente esempio mostra le parti principali che vengono esaminate da KScript. La prima voce "Name" è il nome che verrà visualizzato all'utente nell'applicazione host e la voce "Comment" contiene un commento che viene visualizzato in un aiuto. La voce "Type" è la più importante. È usata per selezionare lo script engine appropriato per eseguire lo script; attualmente in KDE sono disponibili "ShellScript/bash" e "JavaScript/kjs". Successivamente si deve creare lo script vero e proprio. Nell'esempio precedente il tipo di script usato è "ShellScript/bash". L'engine shellscript fornisce alcuni strumenti allo sviluppatore. Il primo elemento è l'ID DCOP dell'applicazione host, che viene passato allo script come primo argomento. Nello script, il valore "$1" restituirà l'ID DCOP dell'host. Di seguito viene mostrato un script shell di esempio: </para> + +<para +>Questo script è piuttosto semplice: esegue un comando ed imposta come testo del primo documento l'output del comando "ls -l"</para> + +<para +>L'applicazione KDCOP è uno degli strumenti più importanti nello sviluppo di script. </para> +<figure id="screenshot-kdcop" float="1"> + <title +>Navigazione nelle interfacce DCOP in &kdevelop; con KDCOP</title> + <mediaobject> + <imageobject +><imagedata fileref="kdcop_browsing.png"/></imageobject> + </mediaobject> +</figure> + +<para +>KDCOP permette agli sviluppatori di script la navigazione e il debug delle interfacce dell'applicazione host. Inoltre fornisce anche la possibilità di selezionare un metodo e trascinare il codice in un editor di testo, in modo da semplificare l'uso per chi non capisce i metodi DCOP del linguaggio host. Per l'accesso a DCOP vengono attualmente supportati i linguaggi KJSEmbed, Python e shell UNIX.</para> + +<para +>Una volta che lo script è completato può essere installato. Gli sviluppatori di applicazioni dovrebbero documentare la posizione che verrà esaminata per cercare gli script. Nell'esempio precedente gli script di Kate sono contenuti in "$KDEDIRS/share/apps/kate/scripts".</para> + +<figure id="screenshot-scripts" float="1"> + <title +>Script &kdevelop; nel filesystem</title> + <mediaobject> + <imageobject +><imagedata fileref="script_location.png"/></imageobject> + </mediaobject> +</figure> + +<para +>Il file desktop e lo script associato dovrebbero essere contenuti nella stessa directory. Viene raccomandato agli sviluppatori di script di inserire nella stessa directory anche tutte le altre risorse per gli script come i file UI o i file di dati. Nell'esempio precedente gli script verranno visualizzati nel menu Strumenti->Script. È importante notare che gli script non dovrebbero effettuare operazioni che possono bloccarsi per un lungo periodo di tempo, o entrare in un loop di eventi perché la versione attuale dell'interfaccia degli script è adattata per compiti automatizzati che vengono eseguiti fino al loro termine. Essa verrà successivamente estesa in KDE 4. </para> + +</sect1> + + +</chapter> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-survey.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-survey.docbook new file mode 100644 index 00000000000..8d51b493c9b --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-survey.docbook @@ -0,0 +1,770 @@ +<chapter id="kdevelop-survey"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Panoramica delle caratteristiche di &kdevelop;</title> + +<indexterm zone="kdevelop-survey"> + <primary +>&kdevelop;</primary> + <secondary +>panoramica</secondary +></indexterm> +<indexterm zone="kdevelop-survey"> + <primary +>panoramica</primary +></indexterm> +<indexterm zone="kdevelop-survey"> + <primary +>panoramica</primary +></indexterm> + +<para +>&kdevelop; integra diversi strumenti, e modelli in un'unica interfaccia utente comune, che è costituita fondamentalmente da: <itemizedlist> + <listitem +><para +>diverse <link linkend="uimodes-survey" +>modalità dell'interfaccia utente</link +>, con le quali si può selezionare l'aspetto dell'area di lavoro, </para +></listitem> + <listitem +><para +>la <link linkend="applicationwizard" +>procedura guidata per le applicazioni</link +> che aiuta a creare un nuovo progetto, </para +></listitem> + <listitem +><para +>diversi <link linkend="makesystems" +>sistemi di gestione dei progetti</link +> che aiutano nella compilazione e nella gestione del progetto, </para +></listitem> + <listitem +><para +>alcuni <link linkend="editing" +>strumenti di editing</link +> per lavorare con facilità sul testo dei propri programmi </para +></listitem> + <listitem +><para +>diversi <link linkend="file-browsers" +>browser di file</link +> che forniscono differenti visualizzazioni del file system, </para +></listitem> + <listitem +><para +>diversi <link linkend="class-browsers" +>browser di classi</link +> che aiutano a gestire le classi e le loro relazioni nei progetti orientati agli oggetti, </para +></listitem> + <listitem +><para +><link linkend="debugger" +>un'interfaccia per il debug</link +> per trovare e rimuovere gli errori dei programmi dall'interno di &kdevelop;, e </para +></listitem> + <listitem +><para +>diversi <link linkend="plugin-tools" +>plugin</link +>, moduli estendibili che possono essere caricati a richiesta. Questi permettono di attivare solo le caratteristiche che servono veramente. </para +></listitem> + <listitem +><para +>un insieme di altri strumenti di diagnosi, per documentazione e per l'ottimizzazione. </para +></listitem> +</itemizedlist> +</para> + +<note> + <para +>In realtà vengono generalmente installate tre applicazioni relative a &kdevelop;: </para> + <itemizedlist> + <listitem +><para +>L'IDE di &kdevelop; — è l'applicazione che si usa normalmente per lavorare.</para +></listitem> + <listitem +><para +>L'Assistente di &kdevelop; — racchiude in una applicazione separata tutti gli strumenti per la documentazione di &kdevelop;. È utile quando si vuole consultare qualche argomento relativo alla programmazione senza dover avviare l'IDE.</para +></listitem> + <listitem +><para +>Il Designer di &kdevelop; — espande il Designer &Qt; con elementi specifici di &kde; e si integra facilmente con l'IDE di &kdevelop;.</para +></listitem> + </itemizedlist> +</note> + + +<sect1 id="uimodes-survey"> +<title +>Modalità dell'interfaccia utente disponibili</title> + +<indexterm zone="uimodes-survey"> + <primary +>&kdevelop;</primary> + <secondary +>modalità dell'interfaccia utente</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>interfaccia utente</primary> + <secondary +>modalità di &kdevelop;</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>modalità UI</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Finestre Childframe</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Schedario</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Finestre Toplevel</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>IDEAl</primary +></indexterm> + +<para +>&kdevelop; offre agli sviluppatori quattro modalità diverse dell'interfaccia utente (fare clic sul nome della modalità per vedere un esempio): <itemizedlist> + <listitem +><para +><link linkend="ideal-desc" +>IDEAl</link +></para> + <para +>Questo è un nuovo approccio all'interfaccia utente che ottimizza l'area di lavoro che permette una manipolazione intuitiva degli strumenti. </para> + <itemizedlist> + <listitem +><para +>Tutti gli strumenti vista sono ancorati attorno all'area della finestra principale con delle etichette. Sono raggruppati a sinistra, destra, in alto e in basso a seconda dei servizi che forniscono. </para +></listitem> + <listitem +><para +>Le viste dell'editor e del browser saranno inserite in una grande finestra con linguette all'interno dell'area della finestra principale. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="mdi-desc" +>Finestre Childframe</link +></para> + <itemizedlist> + <listitem +><para +>Tutti gli strumenti di vista sono inizialmente all'interno della finestra principale.</para +></listitem> + <listitem +><para +>Le viste dell'editor e del browser saranno visualizzate come finestre principali all'interno dell'area della finestra del programma.</para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="tabbed-desc" +>Schedario</link +></para> + <itemizedlist> + <listitem +><para +>Tutti gli strumenti di vista sono inizialmente all'interno della finestra principale. </para +></listitem> + <listitem +><para +>Le viste dell'editor e del browser saranno visualizzate all'interno di una finestra con linguetta. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="toplevel-desc" +>Finestre Toplevel</link +></para> + <itemizedlist> + <listitem +><para +>Tutti gli editor, il browser e gli strumenti di vista saranno visualizzati come finestre principali direttamente sul desktop. </para +></listitem> + <listitem +><para +>Il widget principale contiene soltanto il menu, le barre degli strumenti e la barra di stato. </para +></listitem> + </itemizedlist> + </listitem> + +</itemizedlist> +</para> + +<sect2 id="uimodes-switch"> +<title +>Come cambiare le interfacce utente</title> + +<indexterm zone="uimodes-switch"> + <primary +>interfaccia utente</primary> + <secondary +>cambiare modalità</secondary +></indexterm> +<indexterm zone="uimodes-switch"> + <primary +>cambiare modalità UI</primary +></indexterm> + +<para +>Per cambiare la modalità dell'interfaccia utente selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +></menuchoice +>. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Interfaccia Utente</guilabel +> a sinistra. Questo visualizzerà la pagina di impostazioni mostrata qui sotto. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface.png" format="PNG"/> + </imageobject> + <caption +><para +>Selezionare una modalità dell'interfaccia utente </para +></caption> + </mediaobject> +</screenshot> + +<para +>(Nelle versioni più vecchie di &kdevelop; è disponibile solo la sezione relativa alla selezione Top mode), </para> + +<para +>Nella sezione <guilabel +>Modalità principale interfaccia utente</guilabel +> selezionare l'opzione relativa all'interfaccia utente che si vuole utilizzare. </para> +<para +>A seconda della modalità dell'interfaccia utente selezionata, potrebbero essere disponibili altre sezioni per la configurazione dove si potranno configurare ulteriori dettagli. Vedere il capitolo <link linkend="setup-ui" +>Selezionare l'interfaccia utente</link +> per ulteriori informazioni. </para> + +<note +><para +>Non dimenticarsi di riavviare KDevelop per rendere effettive le impostazioni. </para +></note> + +</sect2 +> <!-- uimodes-switch --> + +<sect2 id="maximize-workspace"> +<title +>Come massimizzare l'area di lavoro</title> + +<indexterm zone="maximize-workspace"> + <primary +>&kdevelop;</primary> + <secondary +>area di lavoro</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>&kdevelop;</primary> + <secondary +>massimizzare l'area di lavoro</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interfaccia utente</primary> + <secondary +>area di lavoro</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interfaccia utente</primary> + <secondary +>barra dei menu</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>interfaccia utente</primary> + <secondary +>modalità schermo intero</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>modalità schermo intero</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>barra dei menu</primary> + <secondary +>nascondere/mostrare</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>nascondere la barra dei menu</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>mostrare la barra dei menu</primary +></indexterm> + +<para +>Per massimizzare lo spazio, è disponibile una modalità a schermo intero che espande l'area della finestra principale fino ai bordi dello schermo. Ulteriore spazio può essere recuperato nascondendo la barra dei menu. Si possono anche nascondere tutte le barre degli strumenti come nelle applicazioni <application +>KDE</application +>. </para> + +<variablelist> +<varlistentry> +<term +>Modalità schermo intero</term> +<listitem> +<para +>Per attivare o disattivare la modalità schermo intero selezionare <menuchoice +><guimenu +>Visualizza</guimenu +> <guimenuitem +>Modalità schermo intero</guimenuitem +> </menuchoice +> dai menu oppure premere <keycombo +>&Ctrl;&Shift; <keycap +>F</keycap +></keycombo +>. È disponibile anche una icona nella <guilabel +>barra di navigazione</guilabel +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nascondere/Mostrare la barra dei menu</term> +<listitem> +<para +>Per <emphasis +>nascondere</emphasis +> la barra dei menu selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Mostra la barra dei menu</guimenuitem +></menuchoice +> dal menu o premere <keycombo +>&Ctrl;<keycap +>M</keycap +> </keycombo +>. Si può anche includere l'icona <guiicon +>Mostra la barra dei menu</guiicon +> in una barra degli strumenti appropriata, ⪚ la <guilabel +>barra di navigazione</guilabel +>. Per <emphasis +>mostrare</emphasis +> la barra dei menu si deve premere <keycombo +>&Ctrl;<keycap +>M</keycap +> </keycombo +> o, se disponibile, usare l'icona <guiicon +>Mostra la barra dei menu</guiicon +>. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- maximize-workspace --> + +</sect1 +> <!-- uimodes-survey --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="ui-elements"> +<title +>Elementi dell'interfaccia utente</title> + +<para +>(... da scrivere ...) </para> + +<sect2 id="ui-elements-workarea"> +<title +>L'area di lavoro</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-workarea --> + +<sect2 id="ui-elements-titlebar"> +<title +>La barra del titolo di &kdevelop;</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-titlebar --> + +<sect2 id="ui-elements-statusbar"> +<title +>La barra di stato di &kdevelop;</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-statusbar --> + +<sect2 id="ui-elements-menubar"> +<title +>La barra dei menu</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-menubar --> + +<sect2 id="ui-elements-toolbars"> +<title +>Le barre degli strumenti</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-toolbars --> + +<sect2 id="ui-elements-treetoolviews"> +<title +>Viste ad albero</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-treetoolviews --> + +<sect2 id="ui-elements-outputtoolviews"> +<title +>Viste di output</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- ui-elements-outputtoolviews --> + +</sect1 +> <!-- ui-elements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makesystems"> +<title +>Sistemi di gestione dei progetti</title> + +<indexterm zone="makesystems"> + <primary +>gestione progetti</primary +></indexterm> + +<para +>Un progetto fa affidamento su qualche tipo di sistema di gestione dei progetti. &kdevelop; fornisce quattro <emphasis +>sistemi di gestione dei progetti</emphasis +> che possono essere selezionati. <itemizedlist> + <listitem +><para +>I <link linkend="automake-project" +>Progetti Automake</link +> usano gli strumenti standard di sviluppo &GNU;. </para +></listitem> + <listitem +><para +>I <link linkend="qmake-project" +>Progetti QMake</link +> usano il gestore di progetti QMake di Trolltech. </para +></listitem> + <listitem +><para +>I <link linkend="ant-project" +>Progetti ANT</link +> usano il gestore di progetti ANT di Apache per lo sviluppo con &Java;. </para +></listitem> + <listitem +><para +>I <link linkend="custom-project" +>Progetti personalizzati</link +> che richiedono la gestione manuale dei <filename +>Makefile</filename +>. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-project"> +<title +>Progetti automake</title> + +<indexterm zone="automake-project"> + <primary +>progetti</primary> + <secondary +>automake</secondary +></indexterm> +<indexterm zone="automake-project"> + <primary +>automake</primary> + <secondary +>progetti</secondary +></indexterm> + +<para +>I progetti creati con il gestore di progetti automake di &kdevelop; rendono molto facile per gli sviluppatori l'uso degli strumenti standard di sviluppo &GNU;, che forniscono <itemizedlist> + <listitem +><para +>una migliore generazione dei <filename +>Makefile</filename +> e </para +></listitem> + <listitem +><para +>un modo ottimale e sicuro per adattarsi velocemente a sistemi differenti usando gli script <filename +>configure</filename +> generati da autoconf. </para +></listitem> +</itemizedlist> +</para> +</sect2 +> <!-- automake-project --> + +<sect2 id="qmake-project"> +<title +>Progetti QMake</title> + +<indexterm zone="qmake-project"> + <primary +>progetti</primary> + <secondary +>qmake</secondary +></indexterm> +<indexterm zone="qmake-project"> + <primary +>qmake</primary> + <secondary +>progetti</secondary +></indexterm> + +<para +>Per gli sviluppatori che amano la flessibilità del sistema qmake di &Qt;, &kdevelop; fornisce la possibilità di gestire i progetti basati su qmake (file .pro) all'interno della &GUI;. </para> +<para +>Per ulteriori informazioni sul gestore di progetti QMake vedere la guida <quote +>qmake User Guide</quote +> che dovrebbe essere inclusa nella propria distribuzione, oppure vedere il nel sito di <ulink url="http://doc.trolltech.com/" +>TROLLTECH</ulink +> dove si trova la documentazione della propria versione del <citetitle +>toolkit per lo sviluppo di applicazioni GUI con Qt</citetitle +>. </para> +</sect2 +> <!-- qmake-project --> + +<sect2 id="cmake-project"> +<title +>Progetti CMake</title> + +<indexterm zone="cmake-project"> + <primary +>progetti</primary> + <secondary +>cmake</secondary +></indexterm> +<indexterm zone="cmake-project"> + <primary +>cmake</primary> + <secondary +>progetti</secondary +></indexterm> + +<para +>CMake è il nuovo sistema di compilazione per &kde; 4 e &kdevelop;. Sono già presenti alcuni modelli basati su CMake per i progetti in C e C++: è sufficiente avere il programma cmake nella propria variabile $<envar +>PATH</envar +> per compilarli. </para> +<para +>Per impostare un nuovo progetto C o C++ con &kdevelop; selezionare <menuchoice +><guimenuitem +>Nuovo Progetto...</guimenuitem +><guimenuitem +>C o C++</guimenuitem +><guimenuitem +>CMake based projects</guimenuitem +><guimenuitem +>Un modello di libreria condivisa o Programma di Hello World</guimenuitem +></menuchoice +>. </para> +</sect2 +> <!-- cmake-project --> + +<sect2 id="ant-project"> +<title +>ANT Project Manager (applicazioni &Java;)</title> + +<indexterm zone="ant-project"> + <primary +>progetti</primary> + <secondary +>ant</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>ant</primary> + <secondary +>progetti</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>progetti</primary> + <secondary +>Java</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>Java</primary> + <secondary +>progetti</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>sviluppo</primary> + <secondary +>Java</secondary +></indexterm> + +<para +>Gli sviluppatori &Java; potrebbero usare il gestore di progetti ANT di Apache per i loro progetti. Per impostare un nuovo progetto ANT con &kdevelop; selezionare <menuchoice +><guimenuitem +>Nuovo Progetto...</guimenuitem +><guimenuitem +>Java</guimenuitem +><guimenuitem +>Ant Project</guimenuitem +><guimenuitem +>Application</guimenuitem +></menuchoice +>. </para> +<para +>Per ulteriori informazioni vedere la home page <ulink url="http://ant.apache.org/" +>The Apache Ant Project</ulink +>. </para> +</sect2 +> <!-- ant-project --> + +<sect2 id="custom-project"> +<title +>Progetti personalizzati</title> + +<indexterm zone="custom-project"> + <primary +>progetti</primary> + <secondary +>personalizzato</secondary +></indexterm> +<indexterm zone="custom-project"> + <primary +>progetti personalizzati</primary +></indexterm> +<indexterm zone="custom-project"> + <primary +>Makefile</primary> + <secondary +>progetti personalizzati</secondary +></indexterm> + +<para +>Se si preferisce gestire da soli i <filename +>Makefile</filename +> del proprio progetto si può usare l'opzione custom project di &kdevelop;. Potrebbe essere conveniente in progetti non usuali o se si vuole mantenere il pieno controllo sul processo di <command +>make</command +>. </para> +<para +>Tuttavia, se <emphasis +>non serve</emphasis +> la flessibilità e il controllo dei progetti personalizzati si dovrebbe considerare l'uso del gestore automake o degli altri gestori di progetto, che facilitano considerevolmente la costruzione dei programma e il processo di distribuzione. </para> +</sect2 +> <!-- custom-project --> + +<sect2 id="makesystems-distribution"> +<title +>Come distribuire la propria applicazione</title> + +<indexterm zone="makesystems-distribution"> + <primary +>distribuzione</primary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>applicazione</primary> + <secondary +>distribuzione</secondary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>pacchetti binari</primary +></indexterm> + +<para +>Per distribuire l'applicazione è richiesto che l'utente finale abbia installato: <itemizedlist> + <listitem +><para +>un compilatore appropriato,</para +></listitem> + <listitem +><para +>un linker e</para +></listitem> + <listitem +><para +>le relative librerie di sviluppo</para +></listitem> +</itemizedlist> +</para> +<para +>come per le applicazioni C++. Ma si possono distribuire anche i <emphasis +>pacchetti binari</emphasis +> dell'applicazione. In entrambi i casi, l'utente finale non deve avere installato &kdevelop;. </para> +<para +>Se si distribuiscono i sorgenti, si raccomanda di includere anche <emphasis +>il file di progetto</emphasis +> di &kdevelop;. Questo rende molto semplice agli altri sviluppatori — se usano &kdevelop; — lavorare con i file sorgente. </para> +<para +>Questa raccomandazione è valida anche per progetti a cui collaborano <emphasis +>vari sviluppatori</emphasis +>, che magari lavorano in posti diversi. </para> +<para +>Specialmente nelle applicazioni multi-linguaggio, i <emphasis +>traduttori</emphasis +> non lavorano con il codice sorgente, eccetto nei casi che richiedono delle correzioni per abilitare il supporto alla traduzione. </para> + +</sect2 +> <!-- makesystems-distribution --> + +</sect1 +> <!-- makesystems --> + +</chapter +> <!-- kdevelop-survey --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png Binary files differnew file mode 100644 index 00000000000..ca44f5177c1 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png Binary files differnew file mode 100644 index 00000000000..f0b80d03f22 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/nutshell.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/nutshell.docbook new file mode 100644 index 00000000000..60abfc82906 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/nutshell.docbook @@ -0,0 +1,368 @@ +<appendix id="nutshell"> +<title +>In poche parole — trucchi e suggerimenti</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 +>Le informazioni di questo capitolo sono intese come un veloce riferimento per iniziare e sono utili se si dimenticano (momentaneamente) alcuni concetti di base. Sono illustrati alcuni brevi suggerimenti per risolvere alcuni problemi che si incontrano frequentemente quando si lavora con &kdevelop;. </para> +<para +>Se si desiderano ulteriori informazioni su un argomento, seguire il relativo collegamento. </para> +<para +>Sono disponibili informazioni sui seguenti argomenti: </para> +<simplelist> + <member +><link linkend="nutshellitem-look-and-feel" +>Aspetto</link +></member> + <member +><link linkend="nutshellitem-projects" +>Progetti</link +></member> + <member +><link linkend="nutshellitem-compilation" +>Compilazione</link +></member> + <member +><link linkend="nutshellitem-automake" +>Gestore Automake</link +></member> + <member +><link linkend="nutshellitem-compilemake" +>Problemi di compilazione/Make</link +></member> + <member +><link linkend="nutshellitem-others" +>Altri argomenti</link +></member> +</simplelist> + +<variablelist id="nutshellitem-look-and-feel"> +<title +>Aspetto</title> + +<varlistentry> +<term id="nutshell-ideal-tabs" +><link linkend="setup-ui-toolview" +>Impostare linguette degli strumenti più piccole nella modalità IDEAl</link +></term> +<listitem> +<para +>Per default &kdevelop; visualizza delle linguette con il testo attorno all'area di lavoro. Si può risparmiare spazio cambiando questo aspetto nella finestra di dialogo della configurazione di &kdevelop; (<menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Configura KDevelop...</guimenuitem +><guimenuitem +>Interfaccia Utente</guimenuitem +></menuchoice +>).</para> +<para +>Se si usa una vecchia versione di &kdevelop; 3, potrebbe non essere disponibile questa finestra di configurazione. Per cambiare la visualizzazione delle linguette, inserire la voce <option +>MDIStyle</option +> nel tag <option +>[UI]</option +> nel file di configurazione <filename +>$KDEHOME/share/config/kdeveloprc</filename +> in questo modo:</para> + +<simplelist> +<member +><option +>MDIStyle=0</option +>: solo icone</member> +<member +><option +>MDIStyle=1</option +>: solo testo (default)</member> +<!--<member +><computeroutput +>MDIStyle=2</computeroutput +>: icons only on smaller tabs (not very useful)</member +>--> +<member +><option +>MDIStyle=3</option +>: icone e testo</member> +</simplelist> +</listitem> +</varlistentry> + +<varlistentry +> <!-- ### remove this entry when the bug is repaired --> +<term id="nutshell-weird-style" +>Strani colori dei caratteri e/o stili di visualizzazione</term> +<listitem> +<para +>Se si notano lettere colorate in modo casuale dappertutto (&ie; su pulsanti, barre degli strumenti, ecc.) e la finestra di &kdevelop; sembra usare uno stile di visualizzazione errato, potrebbe essere di aiuto questa operazione:</para> + +<itemizedlist> +<listitem +><para +>Nel proprio file di configurazione <filename +>$<envar +>KDEHOME</envar +>/share/config/kdeveloprc</filename +> trovare la linea che contiene <quote +><computeroutput +>Style=Checked</computeroutput +></quote +> e rimuoverla. Poi riavviare &kdevelop;. </para> +</listitem> +</itemizedlist> +<para +>(Questo inconveniente può accadere dopo aver fatto clic su un file .ui in una finestra che visualizza i file. &kdevelop; eseguirà il programma <application +>KUIViewer</application +> per mostrare l'interfaccia grafica prodotta da quel file).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-full-screen" +><link linkend="maximize-workspace" +>Modalità schermo intero</link +></term> +<listitem> +<para +>Selezionare <menuchoice +><guimenu +>Visualizza</guimenu +><guimenuitem +>Modalità schermo intero</guimenuitem +></menuchoice +> dai menu oppure premere <keycombo +>&Ctrl;&Shift;<keycap +>F</keycap +></keycombo +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-hide-menu" +><link linkend="maximize-workspace" +>Nascondere/mostrare la barra dei menu</link +></term> +<listitem> +<para +>Per nascondere la barra dei menu selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Mostra la barra dei menu</guimenuitem +></menuchoice +> dal menu o premere <keycombo +>&Ctrl;<keycap +>M</keycap +></keycombo +>. Per visualizzarla nuovamente premere <keycombo +>&Ctrl;<keycap +>M</keycap +> </keycombo +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title id="nutshellitem-projects" +>Progetti</title> +<varlistentry> +<term +><link linkend="new-projects" +>Creare un nuovo progetto</link +></term> +<listitem> +<para +>Avviare la <link linkend="applicationwizard" +>procedura guidata per le applicazioni</link +> attraverso <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Nuovo progetto...</guimenuitem +></menuchoice +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-new-custom-project" +>Creare un progetto personalizzato</term> +<listitem> +<para +>Non esiste un metodo per creare direttamente un progetto personalizzato (&ie; un progetto che usa dei propri makefile). Usare <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Importa progetto esistente</guimenuitem +></menuchoice +>. Ricordarsi di impostare il <guilabel +>Tipo di progetto</guilabel +> opportuno con l'etichetta <quote +>(Custom Makefiles)</quote +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-project-options" +>Impostare inizialmente le opzioni del progetto</term> +<listitem> +<para +>Quando si avvia un nuovo progetto non dimenticarsi di impostare le opzioni desiderate attraverso <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Opzioni progetto...</guimenuitem +></menuchoice +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilation"> +<title +>Compilazione</title> +<varlistentry> +<term id="nutshell-compilemsg-detail" +><link +linkend="setup-main-compile" +>Dettagli mancanti nei messaggi di compilazione</link +></term> +<listitem> +<para +>Se durante la compilazione si nota che nella finestra <guilabel +>Messaggi</guilabel +> mancano alcune informazioni, ciò potrebbe essere dovuto ad un livello dei dettagli troppo basso. Fare clic con il &RMB; nella finestra e selezionare un altro livello nel menu contestuale. </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-automake"> +<title +><link linkend="automake-manager" +>Gestore Automake</link +></title> + +<varlistentry> +<term +>Creare nuovi file in un progetto</term> +<listitem> +<para +>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il &RMB; nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare <guimenuitem +>Crea nuovo file...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry id="nutshell-add-project-file"> +<term +>Aggiungere file esistenti ad un progetto</term> +<listitem> +<para +>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il &RMB; nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare <guimenuitem +>Aggiungi file esistenti...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Rimuovere un file da un progetto</term> +<listitem> +<para +>Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi nella metà inferiore aprire la lista dove si vuole rimuovere il file, fare clic con il &RMB; sul file nella lista e selezionare <guimenuitem +>Rimuovi</guimenuitem +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilemake"> +<title +>Problemi di compilazione/Make</title> +<varlistentry> +<term id="nutshell-builddirproblems" +><link +linkend="defaultbuild-warning" +>Il progetto non viene compilato dopo aver essere passati dal target di default ad un altro target o viceversa.</link +></term> +<listitem> +<para +>Esiste un problema con il meccanismo di automake/autoconf. Se <menuchoice +><guimenu +>Progetto</guimenu +><guimenuitem +>Configurazione compilazione</guimenuitem +></menuchoice +> fornisce tre opzioni chiamate <guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +>, e <guimenuitem +>debug</guimenuitem +> selezionare default <emphasis +>o</emphasis +> debug.</para> +<itemizedlist> +<listitem> +<para +>Quando il progetto è stato compilato con la modalità default, non verrà più compilato nelle modalità debug o optimized.</para> +</listitem> +<listitem> +<para +>Quando il progetto è stato compilato con la modalità debug o optimized non verrà più compilato con la modalità default.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-autoconf-problem" +>Errore <quote +>Wrong <command +>autoconf</command +> version</quote +> &etc;</term> +<listitem> +<para +>Ci sono diversi errori dovuti a versioni troppo vecchie di <application +>autoconf</application +> &etc; che impediscono a <command +>configure</command +> di funzionare correttamente. Avviare <command +>autoreconf</command +> nell'albero di directory dove risiedono i relativi file <filename +>configure.in</filename +>. Questo comando tenterà di aggiornare le informazioni nei file del &GNU; Build System. Vedere <command +>man autoreconf</command +> per ulteriori informazioni.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-others"> +<title +>Altri argomenti</title> +<varlistentry> +<term id="nutshell-others-files" +><link linkend="app-files" +>File di configurazione usati da &kdevelop;</link +></term> +<listitem> +<para +>Normalmente non si ci deve preoccupare di questi file, che si rendono utili solo se succedono inconvenienti durante la fase di setup.</para> +</listitem +> +</varlistentry> +</variablelist> + +</appendix +> <!-- nutshell --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/open-project.png b/tde-i18n-it/docs/kdevelop/kdevelop/open-project.png Binary files differnew file mode 100644 index 00000000000..5bd6b4f1d9c --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/open-project.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/open-recent-project.png b/tde-i18n-it/docs/kdevelop/kdevelop/open-recent-project.png Binary files differnew file mode 100644 index 00000000000..eee19dc0ba5 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/open-recent-project.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/plugin-tools.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/plugin-tools.docbook new file mode 100644 index 00000000000..560ff9378d3 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/plugin-tools.docbook @@ -0,0 +1,731 @@ +<appendix id="plugin-tools"> +<title +>Plugin</title> + +<indexterm zone="plugin-tools"> + <primary +>plugin</primary +></indexterm> + +<para +>&kdevelop; contiene un grande numero di piccoli strumenti che aiutano ad eseguire alcuni compiti. La maggior parte di essi è realizzata come plugin, che quando non sono necessari possono essere disabilitati.</para> +<para +>Se si sta cercando un funzionalità che dovrebbe essere presente ma no lo è, allora potrebbe essere stata implementata in un plugin che è disattivato. Ad esempio, nel menu file è presente la funzionalità Apertura rapida file, ma solo se è stata abilitato nella finestra di dialogo Opzioni Progetto. </para> + +<para +>Tecnicamente, i plugin sono costituiti dalla classe KDevPlugin definita nel file lib/interfaces/kdevplugin.h. Le informazioni seguenti sono tratte da un commento presente in quel file.</para> + +<para +>KDevPlugin è la classe base per tutti i plugin di KDevelop. Un plugin è un componente che viene caricato nella shell di KDevelop all'avvio o su richiesta. Un plugin ha un ambito che può essere: <itemizedlist> +<listitem +><simpara +>Core</simpara +></listitem> +<listitem +><simpara +>Globale</simpara +></listitem> +<listitem +><simpara +>Progetto</simpara +></listitem> +</itemizedlist> +</para> + +<para +>I plugin core sono plugin globali che forniscono alcune funzionalità fondamentali che non sono selezionabili dall'utente nella finestra di configurazione dei plugin.</para> + +<para +>I plugin globali richiedono solo la shell per essere caricati, non funzionano con l'interfaccia di KDevProject e/o non usano le informazioni del progetto. Ad esempio, il plugin uimode permette allo sviluppatore di selezionare l'interfaccia utente desiderata. </para> + +<para +>I plugin di progetto richiedono un progetto per essere caricati e sono normalmente caricati/scaricati assieme al progetto stesso. Se un plugin funziona con le informazioni relative ad un progetto allora è un plugin di progetto. Ad esempio, il gestore automake deve essere attivo solo quando viene caricato un progetto basato su automake. </para> + +<para +>Come detto precedentemente, i plugin core non possono essere disabilitati. I plugin globali possono essere abilitati/disabilitati in <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +></menuchoice +> selezionando <guibutton +>Plugin</guibutton +>. I plugin di progetto possono essere abilitati/disabilitati in <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni Progetto...</guimenuitem +></menuchoice +> in <guibutton +>Plugin</guibutton +>. A seconda della loro funzione, i plugin abilitati possono avere molti effetti su KDevelop, come aggiungere menu, voci di menu, pulsanti, ecc. </para> + +<para +>I plugin disabilitati non disturberanno i menu e non verranno caricati in memoria. </para> + + +<para +>Il seguente elenco di plugin è generato da un piccolo script (listplugins.sh) scritto da Volker Paul. Tutti i plugin possiedono un file .desktop contenente informazioni come il nome e i commenti. La eventuale scarsa utilità di quest'ultimi è da attribuire agli autori dei plugin.</para> +<para +>I plugin vengono raggruppati a seconda del loro ambito (core, globale, di progetto).</para> + +<para +>Ambito: Core</para> +<itemizedlist> +<listitem +><formalpara id="KDevAppWizard"> +<title +>Procedura guidata per le applicazioni</title> +<para +>Procedura guidata Nuovo Progetto</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDiff"> +<title +>Difference Viewer</title> +<para +>Visualizzatore differenze</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileCreate"> +<title +>FileCreate</title> +<para +>FileCreate</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFullScreen"> +<title +>FullScreen</title> +<para +>FullScreen</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTipOfDay"> +<title +>Tip of the Day</title> +<para +>Consiglio del giorno</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevUIChooser"> +<title +>Selezione dell'interfaccia utente</title> +<para +>Fornisce una finestra di dialogo per la selezione della modalità dell'interfaccia utente</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevVCSManager"> +<title +>VCSManager</title> +<para +>Gestore del sistema di controllo della versione </para +></formalpara +></listitem> +</itemizedlist> + +<para +>Ambito: Globale</para> +<itemizedlist> +<listitem +><formalpara id="KDevAbbrev"> +<title +>Espansione delle abbreviazioni</title> +<para +>Fornisce il supporto per le abbreviazioni personalizzabili - parole brevi che vengono espanse in strutture di codice usate frequentemente.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDocumentation"> +<title +>Documentazione</title> +<para +>Il plugin Documentation permette di navigare e di effettuare ricerche nella documentazione locale e online con il supporto per vari sistemi di documentazione.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevfilelist"> +<title +>ListaFile</title> +<para +>Fornisce un elenco di tutti i file attualmente aperti. (Comodo quando la barra delle schede non è abbastanza lunga).</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileSelector"> +<title +>Selettore File</title> +<para +>Una potente utility trasparente alla rete per sfogliare i file.</para +></formalpara +></listitem> +<listitem +><formalpara> +<title +>Inserimento e filtraggio da shell</title> +<para +>Permette di modificare il testo nell'editor usando strumenti a linea di comando. È presente nel menu Strumenti.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevGrepView"> +<title +>Interfaccia a Grep</title> +<para +>Integra le funzioni di ricerca e del programma grep in KDevelop - permette la ricerca veloce in file multipli usando pattern o espressioni regolari.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevKonsoleView"> +<title +>Konsole integrata</title> +<para +>Questo plugin fornisce una console integrata in KDevelop che permette un accesso facile e rapido alla linea di comando.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevOpenWith"> +<title +>Aggiunta al menu della voce "Apri con"</title> +<para +>Questo plugin fornisce varie alternative di apertura nei vari menu contestuali.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevPartExplorer"> +<title +>Strumento per l'esplorazione di componenti</title> +<para +>Uno strumento a interfaccia grafica per effettuare interrogazioni di tipo KTrader ai servizi registrati.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevRegexpTest"> +<title +>Convalidatore per espressioni regolari</title> +<para +>Strumento per scrivere e effettuare il test di espressioni regolari in base alle sintassi più comuni.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevReplace"> +<title +>Componente per sostituire</title> +<para +>Questo plugin è uno strumento interattivo per effettuare ricerche e sostituzioni. Le ricerche sono basate su stringhe o espressioni regolari e le sostituzioni da effettuare possono essere visualizzate in un'anteprima. Quando il plugin viene caricato, appare nel menu Modifica.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevscripting"> +<title +>Script</title> +<para +>Questo plugin fornisce le funzionalità di scripting basate su KScript</para +></formalpara +></listitem> +<listitem +><formalpara id="Code_Snippets"> +<title +>Frammenti di codice</title> +<para +>Questo plugin permette di memorizzare i frammenti di codice e aggiungerli al proprio codice</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTextTools"> +<title +>Struttura testo</title> +<para +>Fornisce una visualizzazione strutturata e la navigazione nei file HTML e TEX.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTools"> +<title +>Aggiunte al menu Strumenti</title> +<para +>Questo plugin fornisce un sistema semplice per aggiungere applicazioni esterne al menu strumenti e alla barra degli strumenti.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevvalgrind"> +<title +>Interfaccia a Valgrind</title> +<para +>Valgrind è uno strumento che aiuta a trovare i problemi di gestione della memoria nei programmi. http://developer.kde.org/~sewardj/</para +></formalpara +></listitem> +</itemizedlist> + +<para +>Ambito: Progetti</para> +<itemizedlist> +<listitem +><formalpara id="KDevannotation"> +<title +>Plugin annotation</title> +<para +>Descrizione di annotation</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevAStyle"> +<title +>Formattatore del codice sorgente</title> +<para +>Plugin per la formattazione del codice sorgente in base a specifiche regole. Quando viene caricato si trova nel menu Strumenti.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevBookmarks"> +<title +>Segnalibri</title> +<para +>Questo plugin permette la navigazione tra i segnalibri e li memorizza tra una sessione e l'altra.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevClassView"> +<title +>Visualizza Classe</title> +<para +>Questo plugin fornisce una visuale grafica di tutte le classi del progetto con i loro metodi e attributi, assieme ad un sistema per navigare direttamente nel codice sorgente.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevcopyto"> +<title +>CopyTo</title> +<para +>Semplice plugin per il caricamento dei file (upload). Effettua la copia dei file attraverso qualunque protocollo supportato da KIO.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevCTags2"> +<title +>Interfaccia a CTags</title> +<para +>CTags è uno strumento per la navigazione nel codice sorgente che supporta molti linguaggi. Quando è caricato fornisce un menu contestuale per trovare le definizioni/dichiarazioni e una finestra di dialogo per le interrogazioni (query). http://ctags.sourceforge.net/</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevdistpart"> +<title +>Supporto finale per la creazione dei pacchetti</title> +<para +>Aiuta nella costruzione e pubblicazione del progetto finale. Per il momento è supportato solo il tipo di pacchetto RPM.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDoxygen"> +<title +>Supporto Doxygen</title> +<para +>Il plugin doxygen consente di specificare e controllare la generazione della documentazione per un progetto, in base al contenuto del codice sorgente. È necessario avere installato doxygen: per ulteriori informazioni vedere http://www.doxygen.org.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevQuickOpen"> +<title +>Apertura rapida</title> +<para +>Permette di trovare e aprire in modo efficiente i file, le classi e i metodi in un progetto di grosse dimensioni. Quando viene caricato si trova nei menu File e Strumenti.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevSecurity"> +<title +>Security Checker</title> +<para +>Controlla la sicurezza del codice</para +></formalpara +></listitem> +</itemizedlist> +<para +>Per l'elenco dei plugin generato è tutto.</para> + + +<table id="table-project-parts"> +<title +>Plugin per la gestione dei progetti in &kdevelop;</title> +<tgroup cols="2" +><tbody> +<row> + <entry +>antproject</entry> + <entry +>Gestore di progetto ANT (per applicazioni &Java;)</entry> +</row> +<row> + <entry +>autoproject</entry> + <entry +>Gestore di progetto Automake</entry> +</row> +<row> + <entry +>customproject</entry> + <entry +>Gestore di progetto personalizzato</entry> +</row> +<row> + <entry +>trollproject</entry> + <entry +>Gestore di progetto basato su QMake</entry> +</row> +</tbody +></tgroup> +</table> +<para +>I precedenti plugin sono attualmente (maggio 2005) vuoti. È possibile che il supporto per la gestione dei progetti venga in futuro implementato sotto forma di plugin.</para> + + +<table> +<title +>Plugin per il supporto dei linguaggi in &kdevelop;</title> +<tgroup cols="2"> +<tbody> +<row +><entry +>cppsupport</entry +><entry +>Supporto per C/C++</entry +></row> +<row +><entry +>fortransupport</entry +><entry +>Supporto per Fortran</entry +></row> +<row +><entry +>javasupport</entry +><entry +>Supporto per &Java;</entry +></row> +<row +><entry +>perlsupport</entry +><entry +>Supporto per Perl</entry +></row> +<row +><entry +>phpsupport</entry +><entry +>Supporto per PHP</entry +></row> +<row +><entry +>pythonsupport</entry +><entry +>Supporto per Phyton</entry +></row> +</tbody +></tgroup> +</table> + + +<para +>Di seguito verranno esaminati alcuni tra questi plugin.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Il plugin <command +>abbrev</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>abbrev</command +></primary +></indexterm> + +<para +>Questo plugin espande le abbreviazioni in frammenti di codice molto usati. Si attiva premendo <keycombo +><keycap +>Ctrl</keycap +> <keycap +>Spazio</keycap +></keycombo +>. Per esempio, se si inserisce nell'editor <literal +>"ife"</literal +> in un file C++ e si preme <keycombo +><keycap +>Ctrl</keycap +><keycap +>Spazio</keycap +></keycombo +>, si ottiene un modello di codice <literal +>if-else</literal +> e si risparmia qualche battitura di tasti. L'insieme delle abbreviazioni supportate dipende dal linguaggio di programmazione del file che viene modificato. Per esempio, per PHP si sarà ovviamente interessati ad altri modelli di codice rispetto a quelli di &Java;. </para> +</formalpara> + +<para +>L'insieme dei modelli di codice è configurabile. Se il plugin è abilitato, si possono vedere quelli disponibili in <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +></menuchoice +> in <guibutton +>Abbreviazioni</guibutton +>. </para> +</listitem> + +<listitem> +<formalpara id="KDevFilter"> +<title +>Il plugin <command +>filter</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>filter</command +></primary +></indexterm> + +<para +>Questo plugin fornisce due funzioni. Se si seleziona <menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Esegui comando...</guimenuitem +></menuchoice +>, si può inserire un comando di shell. L'output del comando è inserito nel buffer dell'editor quando si preme il pulsante <guibutton +>Avvia</guibutton +>. </para> +</formalpara> + +<para +>La funzione relativa è disponibile in <menuchoice +><guimenu +>Strumenti</guimenu +><guimenuitem +>Selezione filtro tramite comando...</guimenuitem +></menuchoice +>. Per usarla, si deve selezionare un'area di testo nell'editor. Se si inserisce un comando e si preme il pulsante <guibutton +>Avvia</guibutton +> esso verrà avviato e verrà usata la selezione come input. Lo standard output del comando viene quindi inserito nell'editor. </para> + +<para +>Ad esempio, scrivendo della documentazione si deve fare spesso riferimento alle voci dei menu. Per farlo correttamente, considerando ad es. il comando Copia del menu Modifica, si deve scrivere: <programlisting +><menuchoice><guimenu>Modifica</guimenu><guimenuitem>Copia</guimenuitem></menuchoice></programlisting +>. Siccome è piuttosto complesso, si può invece scrivere semplicemente "Modifica - Copia" e lasciare che sia il computer ad aggiungere i tag in questo modo. Si scrive un piccolo script per la shell chiamato mef e lo si memorizza ad es. nella directory bin di home: <programlisting +>sed s/"^\(.*\) - \(.*\)\$"/"<menuchoice><guimenu>\1<\/guimenu><guimenuitem>\2<\/guimenuitem><\/menuchoice>"/</programlisting +> Non si deve dimenticare di renderlo eseguibile. Ora, nel file sorgente .docbook della documentazione si può scrivere "Modifica - Copia", selezionare questo testo, scegliere <menuchoice +><guimenu +>Strumenti</guimenu +><guimenuitem +>Selezione filtro tramite comando...</guimenuitem +></menuchoice +> e chiamare il file ~/bin/mef. Istantaneamente il testo "Modifica - Copia" verrà sostituito dal testo <programlisting +><menuchoice><guimenu>Modifica</guimenu><guimenuitem>Copia</guimenuitem></menuchoice></programlisting> +</para> + + +</listitem> + +<listitem> +<formalpara> +<title +>Il plugin &doxygen;</title> +<indexterm zone="plugin-tools" +><primary +>&doxygen;</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>strumento per la documentazione</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>documentazione API</primary +></indexterm> + +<para +>Questo plugin aiuta ad utilizzare lo strumento per la documentazione API &doxygen; (<ulink url="http://www.doxygen.org" +></ulink +>). Per generare la documentazione API del proprio progetto, in base alla configurazione contenuta nel file <filename +>Doxyfile</filename +> presente nella directory del progetto, selezionare <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Esegui doxygen</guimenuitem +></menuchoice +>. </para> +</formalpara> + +<para +>Inoltre, si può configurare &doxygen; nella finestra di dialogo <menuchoice +><guimenu +>Progetto</guimenu +> <guimenuitem +>Opzioni progetto...</guimenuitem +></menuchoice +>, che è molto simile allo strumento &doxywizard;. </para> +</listitem> + +<listitem> +<formalpara> +<title +>Il plugin &ctags;</title> +<indexterm zone="plugin-tools" +><primary +>&ctags;</primary +></indexterm> + +<para +>Anche se il browser per le classi fornisce una visione approfondita dei simboli e delle classi del progetto, si può utilizzare anche lo strumento ctags, che supporta molti più linguaggi. </para> +</formalpara> + +<para +>Il plugin viene attivato in <menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>CTags...</guimenuitem +></menuchoice +>. Al primo avvio verrà chiesto di generare un database di ricerca. Quando si accetta, il programma &ctags; verrà avviato e creerà un file chiamato <filename +>tags</filename +> nella directory del progetto. È un file di testo contenente tutti i simboli dei file sorgenti. </para> + +<para +>Si possono effettuare ricerche nel database dei simboli in due modi: quando è marcata la casella <guilabel +>Regular expression match</guilabel +>, il testo inserito verrà interpretato come una espressione regolare (tipo POSIX) e confrontata con i simboli esistenti. Ad esempio, il testo <literal +>.*Widget</literal +> corrisponde a tutti i simboli che terminano con <literal +>Widget</literal +>. Se la casella non è marcata, la ricerca sarà effettuata letteralmente. </para> + +<para +>Quando viene fatta una ricerca si riceverà una lista di simboli corrispondenti accompagnati dal numero di linea del punto dove sono definiti. Facendo clic sulla lista si passerà al punto relativo. </para> + +<para +>&ctags; per alcuni linguaggi distingue i vari tipi di simboli. Ad esempio, Python ha classi e funzioni: si può decidere di cercare solo le classi selezionando il tipo relativo nella finestra di dialogo. </para> + +<para +>Normalmente il database dei simboli non viene aggiornato quando si modificano i file sorgente. Di conseguenza dopo un po' i numeri di linea non saranno più corretti e mancheranno le nuove classi e funzioni. Perciò si dovrebbe aggiornare il file <filename +>tags</filename +> ad intervalli regolari premendo il pulsante <guibutton +>Rigenerare</guibutton +>. </para> +</listitem> + +<listitem> +<formalpara> +<title +>Il plugin <command +>astyle</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>astyle</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +><application +>Artistic Style</application +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>indentazione</primary +></indexterm> + +<para +>Il plugin Astyle formatta il codice sorgente in base a specifiche regole. </para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Il plugin <command +>regexptest</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>regexptest</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>debug</primary +><secondary +>espressioni regolari</secondary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>espressioni regolari</primary +><secondary +>debug</secondary +></indexterm> + +<para +>La progettazione con le espressioni regolari può diventare un lavoro pesante. Spesso al primo tentativo l'espressione corrisponde a troppe stringhe. In particolare, quando si lavora con un linguaggio compilato, i tempi di debug di una espressione regolare possono essere scomodi. Il plugin regexptest permette di esplorare direttamente i cambiamenti in una espressione regolare. Viene attivato con <menuchoice +><guimenu +>Strumenti</guimenu +> <guimenuitem +>Debug dell'espressione regolare</guimenuitem +></menuchoice +>. </para> +</formalpara> + +<para +>Nelle caselle si può scegliere il tipo di motore di espressioni regolari da usare. Attualmente sono supportati il tipo definito dallo standard POSIX, usato dal programma &grep;, e la sintassi POSIX estesa usata dal programma &egrep;. </para> + +<para +>Quando si inserisce un'espressione si riceverà un feedback immediato su ogni errore di sintassi. Inserendo un testo in <guilabel +>Test stringa</guilabel +>, si può vedere se l'espressione corrisponde alla stringa. In particolare, se l'espressione regolare include gruppi come <literal +>([a-z])</literal +>, viene visualizzato il contenuto del sottogruppo corrispondente in un elenco. </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-it/docs/kdevelop/kdevelop/problem-report-all-todos.png b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-all-todos.png Binary files differnew file mode 100644 index 00000000000..798944b610c --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-all-todos.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-marks.png b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-marks.png Binary files differnew file mode 100644 index 00000000000..85ea8b6a23f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-marks.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-todo.png b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-todo.png Binary files differnew file mode 100644 index 00000000000..a1510e1779d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/problem-report-todo.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/project-advanced.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/project-advanced.docbook new file mode 100644 index 00000000000..876630f97fd --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/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 +>Gestione avanzata dei progetti</title> + +<sect1 id="oldprojects"> +<title +>Caricare i progetti</title> + +<sect2 id="loading-recent-project"> +<title +>Caricare un progetto recente</title> + +<para +>(... da scrivere ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="open-recent-project.png" format="PNG"/> + </imageobject> + <caption +><para +>Come aprire un progetto recente </para +></caption> + </mediaobject> +</screenshot> + + +</sect2 +> <!-- loading-recent-project --> + +<sect2 id="loading-project"> +<title +>Caricare un progetto esistente</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- loading-project --> + +<sect2 id="converting-projects"> +<title +>Convertire i file di progetto delle vecchie versioni di KDevelop</title> + +<para +>&kdevelop; permette di aprire i file di progetto della versione 2.x di KDevelop e convertirli in file di &kdevelop;. Aprire la finestra <guimenuitem +>Apri progetto...</guimenuitem +> e selezionare nel campo <guilabel +>Filtro:</guilabel +> <guilabel +>File progetto KDevelop 2</guilabel +>. Selezionare il file da aprire. Il progetto verrà convertito e salvato come un <guilabel +>File progetto &kdevelop;</guilabel +>. </para> + +</sect2 +> <!-- converting-projects --> + +<sect2 id="importing-projects"> +<title +>Importare un progetto esistente</title> + +<para +>Per importare un progetto già esistente in &kdevelop; selezionare <guimenuitem +>Importa progetto esistente...</guimenuitem +> dal menu <guimenu +>Progetto</guimenu +>. Verrà visualizzata la seguente finestra di dialogo. </para> + +<figure id="screenshot-importdirectory" float="1"> +<title +>La finestra di dialogo Importa Progetto</title> +<mediaobject> +<imageobject +><imagedata fileref="importdirectory.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- importing-projects --> + +</sect1 +> <!-- oldprojects --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="project-options"> +<title +>Configurare il progetto — le opzioni del progetto</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- project-options --> + +</chapter +> <!-- projects-advanced --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/project-management.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/project-management.docbook new file mode 100644 index 00000000000..d9bcfb1d808 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/project-management.docbook @@ -0,0 +1,1291 @@ +<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 +>Compilazione e gestione dei progetti</title> + +<para +>Questo capitolo si occupa solo di progetti compilati, come C++, Java o Fortran. I progetti per linguaggi di scripting come Python e Php funzionano in modo molto diverso. </para> + +<para +>Si troveranno informazioni sui seguenti argomenti:</para> +<itemizedlist> + <listitem +><para +><link linkend="automake-manager-summary" +>Sommario sul gestore Automake</link +> contenente una panoramica sul gestore Automake, </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation" +>Operazioni con il gestore Automake</link +> dove sono descritte le operazioni principali per lavorare con il gestore Automake, </para +></listitem> +</itemizedlist> + +<sect1 id="automake-manager-summary"> +<title +>Sommario sul gestore Automake</title> + +<para +>Nel capitolo <link linkend="unixdev-buildsystems" +>Sistemi di compilazione</link +> è stata esposta una panoramica approssimativa sui sistemi di compilazione usati comunemente sui sistemi &UNIX;. Nelle sezioni seguenti verranno esaminati più in dettaglio. </para> +<para +>È presente una certa confusione su come chiamare questi sistemi. &GNU; parla di <quote +>sistemi di compilazione (build systems)</quote +> quando descrive Automake, Autoconf e Libtool. QMake si descrive come <quote +>uno strumento per scrivere Makefile per diversi compilatori e piattaforme</quote +>. In &kde; è spesso usato il termine <quote +>sistemi di gestione di progetti (project management systems)</quote +>. Si userà questo permine in senso più ampio per descrivere l'ambiente incorporato di &kdevelop; che è usato per organizzare e compilare i progetti. Nel contesto di questa sezione, comunque si parlerà principalmente di <quote +>sistemi di compilazione automatici</quote +>. </para> + +<sect2 id="automake-manager-summary-buildsys"> +<title +>Il necessario per un sistema di compilazione automatico</title> + +<para +>Se si ha un semplice programma <quote +>Hello World</quote +> scritto in C, lo si può compilare ed effettuare il linking usando &gcc; <parameter +>-o hello hello.c</parameter +> e può essere eseguito usando il comando <command +>./hello</command +>, perciò non è addirittura necessario un <filename +>Makefile</filename +>. </para> +<para +>Se si ha un'applicazione C con diversi moduli e file header che viene eseguita solo sulla propria macchina (&ie; un'applicazione "interna"), servirà solo un <filename +>Makefile</filename +> abbastanza semplice da scrivere a mano (per maggiori informazioni consultare <userinput +>info make</userinput +>). </para> +<para +>Le complicazioni iniziano quando: </para> +<itemizedlist> + <listitem +><para +>Il codice sorgente, la documentazione, la grafica, i suoni, le traduzioni, i file di dati, ecc. sono presenti in più di una directory, </para +></listitem> + <listitem +><para +>Si ha una gerarchia di directory e sottodirectory, </para +></listitem> + <listitem +><para +>Si stanno usando librerie che non fanno parte dell'insieme tradizionale presente in &UNIX;, come le librerie &Qt; o le librerie &kde;, </para +></listitem> + <listitem +><para +>Si sta usando un pre-processore per generare parte del codice sorgente, come il pre-compilatore MOC di Qt, </para +></listitem> + <listitem +><para +>Si vuole distribuire l'applicazione a livello mondiale, a persone che potrebbero non avere lo stesso sistema &UNIX;/&Linux; o lo stesso software e hardware, </para +></listitem> + <listitem +><para +>Si necessita di un sistema di installazione e disinstallazione, </para +></listitem> + <listitem +><para +>Si vuole far sì che l'applicazione faccia parte di &kde; Desktop. </para +></listitem> +</itemizedlist> + +<para +>Se si è in una o tutte tra queste situazioni, probabilmente sarà necessario un <emphasis +>sistema di compilazione</emphasis +>. Nell'esempio sopra è stato usato &gcc; per compilare il programma <quote +>Hello World</quote +>, ma non tutti i compilatori C si chiamano <quote +>&gcc;</quote +>. Quindi se si distribuisce l'applicazione a qualcuno che sta usando un altro compilatore C, il Makefile deve usare in qualche modo il nome del compilatore di quella persona, altrimenti l'applicazione non compilerà — e questo è solo un semplice esempio di quello che può andare storto. </para> +<para +>Un sistema di compilazione nasconderà queste differenze. </para> +<itemizedlist> + <listitem +><para +>Controllerà che le librerie necessarie siano presenti su ogni macchina di destinazione, </para +></listitem> + <listitem +><para +>scansionerà automaticamente tutte le directory dell'applicazione per cercare i file da pre-processare, compilare o installare e </para +></listitem> + <listitem +><para +>installerà i componenti dell'applicazione nelle directory di destinazione corrette, assicurandosi che </para +></listitem> + <listitem +><para +>le directory vengano create come richiesto sulla macchina di destinazione. </para +></listitem> +</itemizedlist> + +<para +>In poche parole, un sistema di compilazione offre un metodo sicuro per compilare e installare correttamente l'applicazione sulla macchina di destinazione. Come è stato mostrato prima nella panoramica <link linkend="makesystems" +>Sistemi di gestione dei progetti</link +>, &kdevelop; fornisce tre sistemi di compilazione automatici e le opzioni per creare i propri Makefile. In breve (fare clic sul nome del progetto per ricevere ulteriori informazioni): </para> +<itemizedlist> + <listitem +><para +>I <link linkend="automake-project" +>Progetti Automake</link +> che usano gli strumenti standard di sviluppo &GNU;. </para +></listitem> + <listitem +><para +>I <link linkend="qmake-project" +>Progetti QMake</link +> che usano il gestore di progetti Qmake di Trolltech. </para +></listitem> + <listitem +><para +>I <link linkend="ant-project" +>Progetti ANT</link +> che usano il gestore di progetti ANT di Apache per lo sviluppo con &Java;. </para +></listitem> + <listitem +><para +>I <link linkend="custom-project" +>Progetti personalizzati</link +> che richiedono che si gestiscano i propri <filename +>Makefile</filename +>. </para +></listitem> +</itemizedlist> + +<important> +<para +>Quando si crea un progetto si deve scegliere una di queste quattro alternative e <emphasis +>questa scelta è difficile da cambiare in seguito</emphasis +>, quindi ci si dovrebbe pensare un momento prima di iniziare. </para> +</important> + +</sect2 +> <!-- automake-manager-summary-buildsys --> + +<sect2 id="automake-references"> +<title +>Tutorial su Autoconf/Automake/Libtool</title> +<para +>Esistono diversi tutorial disponibili sul sistema di compilazione &GNU; usato dal Gestore Automake (<command +>Autoconf</command +>, <command +>Automake</command +> e <command +>Libtool</command +>). </para> +<itemizedlist> + <listitem +><para +>Un breve <ulink url="http://www.kdevelop.org/index.html?filename=tutorial_autoconf.html" +>tutorial su autoconf</ulink +> scritto da Christopher W. Curtis è disponibile sulla home page di KDevelop. Esso illustra in pochi passi le istruzioni su come modificare un <filename +>Makefile</filename +>. </para +></listitem> + <listitem +><para +>Un tutorial più dettagliato può essere trovato qui: <ulink url="http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual_toc.html" +><quote +>Sviluppo di software con GNU</quote +></ulink +>. </para +></listitem> + <listitem +><para +>E questo è il famoso <ulink url="http://sources.redhat.com/autobook" +><quote +>Goat Book</quote +></ulink +> inititolato <quote +>Autoconf, Automake and Libtool</quote +>. È un'introduzione concisa e facile da leggere ai principali aspetti degli Autotool &GNU;. </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-references --> + +<sect2 id="automake-manager-basics"> +<title +>Cosa fa il Gestore Automake?</title> + +<para +>Quando si crea un <guilabel +>Nuovo progetto</guilabel +> che usa il sistema di compilazione &GNU;, come <menuchoice +><guimenuitem +>C++</guimenuitem +> <guimenuitem +>KDE</guimenuitem +> <guimenuitem +>Application Framework</guimenuitem +></menuchoice +>, la <link linkend="applicationwizard" +>procedura guidata</link +> imposta i primi file <filename +>Makefile.am</filename +>. </para> +<para +>Ci sarà un file <filename +>Makefile.am</filename +> in ogni directory del progetto, che conterrà le istruzioni per compilare, costruire e installare i file, assieme ad un riferimento ad eventuali sottodirectory che avranno a loro volta un file <filename +>Makefile.am</filename +> e altri file da compilare, costruire ed installare. </para> + +<note +><para +>La directory del progetto e i file sorgente possono essere strutturati a qualunque livello di profondità, oppure si può preferire una struttura piatta con tutte le sottodirectory al livello più alto. </para +></note> + +<para +>Lo scopo del sistema di compilazione &GNU; consiste nel produrre strutture di file sorgenti che possano essere compilati e installati su ogni sistema &UNIX; o &Linux; usando questi semplici comandi: </para> + +<screen +>./configure +make +make install # Normalmente come "root". +</screen> + +<para +>e possano essere disinstallati dal comando <command +>make uninstall</command +> (normalmente come utente root). </para> + +<para +>Come funziona? <command +>configure</command +> è uno script che <itemizedlist> + <listitem +><para +>risolve le problematiche relative ai dettagli del sistema in cui si trova, come quale compilatore e librerie usare e dove sono localizzate </para +></listitem> + <listitem +><para +>crea file <filename +>Makefile</filename +> ricorsivi completando le sostituzioni nei corrispondenti file <filename +>Makefile.in</filename +>. </para +></listitem> +</itemizedlist> +</para> +<para +>I <filename +>Makefile.in</filename +> sono file di <quote +>input</quote +> — modelli che forniscono le informazioni di base per i <filename +>Makefile</filename +> che saranno prodotti a partire da essi utilizzando alcune informazioni relative al sistema. Essi sono generati dall'utility <command +>Automake</command +> a partire dai file <filename +>Makefile.am</filename +>. </para> +<para +>Il processo che parte dai <filename +>Makefile.am</filename +> (<filename +>.am</filename +> significa file modello di <quote +>Automake</quote +>) fino ad arrivare ai file <filename +>Makefile</filename +> viene gestito automaticamente dal &promanag; di &kdevelop;, usando l'utility <command +>Autoconf</command +>, le macro <command +>M4</command +> e altre cose arcane in cui non è necessario addentrarsi. </para> +<para +>In questo modo, quando viene avviato <command +>make</command +>, esso ottiene automaticamente i componenti corretti dal sistema, come compilatori e librerie. Analogamente, <command +>make install</command +> installa i componenti dell'applicazione, come i file eseguibili, la documentazione e i file di dati nei posti corretti per quell'ambiente. </para> + +<para +>Se si distribuisce l'applicazione come <quote +>tarball</quote +> (un singolo file compresso che può essere creato da &kdevelop;), saranno inclusi i file <filename +>Makefile.in</filename +> e il file script <filename +>configure</filename +>, in modo che il destinatario potrà compilare e installare l'applicazione senza possedere sul proprio computer <command +>Automake</command +>, <command +>Autoconf</command +> o &kdevelop;. Vengono inclusi anche i file <filename +>Makefile.am</filename +>, nel caso in cui il destinatario debba fare qualche modifica al codice sorgente. </para> +<note +><para +>Le regole sono piuttosto diverse se si distribuisce attraverso un repository di codice sorgente come il &cvs; di &kde;. </para +></note> + +</sect2 +> <!-- automake-manager-basics --> + +<sect2 id="automake-manager-basics-summary"> +<title +>Riassunto delle funzioni del Gestore Automake</title> + +<itemizedlist> + <listitem +><para +>Genera i file <filename +>Makefile.am</filename +> nelle sottodirectory conosciute come <quote +>sottoprogetti</quote +>. </para +></listitem> + <listitem +><para +>Aggiorna i file <filename +>Makefile.am</filename +> quando cambia la struttura del progetto. </para +></listitem> + <listitem +><para +>Aggiorna i file <filename +>Makefile.am</filename +> quando vengono aggiunti o rimossi dei file dal progetto. </para +></listitem> + <listitem +><para +>Interpreta le definizioni sulla compilazione e installazione dei vari file e modifica adeguatamente i file <filename +>Makefile.am</filename +>. </para +></listitem> + <listitem +><para +>Accetta i parametri usati nella compilazione o installazione (ad es. i nomi di libreria) e si assicura che siano usati nelle fasi di compilazione. </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-manager-basics-summary --> + +<sect2 id="automake-file-contents"> +<title +>Contenuti dei file Automake</title> + +<para +>Le linee di un file <filename +>Makefile.am</filename +> contengono nomi di variabile seguiti dal segno di uguale e una lista di file o parametri. Le <quote +>variabili</quote +> hanno nomi costituiti da due parti, come <varname +>bin_PROGRAMS</varname +>, <varname +>myapp_SOURCES</varname +> o <varname +>kdelnk_DATA</varname +>. La seconda parte è detta <emphasis +>primaria</emphasis +> e rappresenta qualcosa da compilare o installare. La prima parte è chiamata il <emphasis +>prefisso</emphasis +> e rappresenta: </para> +<itemizedlist> + <listitem +><para +>Una <emphasis +>directory</emphasis +> nella quale effettuare l'installazione (ad es. <filename +>bin</filename +>), </para +></listitem> + <listitem +><para +>Un <emphasis +>qualificatore</emphasis +> per la parte primaria (ad es. <varname +>myapp</varname +> per <varname +>SOURCES</varname +>, indicando che i file sorgente elencati dopo <varname +>myapp_SOURCES</varname +> finiranno nella compilazione di <filename +>myapp</filename +>), </para +></listitem> + <listitem +><para +>Lo speciale <emphasis +>prefisso</emphasis +> <varname +>noinst</varname +> (abbreviazione per <quote +>nessuna installazione</quote +>), normalmente usato per elencare i file header (<filename +>.h</filename +>), </para +></listitem> + <listitem +><para +>O lo speciale prefisso <varname +>EXTRA</varname +>, per tutte le cose <emphasis +>dipendenti dalla configurazione</emphasis +>. </para +></listitem> +</itemizedlist> + +<para +>Per ulteriori informazioni sui file <command +>Automake</command +> e <filename +>Makefile.am</filename +>, controllare <userinput +>info Automake</userinput +>. </para> +<para +>Fondamentalmente il gestore Automake crea e aggiorna i nomi delle variabili e le liste di file o parametri. Vedere il seguente esempio di un <filename +>Makefile.am</filename +> per una applicazione tipica chiamata <filename +>myapp</filename +>. </para> + +<screen +>## Makefile.am for myapp + +# questo è il programma che viene installato. Il suo nome è usato per +# tutte le altre variabili del Makefile.am +bin_PROGRAMS = myapp + +# impostare i percorsi di include per X, qt e KDE +INCLUDES = $(all_includes) + +# percorso di ricerca per le librerie. +myapp_LDFLAGS = $(KDE_RPATH) $(all_libraries) + +# le librerie con cui verrà fatto il link. +myapp_LDADD = $(LIB_KFILE) $(LIB_KDEPRINT) + +# quali file sorgente dovrebbero essere compilati per myapp +myapp_SOURCES = main.cpp myapp.cpp myappview.cpp + +# questi sono gli header per il proprio progetto +noinst_HEADERS = myapp.h myappview.h + +# permetti ad automoc di gestire tutti i metafile (moc) +METASOURCES = AUTO + +KDE_ICON = myapp + +# qui è dove andrà il file kdelnk +kdelnkdir = $(kde_appsdir)/Utilities +kdelnk_DATA = myapp.desktop + +# qui è dove vanno i file risorsa XML-GUI +rcdir = $(kde_datadir)/myapp +rc_DATA = myappui.rc + +AM_CXXFLAGS = -DMY_C++_PREPROCESSOR_OPTION +</screen> + +<para +>Come si può vedere, molti degli elementi a destra sono simboli del tipo <varname +>$(xxxx)</varname +>. Queste sono <emphasis +>variabili d'ambiente</emphasis +> che sono definite nell'attuale ambiente &kde; e vengono sostituite con i veri valori quando <command +>./configure</command +> genera i file <filename +>Makefile</filename +> finali nel computer destinatario. </para> + +<para +>Inoltre, è una buona idea avviare il comando <command +>./configure --help</command +> che visualizzerà tutte le opzioni che si possono cambiare nel momento della compilazione. In particolare, il comando: <screen> +./configure --prefix=/dove/si/desidera +</screen +> eseguirà l'intera installazione in una struttura di directory a scelta, cambiando il valore della variabile interna <varname +>$(prefix)</varname +> in <filename class="directory" +>/dove/si/desidera</filename +>. </para> + +</sect2 +> <!-- automake-file-contents --> + +</sect1 +> <!-- automake-manager-summary --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="automake-manager-operation"> +<title +>Operazioni del gestore Automake</title> + +<para +>In questo capitolo si troverà una descrizione essenziale degli elementi del gestore Automake e sul loro uso. Questo comprende: <itemizedlist> + <listitem +><para +><link linkend="automake-manager-operation-window" +>La finestra del gestore Automake</link +> descrive la struttura di base della finestra principale del gestore Automake. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-survey-window" +>La vista panoramica</link +> descrive gli elementi della parte superiore. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-detail-window" +>La vista dettagli</link +> descrive gli elementi della parte inferiore. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-navigate" +>Navigare nel gestore Automake</link +> elenca le operazioni fondamentali che possono essere compiute con il gestore Automake. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-popups" +>Menu a comparsa del gestore Automake</link +> descrive i menu che appaiono quando si seleziona una azione nel gestore Automake. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-manager-operation-window"> +<title +>La finestra del gestore Automake</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 +>Il gestore Automake funziona in una finestra divisa in due. La parte superiore è chiamata <emphasis +>panoramica</emphasis +> e la parte inferiore è chiamata <emphasis +>dettagli</emphasis +>. Tra esse c'è una barra sottile che può essere trascinata con il mouse per modificare la dimensione delle due finestre. Nella modalità IDEAl si può trascinare anche il lato della finestra in modo da modificarne la larghezza. </para +></listitem> + <listitem +><para +>Nella parte alta di entrambe le viste c'è una <emphasis +>barra degli strumenti</emphasis +>, nella quale i pulsanti vengono attivati quando si seleziona un elemento in quella visuale. Questo fornisce un modo per accedere alle azioni disponibili per quell'elemento. Gli altri sono menu contestuali che appaiono con il clic del tasto destro del mouse, come verrà spiegato dopo. </para +></listitem> + <listitem +><para +>Nella modalità IDEAl sono presenti due piccoli pulsanti in più nella parte sinistra della barra del titolo della finestra del gestore Automake — un freccia a destra a forma di triangolo e un pulsante con un punto. Il pulsante con la freccia viene usato per <emphasis +>chiudere la finestra</emphasis +>. Il pulsante con il punto invece <emphasis +>manterrà la finestra aperta</emphasis +> anche se viene selezionata un'altra finestra di &kdevelop; (Altrimenti la finestra del gestore Automake si chiuderà automaticamente quando un'altra finestra riceve il focus). </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect2 +> <!-- automake-manager-operation-window --> + +<sect2 id="automake-manager-operation-survey-window"> +<title +>La finestra panoramica</title> + +<para +>La finestra panoramica contiene una lista ad albero di tutte le directory del progetto che contengono file di programma, documentazione o dati. Ogni directory contiene un file <filename +>Makefile.am</filename +> e viene riconosciuta dal gestore Automake come un <emphasis +>sottoprogetto</emphasis +>. Ci sono tre sottoprogetti tipici in un progetto di tipo &kde;, come mostrato nella illustrazione precedente: </para> + +<itemizedlist> + <listitem +><para +><filename +>src</filename +> – file sorgente dell'applicazione. </para +></listitem> + <listitem +><para +><filename +>doc</filename +> – manuale utente o guida, </para +></listitem> + <listitem +><para +><filename +>po</filename +> – estratti delle stringhe dei file sorgente che devono essere tradotte in altri linguaggi umani (⪚ titoli delle finestre, nomi di menu, etichette dei pulsanti, testi delle finestre di dialogo e messaggi di vario tipo). </para +></listitem> +</itemizedlist> + +<para +>Notare che il sottoprogetto <filename +>doc</filename +> ha sempre un sottoprogetto <filename +>en</filename +>, che si può vedere se si fa clic sul simbolo <symbol +>+</symbol +> vicino alla parola <filename +>doc</filename +>. Questo è dovuto al fatto che il linguaggio di base di tutta la documentazione &kde; è l'inglese (en). Se la propria applicazione farà parte di &kde;, le squadre di traduzione potranno tradurre la documentazione dall'inglese in altri linguaggi e queste le traduzioni saranno inserite in altri sottoprogetti, come <filename +>de</filename +> (Tedesco) o <filename +>fr</filename +> (Francese). Anche le stringhe nel sottoprogetto <filename +>po</filename +> potranno essere tradotte e memorizzate, consentendo quindi all'applicazione di essere utilizzata dalle persone che non conoscono l'inglese. </para> + +<note +><para +>I sottoprogetti <filename +>doc</filename +> e <filename +>po</filename +> servono a diversi scopi: <filename +>doc</filename +> contiene la <emphasis +>documentazione</emphasis +> come il manuale utente, mentre <filename +>po</filename +> contiene le stringhe di testo traducibili dell'<emphasis +>interfaccia utente</emphasis +> che è integrata nel codice sorgente dell'applicazione. </para +></note> + +<para +>La finestra panoramica funziona — tra le altre cose — come strumento di navigazione. Se si seleziona un sottoprogetto nella finestra panoramica verranno visualizzati i dettagli corrispondenti nella finestra dettagli. </para> + +</sect2 +> <!-- automake-manager-operation-survey-window --> + +<sect2 id="automake-manager-operation-detail-window"> +<title +>la finestra dettagli</title> + +<para +>Questa finestra contiene una lista ad albero di tutti i file del sottoprogetto selezionato nella finestra panoramica, così come le regole di compilazione e installazione del sottoprogetto. Quindi le due visuali assieme forniscono un accesso a tutti i componenti dell'applicazione e a tutte le informazioni per compilarla e installarla. </para> + +<sect3> +<title +>Target</title> + +<para +>La lista ad albero nella finestra dettagli ha due livelli. Il livello principale è composto dai cosiddetti <emphasis +>target</emphasis +> e il sottolivello contiene la lista dei file che andranno a costruire quel target. </para> + +<para +>Il concetto di target per il gestore Automake differisce da quello dei target dei file <filename +>Makefile</filename +>. In breve:</para> +<itemizedlist> + <listitem +><para +>Il modo in cui deve essere compilato o installato un insieme di file è chiamato <emphasis +>target</emphasis +> nel Gestore Automake, mentre viene rappresentato come <emphasis +>variabile</emphasis +> nello stesso <command +>Automake</command +>. </para +></listitem> + <listitem +><para +>In <command +>make</command +> un <emphasis +>target</emphasis +> è spesso qualcosa di completamente differente, essendo il parametro di un comando <command +>make</command +> (ad es. <userinput +>make install</userinput +>, <userinput +>make clean</userinput +>). </para> + <para +>Comunque, alcune variabili di <filename +>Makefile.am</filename +> rappresentano un <emphasis +>sub-target</emphasis +> in <command +>make</command +>. </para +></listitem> +</itemizedlist> + +</sect3> +</sect2 +> <!-- automake-manager-operation-detail-window --> + +<sect2 id="automake-manager-operation-navigate"> +<title +>Navigare nel gestore Automake</title> + +<para +>In entrambe le finestre panoramica e dettagli si può fare clic con il tasto sinistro sul simbolo <symbol +>+</symbol +> o <symbol +>-</symbol +> vicino ad un sottoprogetto o al nome di un target per espandere o raggruppare la vista ad albero. Se lo si fa con un <emphasis +>sottoprogetto</emphasis +> nella finestra panoramica, verrà mostrato o nascosto il sottoprogetto del livello più basso (se esiste). Se lo si fa con un <emphasis +>target</emphasis +> nella finestra dettagli, verrà mostrata o nascosta la lista dei file relativi di quel target. </para> + +<variablelist> +<varlistentry> +<term +>Aprire un file per la modifica</term> +<listitem> +<para +>Se si fa <emphasis +>clic con il &LMB;</emphasis +> sul nome di un file nella finestra dettagli, verrà aperto nella finestra dell'editor di &kdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Attivare i pulsanti della barra degli strumenti del gestore Automake</term> +<listitem> +<para +>Se si fa <emphasis +>clic con il &LMB;</emphasis +> sul nome di un sottoprogetto nella finestra panoramica oppure sul nome di un target nella finestra dettagli, il nome verrà evidenziato e saranno resi attivi alcuni pulsanti nella barra degli strumenti nella parte superiore di quella finestra.</para> + +<note> + <para +>È raccomandato l'uso del <emphasis +>pulsante destro del mouse e dei menu a comparsa</emphasis +> al posto dei pulsanti della barra degli strumenti, poiché risulta più semplice vedere e capire quello che si sta facendo. </para> + <para +>Le operazioni sui sottoprogetti e sui target hanno effetti molto estesi sulla struttura, la compilazione e l'installazione dell'applicazione. </para> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Selezionare Azioni/Menu a comparsa</term> +<listitem> +<para +>Se si fa clic <emphasis +>con il &RMB;</emphasis +> del mouse sul nome di un sottoprogetto, target o file apparirà un menu a comparsa con il quale si potranno selezionare le azioni da eseguire su un sottoprogetto, target o file, come aggiungere un target ad un sottoprogetto, aggiungere un file ad un target o rimuovere logicamente il file selezionato dal suo target. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- automake-manager-operation-navigate --> + +<sect2 id="automake-manager-operation-popups"> +<title +>Menu a comparsa nel gestore Automake</title> + +<para +>Le sezioni seguenti illustreranno brevemente le operazioni disponibili nei menu contestuali che appaiono quando si fa clic con il tasto destro del mouse nella finestra del Gestore Automake. Questa è solo una panoramica generale, si troveranno le descrizioni dettagliate della maggior parte delle operazioni in un successivo capitolo. </para> +<!-- ### add a link to this chapter when ready --> + +<sect3 id="automake-manager-operation-popups-file"> +<title +>Menu a comparsa per un file</title> + +<para +>Quando si fa clic con il &RMB; sul <emphasis +>nome di un file</emphasis +> nella finestra dettagli, apparirà il seguente menu a comparsa che permette di scegliere una operazione da effettuare su quel file. Nell'illustrazione seguente viene selezionato il file icona <filename +>hi-16app-kdevel.png</filename +> del target <guilabel +>Dati icona in kde_icon</guilabel +> del sottoprogetto <guilabel +>myapp/src</guilabel +>. </para> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automake-file-popup.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="bottom" +><itemizedlist> + <listitem +><para +>La voce principale del menu a comparsa per un file è <guimenuitem +>Rimuovi</guimenuitem +>, che rimuove un file dal suo target (cioè non verrà più usato per compilare, costruire o installare quel target). </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>CVS</guimenuitem +> fornisce una serie di operazioni CVS per quel file. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Apri con</guimenuitem +> permette di aprire il file con diversi editor o applicazioni (ad es. si può aprire il file icona dell'esempio con <application +>KIcon</application +>). </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Perforce</guimenuitem +> è usata in operazioni simili a quelle del CVS, usando il version control system commerciale <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 +>Il menu a comparsa di un target</title> + +<para +>Quando si fa clic con il tasto destro su un <emphasis +>target</emphasis +> nella finestra dettagli apparirà il seguente menu, che permetterà di selezionare una delle operazioni da effettuare. Nell'illustrazione seguente è stato selezionato il target <guilabel +>myapp (Programma in bin)</guilabel +> del sottoprogetto <guilabel +>myapp/src</guilabel +>. </para> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automake-target-popup.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="bottom" +><itemizedlist> + <listitem +><para +>La voce <guimenuitem +>Opzioni</guimenuitem +> per un target riguarda solo i file sorgente. Nella finestra di dialogo corrispondente si può specificare i flag del linker, i percorsi per localizzare le librerie e si può fornire una lista di librerie con cui effettuare il link nell'applicazione. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Crea nuovo file</guimenuitem +> mostrerà una finestra di dialogo nella quale si potrà impostare il nome e il tipo di file che sarà generato (da una lista). </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Aggiungi file esistenti</guimenuitem +> visualizza una finestra di dialogo nella quale si può aggiungere al progetto dei file esistenti. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Rimuovi</guimenuitem +> per un target permette di rimuovere logicamente un target e tutti i suoi file dalla struttura del progetto. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Rendi target attivo</guimenuitem +> si riguarda solo i target che contengono codice sorgente. I nuovi file verranno sempre aggiunti ad un target attivo. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Compila target</guimenuitem +> avvia tutte le operazioni di compilazione per costruire il codice solo di questo target. </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-target --> + +<sect3 id="automake-manager-operation-popups-subproject"> +<title +>Il menu a comparsa per un sottoprogetto.</title> + +<para +>Quando si fa clic con il &RMB; su un <emphasis +>sottoprogetto</emphasis +> nella finestra panoramica apparirà il seguente menu a comparsa che permetterà di effettuare cambiamenti alla struttura del progetto e al modo in cui sarà compilato, costruito e installato. Lo si può usare per espandere o modificare la struttura iniziale del progetto costruita dalla procedura guidata. </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 +>La voce <guimenuitem +>Opzioni</guimenuitem +> controlla il modo in cui un sottoprogetto verrà compilato, costruito e installato. La finestra di dialogo che appare possiede le etichette per le opzioni che riguardano la compilazione, le directory include, i prefissi e l'ordine di costruzione. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Aggiungi sottoprogetto</guimenuitem +> crea una nuova directory e lo scheletro di un file Makefile.am. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Aggiungi Target</guimenuitem +> fa comparire una finestra di dialogo con la quale si possono impostare le regole per la compilazione, la costruzione o l'installazione di un gruppo di file all'interno del sottoprogetto. </para +></listitem> + <listitem +><para +><guimenuitem +>Aggiungi servizio</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Aggiungi Applicazione</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Aggiungi sottoprogetti esistenti</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +>Il modo appropriato per rimuovere un sottoprogetto consiste nell'uso della voce <guimenuitem +>Elimina sottoprogetto</guimenuitem +> del menu a comparsa del un sottoprogetto. Verranno corretti i file <filename +>Makefile.am</filename +>. Sarà mostrata l'opzione di cancellare tutti i file (o collegamenti) della directory corrispondente. Ovviamente, questa caratteristica dovrebbe essere usata con cautela. </para +></listitem> + <listitem +><para +>La voce <guimenuitem +>Compila</guimenuitem +> avvia le operazioni necessarie per compilare solo il codice di quel sottoprogetto. </para +></listitem> + <listitem +><para +><guimenuitem +>Forza Reedit</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Ripulisci</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Installa</guimenuitem +> (... da scrivere ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Installa (come superutente)</guimenuitem +> (... da scrivere ...) </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 +>Progetti automake</title> +<indexterm zone="autoproject" +><primary +><command +>autoproject</command +></primary +></indexterm> +<indexterm zone="autoproject" +><primary +>gestore Automake</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>Autoconf</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>Libtool</primary +></indexterm> + +<para +>(... da scrivere ...) </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 +>da <filename +>Makefile.in</filename +> a <filename +>Makefile</filename +> </para> + +<programlisting +>prefix = @prefix@ +INSTALL = @INSTALL@ +build_triplet = @build@ +CXX = @CXX@ +</programlisting> + +<programlisting +>prefix = /home/bernd/kde3 +INSTALL = /usr/bin/ginstall -c -p +build_triplet = i686-pc-linux-gnu +CXX = g++ +</programlisting> + +<para +>da <filename +>config.h.in</filename +> a <filename +>config.h</filename +> </para> + +<programlisting +>/* Define if you have libz */ +#undef HAVE_LIBZ +/* The size of a `int', as computed by sizeof. */ +#undef SIZEOF_INT +</programlisting> + +<programlisting +>/* Define if you have libz */ +#define HAVE_LIBZ 1 +/* The size of a `int', as computed by sizeof. */ +#define SIZEOF_INT 4 +</programlisting> + +</sect2 +> <!-- autoconf --> + + +<sect2 id="automake"> +<title +>Automake</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!--automake --> + + +<sect2 id="automake-manager"> +<title +>Gestore Automake di &kdevelop;</title> + +<figure id="screenshot-automake-manager" float="1"> +<title +>Uno screenshot del gestore automake</title> +<mediaobject> +<imageobject +><imagedata fileref="automake-manager.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- automake-manager --> + + +<sect2 id="automakelibrary"> +<title +>Compilare e installare librerie</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 +>Makefile e script di compilazione personalizzati</title> +<indexterm zone="customproject" +><primary +><filename +>Makefile</filename +></primary +></indexterm> +<indexterm zone="customproject" +><primary +><filename +>build.xml</filename +></primary +></indexterm> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- customproject --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compileroptions"> +<title +>Opzioni del compilatore</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- compileroptions --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makeoptions"> +<title +>Opzioni Make</title> + +<para +>(... da scrivere ...) </para> + +</sect1 +> <!-- makeoptions --> + +</chapter +> <!-- project-management --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/raw-project-warning.png b/tde-i18n-it/docs/kdevelop/kdevelop/raw-project-warning.png Binary files differnew file mode 100644 index 00000000000..fffd8f5876e --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/raw-project-warning.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/run-button.png b/tde-i18n-it/docs/kdevelop/kdevelop/run-button.png Binary files differnew file mode 100644 index 00000000000..b451e833437 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/run-button.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/script_location.png b/tde-i18n-it/docs/kdevelop/kdevelop/script_location.png Binary files differnew file mode 100644 index 00000000000..36e002c8ee7 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/script_location.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface-0.png b/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface-0.png Binary files differnew file mode 100644 index 00000000000..7c40bf4240f --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface-0.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface.png b/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface.png Binary files differnew file mode 100644 index 00000000000..c5d26465cb7 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/select-user-interface.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/setup.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/setup.docbook new file mode 100644 index 00000000000..60f3330f25d --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/setup.docbook @@ -0,0 +1,2969 @@ +<chapter id="setup"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Configurare &kdevelop;</title> + +<para +>&kdevelop; è un IDE potente e flessibile che si può configurare in molti modi. Per iniziare selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura &kdevelop;...</guimenuitem +></menuchoice +>. Verrà visualizzata una finestra di dialogo composta da una finestra di selezione a sinistra e da una finestra di configurazione a destra i cui contenuti cambiano a seconda della voce selezionata. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-select.png" format="PNG"/> + </imageobject> +<textobject> +<phrase +>Selezionare una voce di configurazione</phrase> +</textobject> + <caption +><para +>Selezionare una voce di configurazione </para +></caption> + </mediaobject> +</screenshot> + +<para +>Per una lettura più intuitiva verranno illustrate le configurazioni suddividendole in <link linkend="setup-general" +>configurazione generale</link +>, <link linkend="setup-docu" +>configurazione della documentazione</link +> e <link linkend="setup-advanced" +>configurazione avanzata</link +>. </para> +<para +>Se si vuole passare direttamente alla lettura di una particolare voce di configurazione seguire i seguenti collegamenti. </para> + +<simplelist> + <member +><link linkend="setup-main" +>Generale</link +></member> + <member +><link linkend="setup-ui" +>Interfaccia utente</link +></member> + <member +><link linkend="setup-templates" +>Modelli di file</link +></member> +<member +><link linkend="setup-editor" +>Editor</link +></member> + <member +><link linkend="setup-abbrev" +>Abbreviazioni</link +></member> + <member +><link linkend="setup-scripting" +>Scripting</link +></member> + <member +><link linkend="setup-menu-standard" +>Menu strumenti</link +></member> + <member +><link linkend="setup-menu-external" +>Strumenti esterni</link +></member> + <member +><link linkend="setup-docu" +>Documentazione</link +></member> + <member +><link linkend="setup-snippets" +>Frammenti di codice</link +></member> + <member +><link linkend="setup-file-list" +>Lista file</link +></member> + <member +><link linkend="setup-file-selector" +>Selettore file</link +></member> + <member +><link linkend="setup-cpp-generator" +>Generatore di classi C++</link +></member> + <member +><link linkend="setup-format" +>Formattazione</link +></member> + <member +><link linkend="setup-cpp-parsing" +>Parsing C++</link +></member> +</simplelist> + +<sect1 id="setup-general"> +<title +>Configurazione Generale</title> + +<para +>La configurazione generale comprende le configurazioni comuni di &kdevelop; come: </para> +<itemizedlist> + <listitem +><para> + <link linkend="setup-main" +>Setup generale</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-ui" +>Selezionare l'interfaccia utente</link> + </para +></listitem> + <listitem> + <itemizedlist> +<title +>Modificare i sorgenti</title> + <listitem +><para> + <link linkend="setup-editor" +>Selezionare un editor</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-format" +>Selezionare uno stile di formattazione sorgente</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-snippets" +>Configurare lo strumento per i frammenti di codice</link> + </para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para> + <link linkend="setup-file-selector" +>Configurare il selettore file</link> + </para +></listitem> +</itemizedlist> + +<sect2 id="setup-main"> +<title +>Setup generale</title> + +<para +>La finestra di configurazione <guilabel +>Generale</guilabel +> permette di definire i parametri fondamentali di &kdevelop; che raramente dovranno essere modificati nel lavoro di tutti i giorni. Sono: </para> + +<variablelist> +<varlistentry> +<term +>Le opzioni generali di progetto come</term> +<listitem> + <itemizedlist> + <listitem +><para +>definire una <link linkend="setup-main-projects" +>directory di default</link +> che verrà usata da &kdevelop; per i nuovi progetti. </para +></listitem> + <listitem +><para +>decidere se si vuole che &kdevelop; <link linkend="setup-main-preload" +>carichi automaticamente</link +> l'ultimo progetto. </para +></listitem> + </itemizedlist> + </listitem> +</varlistentry> + +<varlistentry> +<term +>Selezionare il font per le viste di output più usate, cioè:</term> +<listitem> + +<itemizedlist> +<listitem> +<para +>la <link linkend="setup-main-messages-font" +>vista output messaggio</link +> usata da &kdevelop; per visualizzare ⪚ la procedura di compilazione e</para> +</listitem> +<listitem> +<para +>la vista output applicazione che mostrerà gli errori e le informazioni che riguardano l'esecuzione di una applicazione</para> +</listitem> +</itemizedlist> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Alcuni parametri riguardanti le linee visualizzate nella <guilabel +>Vista output messaggio</guilabel +>, come:</term> +<listitem> + <itemizedlist> +<listitem> +<para +>se per le linee più lunghe <link linkend="setup-main-wrap" +>dovrà essere effettuato il wrap</link +> e </para> +</listitem> +<listitem> +<para +>se verranno mostrati <link linkend="setup-main-navigation" +>i messaggi</link +> inviati da <command +>make</command +>.</para> +</listitem> +</itemizedlist> + +<para +>il <link linkend="setup-main-compile" +>livello dei dettagli</link +> dei messaggi riguardanti il processo di compilazione mostrato nella <guilabel +>vista output messaggio</guilabel +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-general.png" format="PNG"/> + </imageobject> + <caption +><para +>Finestra di dialogo per la configurazione generale </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term id="setup-main-preload" +><guilabel +>Caricare l'ultimo progetto all'avvio</guilabel +></term> +<listitem> +<para +>Marcare questa casella se si vuole continuare il lavoro con l'ultimo progetto usato. Questa opzione caricherà all'avvio di &kdevelop; l'ultimo progetto e lo visualizzerà così come è stato lasciato, in modo da poter continuare velocemente con il lavoro. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-projects"> +<guilabel +>Directory di default dei progetti:</guilabel +></term> +<listitem> +<para +>Per default &kdevelop; usa una directory padre per tutti i nuovi progetti. Inserire il percorso assoluto di questa directory comune nella casella o selezionarlo. &kdevelop; inserirà tutti i nuovi progetti in sottodirectory.</para> +<note +><para +>Ovviamente si può cambiare il percorso della directory di un nuovo progetto durante <link linkend="applicationwizard" +>la procedura guidata per le applicazioni</link +>. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-messages-font" +><guilabel +>Font della finestra:</guilabel +></term> +<listitem> +<para +>La finestra <guilabel +>vista output applicazione</guilabel +> viene utilizzata per visualizzare gli errori e le informazioni sullo stato delle applicazioni che sono eseguite all'interno di &kdevelop;. Normalmente queste informazioni sono inviate dall'applicazione alla console, quindi non è necessario uscire dall'IDE quando si effettua il test dell'applicazione a cui si sta lavorando. </para> +<para +>Per selezionare il font della <guilabel +>Vista output messaggio</guilabel +> fare clic nel pulsante <guilabel +>Font Finestra</guilabel +> che visualizza quello attualmente in uso (nella figura sopra indica <quote +>Sans</quote +>). Apparirà la finestra di dialogo standard di &kde; per selezionare il tipo di carattere. </para> +<note +><para +>Al primo avvio &kdevelop; utilizza il font usato da &kde;. <emphasis +>Questa impostazione è fissa</emphasis +>, quindi se si modificano i font in <menuchoice +><guimenuitem +>Aspetto</guimenuitem +><guimenuitem +>Tipi di carattere</guimenuitem +></menuchoice +> nel <guilabel +>Centro di controllo</guilabel +> non verranno modificati i font di &kdevelop;, che dovranno essere riselezionati esplicitamente. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-compile" +><guilabel +>Output del compilatore</guilabel +></term> +<listitem> +<para +>&kdevelop; elabora i messaggi che vengono inviati alla finestra <guilabel +>vista output messaggi</guilabel +> durante il processo di compilazione per filtrare le informazioni superflue. Si può controllare il livello dei dettagli attraverso le caselle di questo campo. </para> +<variablelist> +<varlistentry> +<term +><guilabel +>Output molto breve del compilatore</guilabel +></term> +<listitem +><para +>Visualizza solo gli avvertimenti (warning), gli errori e i nomi dei file che sono compilati. </para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Output breve del compilatore</guilabel +></term> +<listitem +><para +>Nasconde tutte le opzioni del compilatore e formatta l'output in modo da renderlo più leggibile. </para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Output completo del compilatore</guilabel +></term> +<listitem +><para +>Visualizza tutti i messaggi di output senza modificarli. </para +></listitem> +</varlistentry> +</variablelist> + +<tip +><para +>Esiste un metodo alternativo per modificare il livello di dettaglio dell'output. Fare clic con il tasto destro nella <guilabel +>vista output messaggi</guilabel +> e selezionare il livello dei dettagli nel menu a comparsa. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-wrap" +><guilabel +>Wrap della linea</guilabel +></term> +<listitem> +<para +>Per default &kdevelop; effettuerà il wrap delle linee più lunghe nella finestra <guilabel +>vista output messaggio</guilabel +> in modo che non vengano nascoste informazioni importanti. In alcuni casi il wrap renderà confusi gli elenchi di messaggi lunghi, se non lo si desidera deselezionare la casella. </para> +<tip +><para +>C'è un sistema alternativo per cambiare il wrap delle linee. Fare clic con il &RMB; nella <guilabel +>vista output messaggio</guilabel +> e selezionare o deselezionare la voce <guimenuitem +>Linea di Wrap</guimenuitem +> nel menu che appare. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-navigation" +><guilabel +>Messaggi di navigazione tra le directory</guilabel +></term> +<listitem> +<para +>Normalmente lo strumento <command +>make</command +> visualizza messaggi come <quote +>Entering directory</quote +>, o <quote +>Leaving directory</quote +> mentre si sposta tra le directory. Siccome questi messaggi rendono confusa la finestra <guilabel +>vista output messaggi</guilabel +>, vengono di default disabilitati. Marcare la casella se si vogliono visualizzare le directory in cui lavora il comando <command +>make</command +>. </para> +<note +><para +>I cambiamenti in queste impostazioni hanno effetto solo sui nuovi messaggi. I vecchi messaggi di navigazione resteranno visibili quando si disattiva questa opzione. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="ui-designer-integration" +><guilabel +>Integrazione Designer UI</guilabel +></term> +<listitem> +<para +>Permette di scegliere il modo in cui vengono visualizzati i file <filename +>.ui</filename +> in &kdevelop;. &kdevelop; possiede un proprio Designer UI chiamato KDeveDesigner che può essere utilizzato come applicazione integrata oppure come un programma separato. Anche il Designer Qt può essere usato per modificare i file <filename +>.ui</filename +>. </para> +<itemizedlist> + <listitem +><para +>Usa il Designer integrato di &kdevelop; </para +><para +>Viene utilizzato il designer integrato di &kdevelop;</para +></listitem> + <listitem +><para +>Avvia il Designer di &kdevelop; come applicazione separata </para +><para +>L'applicazione KDevDesigner verrà avviata separatamente in una propria finestra.</para> +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevdesigner.png" format="PNG"/> + </imageobject> + <caption +><para +>KDevDesigner nella propria finestra </para +></caption> + </mediaobject> +</screenshot> +</listitem> + <listitem +><para +>Avvia Designer Qt </para +><para +>Il Designer Qt, contenuto nell'installazione di Qt, verrà avviato esternamente quando si fa click su un file <filename +>.ui</filename +> in &kdevelop;.</para +></listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="terminal-emulation" +><guilabel +>Emulatore di terminale</guilabel +></term> +<listitem> +<para +>Si può scegliere quale terminale venga utilizzato in KDevelop. </para> +<itemizedlist> + <listitem +><para +>Usa impostazioni di &kde; </para +><para +>Si utilizzano le impostazioni di &kde; del &kcontrol; nella etichetta <guilabel +>Componenti di &kde;</guilabel +><guilabel +>Scelta componenti</guilabel +>. Queste impostazioni stabiliscono quale emulatore di terminale verrà utilizzato in tutte le applicazioni &kde; che necessitano di un terminale.</para +></listitem> + <listitem +><para +>Altro </para +><para +>Scelta di terminali diversi da quello predefinito.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +</variablelist> + +</sect2 +> <!-- setup-main --> + +<sect2 id="setup-ui"> +<title +>Selezionare l'interfaccia utente</title> + +<indexterm zone="setup-ui"> + <primary +>interfaccia utente</primary> + <secondary +>cambiare modalità</secondary +></indexterm> +<indexterm zone="setup-ui"> + <primary +>cambiare modalità UI</primary +></indexterm> + +<para +>Come indicato precedentemente nel capitolo <link linkend="uimodes-survey" +>Modalità dell'interfaccia utente disponibili</link +> sono disponibili quattro impostazioni per l'area di lavoro di &kdevelop;: </para> +<itemizedlist> + <listitem +><para> + <link linkend="ideal-desc" +>Modalità finestre IDEAl semplificata</link> + </para +><para +>Questa è una versione semplificata dell'interfaccia utente IDEA, progettata per essere semplice e pulita. Non sono utilizzate le viste strumenti agganciate.</para +></listitem> + <listitem +><para> + <link linkend="ideal-desc" +>Modalità finestra IDEAl</link> + </para +><para +>Questa è un clone dell'interfaccia utente IDEA, simile alla modalità a schedario. Questa modalità è la predefinita.</para +></listitem> + <listitem +><para> + <link linkend="mdi-desc" +>Modalità finestre childframe</link> + </para +><para +>Tutte le viste strumenti sono inizialmente agganciate al frame principale. Le viste editor e browser saranno contenute nella vista del mainframe come finestre toplevel. Un tipico esempio di questa interfaccia è MS Visual Studio 6.0.</para +></listitem> + <listitem +><para> + <link linkend="tabbed-desc" +>Modalità a schedario</link> + </para +><para +>Tutte le viste strumenti sono inizialmente agganciate al frame principale. Le viste editor e browser saranno distaccate in una finestra a schede. Un tipico esempio di questa interfaccia utente è KDEStudio, un altro IDE C++ in KDE.</para +></listitem> + <listitem +><para> + <link linkend="toplevel-desc" +>Modalità finestra toplevel</link> + </para +><para +>L'editor, il browser e le viste strumenti saranno visualizzati in finestre toplevel (direttamente sul desktop). Il widget principale conterrà solo il menu, le barre degli strumenti e la barra di stato. Un tipico esempio di questa configurazione è Borland Delphi 6.0.</para +></listitem> +</itemizedlist> + +<para +>Per cambiare la modalità dell'interfaccia utente selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura &kdevelop;...</guimenuitem +></menuchoice +>. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Interfaccia Utente</guilabel +> nei campi a sinistra. Questo visualizzerà la pagina di impostazioni mostrata qui sotto.</para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface-0.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Selezionare una modalità dell'interfaccia utente</phrase +></textobject> + <caption +><para +>Selezionare una modalità dell'interfaccia utente </para +></caption> + </mediaobject> +</screenshot> + +<para +>Selezionare la casella corrispondente all'interfaccia utente desiderata e premere <guibutton +>OK</guibutton +> </para> + +<note +><para +>Non dimenticarsi di riavviare &kdevelop; per rendere effettive le modifiche. </para +></note> + +<para +>Quando si seleziona la <guilabel +>Modalità finestra IDEAl</guilabel +> o la <guilabel +>Modalità a schedario</guilabel +> saranno disponibili altre due sezioni di configurazione: <link linkend="setup-ui-tabs" +>Usa schede</link +> e <link linkend="setup-ui-hover" +>Chiudi al passaggio del mouse</link +>. </para> + +<para +>Nella <guilabel +>Modalità finestra IDEAl</guilabel +> è disponibile una ulteriore sezione di configurazione, <link linkend="setup-ui-toolview" +> Aspetto scheda vista strumenti</link +> che permette di selezionare diverse dimensioni delle schede della vista strumenti che (in questa modalità) circondano l'area di lavoro. </para> + +<variablelist> +<varlistentry> +<term id="setup-ui-tabs" +>Configurare l'aspetto della barra di schede</term> +<listitem> +<para +>Nelle modalità IDEAl e schedario saranno presenti delle linguette sopra alla finestra del documento, in modo da poter facilmente selezionare diversi documenti con il &LMB;. Se si preferisce disporre di maggior spazio per la finestra dei documenti si possono modificare le impostazioni della sezione <guilabel +>Usa schede</guilabel +>. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Sempre</guilabel +></term> + <listitem +><para +>Questa è l'impostazione di default — mostra una linguetta in cima ad ogni finestra contenente una icona e il nome del documento. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Quando più di uno</guilabel +></term> + <listitem +><para +>Non mostra la linguetta quando è visualizzato un solo documento, mentre se sono presenti più documenti &kdevelop; visualizza una barra di schede come nell'opzione <guilabel +>Sempre</guilabel +>. Questa modalità è utile se si lavora per la maggior parte del tempo con un documento singolo, siccome rende disponibile una maggiore ampiezza verticale. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Mai</guilabel +></term> + <listitem +><para +>Non mostra mai nessuna linguetta di selezione. Si può usare questa modalità se si usa raramente il mouse per passare da un documento all'altro. Fornisce una maggiore ampiezza verticale per tutte le finestre dei documenti. Per selezionare o chiudere un documento usare il menu <guimenu +>Finestra</guimenu +> di &kdevelop;. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-hover" +>Impostare la chiusura di un documento con un clic sulla sua linguetta</term> +<listitem> +<para +>Quando &kdevelop; è stato configurato per visualizzare la barra delle schede dei documenti, si può aggiungere un'altra funzionalità oltre alla capacità di selezionare i documenti. Questo viene fatto attraverso la sezione di configurazione <guilabel +>Chiudi al passaggio del mouse</guilabel +>. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>No</guilabel +></term> + <listitem +><para +>Questa è l'opzione standard. Non viene aggiunta nessuna funzionalità extra alle linguette: possono essere usate solo per selezionare le finestre dei documenti con il &LMB;. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Si</guilabel +></term> + <listitem +><para +>Selezionando questa casella si può chiudere una finestra con il &LMB;. Puntare con il mouse la piccola icona sul bordo sinistro della linguetta, che diventerà un simbolo di chiusura. Ora fare clic il &LMB; su questo simbolo e &kdevelop; chiuderà la finestra corrispondente. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Sì, ritardato</guilabel +></term> + <listitem +><para +>Selezionando questa casella, si può chiudere un documento come nel caso dell'opzione <guilabel +>Si</guilabel +>. Tuttavia l'icona non cambierà istantaneamente ma dopo un breve ritardo. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-toolview" +>Configurare l'aspetto delle schede della vista strumenti</term> +<listitem> +<para +>La sezione di configurazione <guilabel +>Aspetto scheda vista strumenti</guilabel +> è disponibile solo nella modalità IDEAl. Usare queste caselle per selezionare l'aspetto delle linguette delle viste strumenti che circondano l'area di lavoro. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Icone</guilabel +></term> + <listitem> + <para +>Ogni linguetta contiene solo una icona. Se viene visualizzata la vista strumenti corrispondente si aprirà e sarà mostrato un titolo descrittivo. Si può usare questa modalità se si lavora con un monitor a bassa risoluzione. </para> + <para +>Tuttavia le icone non sono molto descrittive. Se si vuole trovare la vista strumenti associata ad una data scheda puntarla con il mouse e attendere un secondo. Apparirà un breve aiuto con il nome della vista. </para> + </listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Testo</guilabel +></term> + <listitem +><para +>Questa è la modalità di visualizzazione di default. Ogni linguetta contiene il nome della vista strumenti associata. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Testo e icone</guilabel +></term> + <listitem +><para +>Si può selezionare questa casella se il testo della vista strumenti è troppo piatto e si sta lavorando con un monitor ad alta risoluzione. Questa modalità visualizza il nome della vista strumenti e una icona posizionata a sinistra del nome in modo da rendere le linguette più facili da distinguere. Vedere l'illustrazione sotto. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Linguette su due righe</term> +<listitem> +<para +>Se nella modalità IDEAl le linguette visualizzano il testo (con o senza icone) non bisogna preoccuparsi che vengano nascoste dietro ad altre finestre. Se una delle finestre in basso occupa più spazio di quello disponibile per visualizzare tutte le linguette (verticali), esse verranno disposte su due righe in questo modo: </para> + +<screenshot> + <mediaobject id="folded-toolview-tabs"> + <imageobject> + <imagedata fileref="folded-tabs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Le linguette si dispongono su due righe per non essere nascoste da un'altra finestra</phrase +></textobject> + <caption +><para +>Le linguette si dispongono su due righe per non essere nascoste da un'altra finestra </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>La disposizione su due righe viene effettuata quando la finestra degli strumenti viene fissata (modalità di non sovrapposizione), condividendo l'area di lavoro con le altre finestre. Si può impostare questa visualizzazione facendo clic sul piccolo quadrato sul bordo della finestra. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-ui --> + +<sect2 id="setup-templates"> +<title +>Modelli di file</title> +<!--TODO fill--><para +></para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-file-templates.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare i modelli di file</phrase +></textobject> + <caption +><para +>Configurare i modelli di file </para +></caption> + </mediaobject> +</screenshot> +</sect2 +> <!-- setup-templates --> + +<sect2 id="setup-editor"> +<title +>Selezionare un editor</title> + +<para +>&kdevelop; permette di impostare l'editor preferito. Selezionare la voce <guilabel +>Editor</guilabel +> nella parte sinistra della finestra <guilabel +>Configura KDevelop</guilabel +>. Verrà visualizzata la seguente finestra. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-editor.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Selezionare un editor</phrase +></textobject> + <caption +><para +>Selezionare un editor </para +></caption> + </mediaobject> +</screenshot> + +<para +>Per selezionare un nuovo editor, fare clic sulla freccia nel menu a comparsa. Verrà visualizzata una lista di editor che possono essere selezionati, a seconda dei componenti editor installati nella propria versione di &kde; (vedere la <link linkend="setup-editor-kparts" +>Nota</link +> seguente). Fare clic sull'editor preferito e poi sul pulsante <guilabel +>OK</guilabel +>. Sono visualizzate tre possibilità: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Editor avanzato incorporato</guilabel +></term> + <listitem +><para +>Questo è il componente dell'editor standard di &kde; <application +>Kate</application +>. </para +></listitem> + </varlistentry> + + <varlistentry> + <term +><guilabel +>Editor di testo basato su Qt Designer</guilabel +></term> + <listitem +><para +>Questo è l'editor fornito da &Qt; nel suo componente <application +>Designer</application +> </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Queste interfacce di editor sono completamente integrate nell'IDE &kdevelop;. In particolare è disponibile la possibilità di saltare alla linea del codice sorgente errata attraverso un clic sul messaggio di errore nella finestra <guilabel +>vista output messaggi</guilabel +>. </para> + +<note +><para +>Il cambiamento dell'editor non avrà effetto sui file già aperti. Si può procedere in due modi: chiudere tutte le finestre di testo aperte e riaprirle una per una, oppure chiudere l'intero progetto e riaprilo nuovamente. Le finestre saranno automaticamente aperte con l'interfaccia del nuovo editor. </para +></note> + +<important id="setup-editor-kparts" +><para +>&kdevelop; permette di usare le interfacce degli editor registrati in &kde; che forniscono una interfaccia KatePart. Se qualche voce è assente controllare la propria installazione di &kde; per vedere se è stato correttamente installato il componente corrispondente. </para +></important> + +<para +>Cosa fare se il file è stato modificato esternamente</para> +<variablelist> + <varlistentry> + <term +><guilabel +>Non fare nulla</guilabel +></term> + <listitem +><para +>Il file verrà contrassegnato come modificato esternamente e verrà chiesto di verificare ogni tentativo di sovrascrittura. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Avverti l'utente</guilabel +></term> + <listitem +><para +>Una finestra di dialogo avvertirà l'utente che il file è stato modificato e fornirà la possibilità di ricaricare il file. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Ricarica automaticamente il file se è sicuro, altrimenti avverti l'utente</guilabel +></term> + <listitem +><para +>Qualuque file che non è stato modificato in memoria verrà ricaricato e sarà visualizzato un avvertimento in caso di conflitto. </para +></listitem> + </varlistentry> +</variablelist> +</sect2 +> <!-- setup-editor --> + +<sect2 id="setup-abbrev"> +<title +>Abbreviazioni per il completamente del testo</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- setup-abbrev --> + +<sect2 id="setup-scripting"> +<title +>Scripting</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- setup-scripting --> + +<sect2 id="setup-menu-standard"> +<title +>Aggiungere applicazioni standard &kde; al menu strumenti</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- setup-menu-standard Tools Menu--> + +<sect2 id="setup-menu-external"> +<title +>Aggiungere applicazioni esterne ai menu</title> + +<para +>(... da scrivere ...) </para> + +<sect3 id="setup-menu-external-tools"> +<title +>Aggiungere al menu strumenti</title> + +<para +>(... da scrivere ...) </para> +</sect3 +> <!-- setup-menu-external-tools --> + +<sect3 id="setup-menu-external-filecontext"> +<title +>Aggiungere al menu contestuale File</title> + +<para +>(... da scrivere ...) </para> +</sect3 +> <!-- setup-menu-external-filecontext --> + +<sect3 id="setup-menu-external-dircontext"> +<title +>Aggiungere al menu contestuale Directory</title> + +<para +>(... da scrivere ...) </para> +</sect3 +> <!-- setup-menu-external-dircontext --> + +</sect2 +> <!-- setup-menu-external --> + +<sect2 id="setup-format"> +<title +>Selezionare uno stile di formattazione del codice sorgente</title> + +<para +>&kdevelop; formatta automaticamente il testo con uno stile predefinito. Quest'ultimo è altamente configurabile. </para> + +<note +><para +>La possibilità di riformattare il codice sorgente è disponibile attualmente solo per i linguaggi C, C++ e &Java;. Questa funzione non può essere usata per i linguaggi di scripting come ⪚ PHP, perché &kdevelop; la implementa con l'applicazione <ulink url="http://astyle.sourceforge.net/" +>astyle</ulink +>. </para +></note> + +<para +>Per impostare uno specifico stile di formattazione selezionare <menuchoice +> <guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura KDevelop...</guimenuitem +> </menuchoice +>. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Formattatore sorgente</guilabel +> nei campi a sinistra. Questo visualizzerà una finestra con tre schede chiamate <link linkend="setup-format-general" +>Generale</link +>, <link linkend="setup-format-indent" +>Indentazione</link +> e <link linkend="setup-format-other" +>Altro</link +>. </para> + +<tip +><para +>Tutti i cambiamenti allo stile vengono applicati solo al nuovo testo inserito. Se si vuole cambiare lo stile di formattazione di un testo già esistente si deve usare esplicitamente il comando <menuchoice +><guimenu +>Modifica</guimenu +><guimenuitem +>Riformatta sorgente</guimenuitem +></menuchoice +>. </para +></tip> + +<note +><para +>L'effetto dello stile di formattazione dipende dall'<link linkend="setup-editor" +>editor</link +> usato. Attualmente la maggior parte delle impostazioni è adatta al componente Kate (<quote +>l'editor incorporato avanzato</quote +>). Altri editor (ad es. l'editor Qt) potrebbero seguire altre impostazioni di configurazione. In questo caso si dovranno sperimentare gli esatti effetti delle impostazioni. </para +></note> + +<warning +><para +>Potrebbero esistere delle incompatibilità, che in caso estremo potrebbero anche danneggiare i file, tra queste configurazioni e l'editor usato. Assicurarsi di avere una copia di backup dei file sorgente prima di provare le impostazioni con un editor diverso da quello standard di KDE. </para +></warning> + +<sect3 id="setup-format-general"> +<title +>Impostazioni di configurazione generale</title> + +<para +>La scheda <guilabel +>Generale</guilabel +> della finestra di dialogo <guilabel +>Formattatore sorgente</guilabel +> permette di selezionare uno dei cinque stili di formattazione predefiniti. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Impostazione dello stile di formattazione generale</phrase +></textobject> + <caption +><para +>Impostazione dello stile di formattazione generale </para +></caption> + </mediaobject> +</screenshot> + +<para +>Nella parte destra della finestra viene visualizzato un codice di esempio. Se non si gradisce nessuno degli stili predefiniti si può fare clic sulla casella <guilabel +>definito dall'utente</guilabel +> in alto e definire un proprio stile attraverso le altre due schede che verranno attivate. </para> + +<note +><para +>Il testo di esempio è disponibile solo con gli stili predefiniti e non viene visualizzato con uno stile personalizzato.In questo caso si dovranno sperimentare le impostazioni sul codice sorgente vero e proprio. </para +></note> + +</sect3 +> <!-- setup-format-general --> + +<sect3 id="setup-format-indent"> +<title +>Impostazioni dello stile di indentazione</title> + +<para +>Per aumentare la leggibilità di un codice sorgente è necessaria una indentazione appropriata. Selezionando la scheda <guilabel +>Indentazione</guilabel +> della finestra <guilabel +>Formattatore sorgente</guilabel +> verranno visualizzate varie opzioni di formattazione suddivise in tre gruppi. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-indent.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Impostazioni delle stile di indentazione</phrase +></textobject> + <caption +><para +>Impostazioni delle stile di indentazione </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Impostazioni di default</term> +<listitem> +<para +>Le opzioni di formattazione preimpostate sono simili allo stile di formattazione ANSI:</para> + +<screen +>namespace foospace +{ + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } +} +</screen> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-format-indent-filling" +>Definire l'ampiezza di indentazione e i caratteri</term> +<listitem> +<para +>Le caselle del gruppo <guilabel +>Riempimento</guilabel +> definiscono come verrà disegnata l'indentazione del testo.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Usa tab</guilabel +></term> + <listitem> + <para +>Sarà inserito un carattere di tabulazione per ogni livello di indentazione. La larghezza della tabulazione viene impostata nelle configurazioni dell'editor (normalmente 8 o 4 caratteri). Per modificarla andare in <menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Configura editor...</guimenuitem +></menuchoice +>. </para> + <note +><para +>La procedura di impostazione della ampiezza della tabulazione dipende dall'editor selezionato nella fase <link linkend="setup-editor" +>Selezionare un editor</link +>. Controllare la procedura nella documentazione dell'editor. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Usa spazi</guilabel +></term> + <listitem +><para +>Selezionando questa casella l'editor inserirà un certo numero di spazi per ogni livello di indentazione. Inserire il numero preferito per l'ampiezza di indentazione. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Entità indentate</term> +<listitem> +<para +>Qui vengono definite quali entità (C/C++) saranno formattate con una ulteriore indentazione oltre al normale livello di indentazione.</para> + +<para +>Per default solo <guilabel +>namespace</guilabel +> e <guilabel +>etichette</guilabel +> hanno una indentazione extra. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Continuazione</term> +<listitem> +<para +>Queste impostazioni vengono applicate quando il formattatore di sorgente effettua automaticamente il wrap delle linee lunghe. Queste due opzioni stabiliscono se nelle indentazioni profonde deve rimanere abbastanza spazio per il codice sorgente e se le istruzioni condizionali devono riceve un livello di indentazione aggiuntivo. </para> + +<note +><para +>Questo viene applicato nei casi di <emphasis +>wrap statico</emphasis +>, dove viene usato un limite fissato di caratteri di una linea. Se nell'editor viene impostato il wrap dinamico delle linee lunghe (che è possibile nel componente &kate;) non saranno visualizzati gli effetti di queste impostazioni. </para +></note> + +<variablelist> + <varlistentry> + <term +><guilabel +>Massimo nell'istruzione</guilabel +></term> + <listitem> + <para +>Questa impostazione limita il numero massimo possibile di indentazioni in modo che rimanga abbastanza spazio per mantenere il testo leggibile. Non verrà effettuata nessuna indentazione oltre al numero di colonne impostate in questo campo. </para> + <para +>Il default è di 40 caratteri (metà delle 80 colonne standard di una pagina). Si può incrementare questo valore se si usano dei fogli più grandi (ad es. si vogliono stampare i sorgenti impostando l'orientamento orizzontale) o si può diminuire in modo da avere margini di stampa più ampi. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Minimo nella selezione</guilabel +></term> + <listitem> + <para +>Le istruzioni condizionali o il codice sorgente che seguono ad es. un operatore di assegnamento dovrebbero avere una indentazione extra per mantenere il testo leggibile. Qui viene definito la quantità dell'indentazione extra. </para> + <para +>Il valore di default è impostato su <quote +>Due volte nell'attuale</quote +> </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-format-indent --> + +<sect3 id="setup-format-other"> +<title +>Altre impostazioni di formattazione</title> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-other.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Altre impostazioni dello stile di formattazione</phrase +></textobject> + <caption +><para +>Altre impostazioni dello stile di formattazione </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Controllare la posizione delle parentesi</term> +<listitem> +<para +>Le caselle del gruppo <guilabel +>Parentesi</guilabel +> controllano la posizione delle parentesi che delimitano i blocchi di codice nei file sorgente (C/C++). Ci sono tre caselle da selezionare.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Interruzione</guilabel +></term> + <listitem> + <para +>Questa opzione inserisce una interruzione di linea prima di ogni parentesi aperta. Entrambe le parentesi che delimitano un blocco saranno inserite allo stesso livello di indentazione dell'istruzione precedente al blocco.</para> + +<screen +>namespace foospace +{ + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Allega</guilabel +></term> + <listitem> + <para +>Questa opzione mette la parentesi di apertura sulla stessa linea dell'istruzione precedente al blocco. La parentesi di chiusura sarà allo stesso livello di indentazione dell'istruzione precedente al blocco. L'istruzione <token +>else</token +> del comando <token +>if</token +> sarà posizionata sulla stessa linea della parentesi di chiusura del blocco precedente. </para> +<screen +>namespace foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Stile Linux</guilabel +></term> + <listitem> + <para +>Questa opzione rappresenta un compromesso tra gli stili elencati prima. Le parentesi dei blocchi di codice delle funzioni saranno inserite su una nuova linea. Le parentesi di apertura di un blocco in una istruzione di ciclo o condizionale saranno messe sulla stessa linea. </para> +<screen +>namespace foospace +{ + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controllare gli spazi extra</term> +<listitem> +<para +>Per default &kdevelop; minimizza l'uso degli spazi. </para> + + +<screen +>if (isBar(fooArg)==barValue) +</screen> + +<para +>Si può aumentare la leggibilità se si impone al formattatore di inserire spazi extra in posizioni particolari.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Aggiungi spazio intorno alle parentesi</guilabel +></term> + <listitem> + <para +>Di fatto questa opzione aggiunge spazi attorno al testo che si trova tra parentesi. Viene aumentata la leggibilità degli argomenti di funzione e delle espressioni condizionali.</para> +<screen +>if ( isBar( fooArg )==barValue ) +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Aggiungi spazio intorno agli operatori</guilabel +></term> + <listitem> + <para +>Questa opzione inserisce degli spazi attorno agli operatori di assegnamento e di confronto.</para> +<screen +>if (isBar(fooArg) == barValue) +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controllare la formattazione dei costrutti su una linea</term> +<listitem> +<para +>Ci sono alcuni casi in cui non si vuole che il formattatore di sorgente spezzi una linea lunga. </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Tieni insieme una linea di istruzioni</guilabel +></term> + <listitem +><para +>Questa opzione mantiene l'istruzione su una singola linea anche se è più lunga del limite massimo. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Tieni insieme blocchi di una linea</guilabel +></term> + <listitem +><para +>Questa opzione mantiene i blocchi su una singola linea anche se è più lunga del limite massimo. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + + +</sect3 +> <!-- setup-format-other --> + +</sect2 +> <!-- setup-format --> + +<sect2 id="setup-snippets"> +<title +>Impostare lo strumento per i frammenti di codice</title> + +<para +>Quando si programma in &kdevelop; si possono memorizzare parti di codice utilizzate frequentemente chiamate <link linkend="editing-snippets" +>frammenti di codice</link +>. Per configurare le funzionalità dello strumento per i frammenti di codice selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +><guimenuitem +>Configura &kdevelop;...</guimenuitem +></menuchoice +> dalla barra dei menu. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Frammenti di codice</guilabel +> nei campi a sinistra. Questo visualizzerà la seguente finestra nella parte destra. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-snippets.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare lo strumento per i frammenti di codice</phrase +></textobject> + <caption +><para +>Configurare lo strumento per i frammenti di codice </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Attivare l'anteprima</term> +<listitem> +<para +>Marcare la casella <guilabel +>Mostra testo del frammento di codice in aiuto</guilabel +> se si vuole vedere il testo del frammento di codice in un aiuto quando si passa il cursore del mouse sopra al suo titolo.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Lavorare con le variabili</term> +<listitem> +<para +>Lo strumento per i frammenti di codice permette di inserire delle variabili in posti predefiniti ogni volta che si utilizza un frammento di codice nel file. É presente un meccanismo per indicare le variabili, che può essere configurato nel gruppo di opzioni <guilabel +>Variabili</guilabel +>.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Delimitatore</guilabel +></term> + <listitem +><para +>Il nome si una variabile è circondato da uno speciale simbolo che lo delimita. Per usare un delimitatore personalizzato, modificare il carattere predefinito <guilabel +>$</guilabel +> nel campo <guilabel +>Delimitatore</guilabel +>. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Metodi di input per le variabili</guilabel +></term> + <listitem +><itemizedlist> + <listitem +><para +><guilabel +>Finestra singola per ogni variabile di un frammento di codice</guilabel +> – farà apparire una finestra per ogni variabile quando si inserisce il frammento di codice. </para +></listitem> + <listitem +><para +><guilabel +>Una finestra per tutte le variabili di un frammento di codice</guilabel +> – farà apparire una finestra di dialogo dove l'utente deve inserire i valori di tutte le variabili prima che il frammento di codice venga inserito. </para +></listitem> + </itemizedlist +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-snippets --> + +<sect2 id="setup-file-list"> +<title +>Lista dei file</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- setup-file-list--> + +<sect2 id="setup-file-selector"> +<title +>Configurare il selettore file</title> + +<para +>&kdevelop; fornisce un <guilabel +>selettore file</guilabel +> che, quando viene caricato all'avvio, permette di navigare attraverso qualunque file o directory del sistema. </para> + +<screenshot id="setup-fileselector-image"> + <mediaobject> + <imageobject> + <imagedata fileref="file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Il selettore file nella modalità IDEAl</phrase +></textobject> + <caption +><para +>Il selettore file (modalità IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<para +>Il comportamento del <guilabel +>selettore file</guilabel +> è altamente configurabile. Selezionare <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura &kdevelop;...</guimenuitem +></menuchoice +> dalla barra dei menu. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Selettore file</guilabel +> nei campi a sinistra. Questo visualizzerà la seguente finestra nella parte destra.</para> + + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare il selettore file</phrase +></textobject> + <caption +><para +>Configurare il selettore file </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Configurare la barra degli strumenti</term> +<listitem> +<para +>É presente una barra degli strumenti in cima al <guilabel +>selettore file</guilabel +> che può essere configurata normalmente nel riquadro <guilabel +>Barra Strumenti</guilabel +>.</para> + +<procedure id="setup-fileselector-add-action"> + <title +>Aggiungere una azione alla barra degli strumenti</title> + <step> + <para +>Selezionare la voce nella lista di destra <guilabel +>Azioni selezionate</guilabel +> dopo la quale verrà inserita la nuova azione. </para> + </step> + <step> + <para +>Selezionare l'azione da inserire nella lista di sinistra <guilabel +>Azioni disponibili</guilabel +>. </para> + </step> + <step> + <para +>Fare clic sulla freccia destra (in alto) posizionata tra le due liste. </para> + <para +>L'azione verrà rimossa della lista <guilabel +>Azioni disponibili</guilabel +> e verrà inserita nella lista <guilabel +>Azioni selezionate</guilabel +> dopo la voce selezionata. </para> + </step> +</procedure> + +<procedure> + <title +>Rimuovere una azione della barra degli strumenti</title> + <step> + <para +>Selezionare la voce da rimuovere nella lista a destra <guilabel +>Azioni selezionate</guilabel +>. </para> + </step> + <step> + <para +>Fare clic sulla freccia sinistra (in basso) posizionata tra le due liste. </para> + <para +>La voce selezionata verrà rimossa dalla lista <guilabel +>Azioni selezionate</guilabel +> e sarà reinserita nella lista <guilabel +>Azioni disponibili</guilabel +>. </para> + </step> +</procedure> + +<procedure> + <title +>Riordinare le azioni della barra degli strumenti</title> + <step> + <para +>Selezionare l'azione da muovere nella lista di destra <guilabel +>Azioni selezionate</guilabel +>. </para> + </step> + <step> + <para +>Fare clic sulla freccia in alto o in basso posizionata a destra della lista. </para> + <para +>La voce selezionata verrà mossa verso l'alto o verso il basso nella lista <guilabel +>Azioni selezionate</guilabel +>. </para> + </step> +</procedure> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-fileselector-autosync" +>Definire quando i contenuti dovrebbero cambiare</term> +<listitem> +<para +>L'aggiornamento dei contenuti della finestra del <guilabel +>selettore file</guilabel +> richiede tempo e risorse, specialmente quando si cambia directory. Quindi il <guilabel +>selettore file</guilabel +> viene automaticamente impostato in modo che i suoi contenuti vengano aggiornati solo su richiesta, cioè quando si seleziona un'altra directory o quando viene richiesto in modo esplicito. </para> + +<note +><para +>Fare clic sul pulsante <guilabel +>Ricarica</guilabel +> nella barra degli strumenti per aggiornare i contenuti del <guilabel +>selettore file</guilabel +>. Questo pulsante non è presente di default, quindi deve essere prima <link linkend="setup-fileselector-add-action" +>inserito</link +> nella barra degli strumenti. </para +></note> + +<para +>Si può configurare il <guilabel +>selettore file</guilabel +> in modo da aggiornarsi immediatamente in caso avvengano alcune modifiche. Le impostazioni del gruppo <guilabel +>Sincronizzazione automatica</guilabel +> stabiliscono in quali casi deve essere eseguito l'aggiornamento. </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Quando un documento diventa attivo</guilabel +></term> + <listitem +><para +>Se si seleziona questa casella i contenuti della finestra <guilabel +>selettore file</guilabel +> saranno aggiornati quando ci si sposta in un altro documento già aperto, ⪚ quando si fa clic sulla linguetta della corrispondente finestra nella modalità IDEAl. Se necessario il <guilabel +>selettore file</guilabel +> si sposterà nella directory a cui appartiene il file ed effettuerà un aggiornamento dei contenuti. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Quando un documento è aperto</guilabel +></term> + <listitem +><para +>Se si seleziona questa casella i contenuti della finestra del <guilabel +>selettore file</guilabel +> vengono aggiornati quando un documento viene aperto, ad es. attraverso il menu <menuchoice +><guimenu +>File</guimenu +> <guimenuitem +>Apri</guimenuitem +></menuchoice +>. Se necessario il <guilabel +>selettore file</guilabel +> si sposterà nella directory a cui appartiene il file ed effettuerà un aggiornamento dei contenuti. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Quando il selettore file diventa visibile</guilabel +></term> + <listitem +><para +>Se si seleziona questa casella i contenuti della finestra del <guilabel +>selettore file</guilabel +> saranno aggiornati quando questo diventa nuovamente visibile. Se necessario il <guilabel +>selettore file</guilabel +> si sposterà nella directory a cui appartiene il file ed effettuerà un aggiornamento dei contenuti. </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Si possono combinare queste impostazioni per adattare la sincronizzazione del <guilabel +>selettore file</guilabel +> alle proprie esigenze. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Controllare la cronologia delle caselle</term> +<listitem> +<para +>Ci sono due caselle a scelta multipla in alto e in basso al <guilabel +>selettore file</guilabel +> che controllano la directory da visualizzare (casella in alto) e i filtri da utilizzare (casella in basso) nella visualizzazione. Viene mantenuta una cronologia delle impostazioni recentemente utilizzate delle caselle. Si può configurare il numero degli elementi da conservare nella cronologia con le opzioni:</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Ricorda posizioni</guilabel +></term> + <listitem +><para +>Inserire il numero massimo di posizioni di directory che deve essere memorizzato nella casella superiore. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Ricorda filtri</guilabel +></term> + <listitem +><para +>Inserire qui il numero massimo dei filtri da memorizzare nella casella inferiore. </para +></listitem> + </varlistentry> + +<varlistentry> +<term +>Controllare cosa deve essere memorizzato tra le sessioni</term> +<listitem> +<para +>Per default il <guilabel +>selettore file</guilabel +> è impostato in modo da visualizzare i contenuti della sessione precedente quando viene avviato &kdevelop;. Si può cambiare questo comportamento nel riquadro <guilabel +>Sessione</guilabel +>. </para> + +<note +><para +>Queste impostazioni non hanno effetto se &kdevelop; è stato riavviato automaticamente dal gestore di sessione di &kde;. In questo caso la directory e i filtri visualizzati saranno sempre ripristinati dalla precedente sessione di &kde;. </para +></note> +</listitem> +</varlistentry> + + <varlistentry> + <term +><guilabel +>Ripristina posizione</guilabel +></term> + <listitem> + <para +>Deselezionare questa casella se non si vuole che venga memorizzata la posizione della sessione precedente. </para> + <note +><para +>Se è stata selezionata una delle impostazioni di <link linkend="setup-fileselector-autosync" +>sincronizzazione automatica</link +> la directory visualizzata potrebbe cambiare automaticamente indipendentemente dal fatto che è stata memorizzata dalla precedente sessione. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Ripristina ultimo filtro</guilabel +></term> + <listitem> + <para +>Deselezionare questa casella se non si vuole che vengano memorizzati i filtri usati nella sessione precedente. </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-file-selector --> + +<sect2 id="setup-cpp-generator"> +<title +>Generatore classe C++</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- setup-c++-generator--> + +<sect2 id="setup-formatting"> +<title +>Formattazione</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- setup-formatting--> + +<sect2 id="setup-cpp-parsing"> +<title +>Parsing C++</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- setup-c++-parsing--> + +</sect1 +> <!-- setup-general --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-docu"> +<title +>Configurare la documentazione</title> + +<para +>&kdevelop; comprende un potente strumento che fornisce accesso a vari tipi di documentazione. Ad es. nella modalità IDEAl si troverà la linguetta <guilabel +>Documentazione</guilabel +> nel bordo destro dell'area di lavoro. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="documents-contents.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>La finestra documentazione di &kdevelop; nella modalità IDEAl</phrase +></textobject> + <caption +><para +>La finestra documentazione di &kdevelop; (Modalità IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>&kdevelop; deve aver caricato il plugin <guilabel +>Documentazione</guilabel +> per visualizzare l'albero della documentazione. Vedere la sezione <link linkend="setup-plugins" +>Plugin</link +> per ulteriori informazioni. </para +></note> + +<para +>Si possono impostare i contenuti dell'albero della documentazione selezionando <menuchoice +><guimenu +>Impostazioni</guimenu +> <guimenuitem +>Configura &kdevelop;...</guimenuitem +></menuchoice +>. Apparirà la finestra di dialogo <guilabel +>Configura KDevelop</guilabel +>, dove si potrà selezionare <guilabel +>Documentazione</guilabel +> nei campi a sinistra. </para> + +<para +>La <link linkend="configure-docu-general" +>pagina di configurazione</link +> contiene tre pagine chiamate: </para> + +<simplelist> + <member +><link linkend="setup-docu-general" +>Raccolta documentazione</link +></member> + <member +><link linkend="setup-docu-textsearch" +>Ricerca completa</link +></member> + <member +><link linkend="setup-docu-other" +>Altro</link +></member> +</simplelist> + +<sect2 id="setup-docu-general"> +<title +>Impostare la raccolta della documentazione</title> + +<para +>La configurazione della documentazione è stata suddivisa in varie raccolte, che forniscono accesso ai file della documentazione di un particolare tipo. Queste impostazioni controllano quali voci verranno visualizzate della pagina della documentazione di &kdevelop; chiamata <guilabel +>Contenuti</guilabel +> e le modalità di ricerca e indicizzazione. </para> +<para +>La scheda <guilabel +>Documentazione</guilabel +> fornisce una serie di pagine di configurazione organizzate verticalmente come una pila. Quando si fa clic su un titolo verrà aperta la pagina relativa: </para> +<simplelist> + <member +><link linkend="setup-docu-general-qt" +>Raccolta documentazione &Qt;</link +></member> + <member +><link linkend="setup-docu-general-chm" +>Raccolta documentazione CHM</link +></member> + <member +><link linkend="setup-docu-general-dox" +>Raccolta documentazione Doxygen</link +></member> + <member +><link linkend="setup-docu-general-toc" +>Raccolta documentazione TOC di &kdevelop;</link +></member> + <member +><link linkend="setup-docu-general-devhelp" +>Raccolta documentazione Devhelp</link +></member> + <member +><link linkend="setup-docu-general-custom" +>Raccolta documentazione personalizzata</link +></member> +</simplelist> + +<para id="configure-docu-general"> +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Impostare le raccolte di documentazione</phrase +></textobject> + <caption +><para +>Impostare le raccolte di documentazione </para +></caption> + </mediaobject> +</screenshot> +</para> + +<sect3 id="setup-docu-general-common"> +<title +>Impostazioni comuni</title> + +<para +>Tutte le pagine di configurazione nella scheda <guilabel +>Documentazione</guilabel +> hanno una disposizione comune. Le voci della documentazione disponibili si trovano nella parte sinistra e una serie di pulsanti è presente nella parte destra. </para> + +<variablelist> +<varlistentry> +<term id="setup-docu-buttons" +>Pulsanti per la gestione della documentazione</term> +<listitem> +<para +>Sono disponibili tre pulsanti per gestire i contenuti delle pagine della documentazione: </para> + +<variablelist> + <varlistentry> + <term +><guibutton +>Aggiungi</guibutton +></term> + <listitem> + <para +>Apre la finestra di dialogo <guilabel +>Proprietà del catalogo di documentazione</guilabel +> mostrata sotto dove si può selezionare la posizione della documentazione da aggiungere.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Modifica</guibutton +></term> + <listitem> + <para +>Apre la finestra di dialogo <guilabel +>Proprietà del catalogo di documentazione</guilabel +> mostrata sotto dove si può cambiare la posizione della documentazione selezionata nella lista.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Rimuovi</guibutton +></term> + <listitem> + <para +>Rimuove la documentazione selezionata dalla lista.</para> + <note +><para +>Verranno rimosse solo le voci della documentazione dalla lista. La documentazione vera e propria non verrà modificata, e si dovrà rimuoverla esplicitamente con altre procedure. </para +></note> + </listitem> + </varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-edit.png" format="PNG"/> + </imageobject> + <caption +><para +>Aggiungere o modificare una voce </para +></caption> + </mediaobject> +</screenshot> + +<para +>Il pulsante alla destra del campo <guilabel +>Posizione</guilabel +> apre una finestra di dialogo i cui elementi saranno filtrati in base al tipo specificato nella pagina di configurazione. </para> +<para +>A seconda del tipo di documentazione il campo <guilabel +>Titolo</guilabel +> potrebbe non essere accessibile. </para> +</listitem> +</varlistentry> +<varlistentry> +<term id="setup-docu-columns" +>Struttura della lista di documentazione</term> +<listitem> +<para +>Ogni pagina di configurazione visualizza l'elenco della documentazione in una tabella con quattro colonne: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>TOC</guilabel +></term> + <listitem> + <para +>Marcando questa casella verrà visualizzata la relativa voce nella pagina <guilabel +>Contenuti</guilabel +>. </para> + <note +><para +>Deselezionando la casella <guilabel +>TOC</guilabel +> verranno disabilitate di conseguenza le caselle <guilabel +>Indice</guilabel +> e <guilabel +>Cerca</guilabel +>. Non si possono avere voci di documentazione indicizzate ma non visualizzate. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Indice</guilabel +></term> + <listitem> + <para +>Se questa casella è marcata verrà costruito un indice interno, che fornisce un veloce accesso alla documentazione tramite l'uso delle pagine <guilabel +>Indice</guilabel +> e <guilabel +>Trovatore</guilabel +>. </para> + <note> + <para +>L'indice interno verrà costruito la prima volta che si apre la pagina <guilabel +>Indice</guilabel +>. Questa operazione provocherà dei notevoli rallentamenti, poiché l'indice verrà letto dal disco e messo in cache. </para> + <para +>Tuttavia, le ricerche successive attraverso l'indice useranno questa cache e saranno significativamente più veloci. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Cerca</guilabel +></term> + <listitem> + <para +>Se questa casella è marcata, i contenuti della relativa documentazione saranno inclusi nel percorso di ricerca della pagina <guilabel +>Cerca</guilabel +>. </para> + <note> + <para +>Le ricerche vengono compiute tramite l'applicazione htdig, attraverso un suo indice interno che viene costruito per poter utilizzare il programma. </para> + <para +>Tutti i cambiamenti effettuati nelle caselle <guilabel +>Cerca</guilabel +> avranno effetto sulle ricerche dopo aver ricostruito l'indice nella pagine <guilabel +>Cerca</guilabel +>. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Titolo</guilabel +></term> + <listitem +><para +>Questo è il nome della documentazione visualizzato nella pagina <guilabel +>Contenuti</guilabel +>. </para +></listitem> + </varlistentry> +</variablelist> + +<note +><para +>Le versioni precedenti di &kdevelop; permettevano di selezionare la documentazione a seconda del progetto. Ora questa funzionalità non è più disponibile. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-docu-general-common --> + +<sect3 id="setup-docu-general-qt"> +<title +>Raccolta documentazione &Qt;</title> + +<para +>In questa pagina viene configurata tutta la documentazione &Qt;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare la raccolta di documentazione &Qt;</phrase +></textobject> + <caption +><para +>Configurare la raccolta di documentazione &Qt; </para +></caption> + </mediaobject> +</screenshot> + +<para +>Normalmente &kdevelop; riempirà questa collezione al primo avvio, cercando i file standard <filename +>*.xml</filename +> o <filename +>*.dcf</filename +> nella directory di installazione di &Qt;. La tabella a sinistra elenca i file trovati da &kdevelop; visualizzando il loro titolo. </para> + +<para +>Nel caso di una installazione non standard i file potrebbero non essere visualizzati o potrebbero puntare a posizioni non valide (ad es. ad un'altra installazione di &Qt;). Si possono aggiustare le voci usando i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra della lista. </para> + +<note +><para +>&kdevelop; userà i titoli già forniti dalla documentazione &Qt; installata. Quindi il campo <guilabel +>Titolo</guilabel +> nella finestra di dialogo <guilabel +>Proprietà del catalogo di documentazione</guilabel +> sarà disabilitato. </para +></note> + +<para +>Non tutta la documentazione &Qt; verrà di default visualizzata nella pagina <guilabel +>Contenuti</guilabel +>. Usare la casella <guilabel +>TOC</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +> per selezionare la documentazione da rendere disponibile. </para> + +<para +>Se si desidera includere della documentazione specifica &Qt; nell'indice di ricerca o nella ricerca completa usare le caselle <guilabel +>Indice</guilabel +> e <guilabel +>Cerca</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +>. </para> + +</sect3 +> <!-- setup-docu-general-qt --> + +<sect3 id="setup-docu-general-chm"> +<title +>Configurare la raccolta di documentazione CHM</title> + +<para +>In questa pagina di configurazione si potrà inserire la documentazione in formato CHM di &Microsoft;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-chm.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare la documentazione in formato &Microsoft; CHM</phrase +></textobject> + <caption +><para +>Configurare la documentazione in formato &Microsoft; CHM </para +></caption> + </mediaobject> +</screenshot> + +<para +>Per default questa pagina sarà vuota (come mostrato sotto). Si possono aggiungere nuove voci usando i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra della lista. &kdevelop; filtrerà i file <filename +>*.chm</filename +> presenti nelle directory selezionate con le finestre di dialogo <guibutton +>Aggiungi</guibutton +> e <guibutton +>Modifica</guibutton +>. </para> + +<para +>Per ulteriori informazioni sul formato <filename +>*.chm</filename +> di &Microsoft; consultare ⪚ PHP Documentation - Extended CHM Format all'indirizzo <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 +>Documentazione generata da Doxygen</title> + +<para +>In questa pagina viene configurata tutta la documentazione &API; generata da &doxygen;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-dox.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Configurare la documentazione &API; generata da Doxygen</phrase +></textobject> + <caption +><para +>Configurare la documentazione &API; generata da Doxygen </para +></caption> + </mediaobject> +</screenshot> + +<para +>In breve, una &API; documenta l'interfaccia di alcune funzioni di libreria. Questa documentazione dovrebbe essere prodotta dallo strumento esterno <ulink url="http://www.stack.nl/~dimitri/doxygen/" +>&doxygen;</ulink +>. </para> +<para +>La documentazione generata da &doxygen; è costituita da un insieme di file <filename +>html</filename +>, il cui indice è nella pagina <filename +>index.html</filename +>. Sono anche presenti dei file <filename +>tag</filename +> che contengono collegamenti alla documentazione &API; esistente. &kdevelop; userà il file <filename +>index.html</filename +> e i file <filename +>*.tag</filename +> quando effettuerà le ricerche. </para> +<para +>Esistono alcuni vincoli quando si cerca la documentazione &API;. La directory nella quale risiede il file <filename +>index.html</filename +> deve contenere delle sottodirectory con raccolte separate di documentazione. Ogni sottodirectory deve contenere un file <filename +>.tag</filename +> e una sottodirectory <filename class="directory" +>html</filename +>. </para> +<para +>Un esempio di questa struttura può essere osservato nella directory <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/kdelibs-apidocs</filename +>. </para> + +<note +><para +>Il vecchio formato <ulink url="http://sirtaj.net/projects/kdoc/" +>KDoc</ulink +> non è più supportato. Se si vuole ancora usare questo tipo di documentazione la si può aggiungere alla <link linkend="setup-docu-general-custom" +>Raccolta di documentazione personalizzata</link +>. </para +></note> + +<para +>&kdevelop; riempirà questa lista con i collegamenti alle &API; delle librerie di &kde; fornite nel momento dell'installazione. &kdevelop; troverà questa documentazione se: </para> + +<itemizedlist> + <listitem +><para +>É stata usata l'opzione <option +>--with-kdelibsdoxy-dir</option +> del comando <command +>configure</command +> quando è stato compilato &kdevelop; (vedere il capitolo <link linkend="make-api" +>Come ottenere la documentazione &API; di &kdevelop;</link +>). </para +></listitem> + <listitem +><para +>Il comando <command +>configure</command +> ha trovato automaticamente la documentazione &API; delle librerie di &kde; generata da &doxygen; in una delle posizioni standard. </para +></listitem> + <listitem +><para +>&kdevelop; trova la directory <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/kdelibs-apidocs/</filename +> al primo avvio. </para +></listitem> +</itemizedlist> + +<para +>Se &kdevelop; non trova le &API; delle librerie di &kde; generate da &doxygen; al suo primo avvio la lista <guilabel +>Raccolta documentazione Doxygen</guilabel +> sarà vuota. </para> + +<para +>Si possono aggiungere le voci della documentazione &API; (⪚ dei propri progetti) usando i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra. Se si vuole includerli nell'indice e nella ricerca completa marcare le caselle <guilabel +>Indice</guilabel +> o <guilabel +>Cerca</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +>. </para> + +<note +><para +>&kdevelop; usa il titolo contenuto nel file <filename +>index.html</filename +>, quindi il campo <guilabel +>Titolo</guilabel +> sarà disabilitato. </para +></note> + +<tip> + <para +>Il sistema &kde; fornisce più documentazione &API; di quella delle sole librerie. Queste informazioni aggiuntive sono necessarie se si vuole ⪚ includere il componente &kate; nel proprio programma. Ad esempio per le &API; del componente &kate; si devono compilare e installare le &API; delle librerie di base di &kde; dai <ulink url="http://developer.kde.org/source/index.html" +>sorgenti</ulink +> (usando i comandi <command +>make apidox</command +> e <command +>make install</command +> con i sorgenti di <filename class="directory" +>kdebase</filename +>) e aggiungere una voce nella lista della <guilabel +>Raccolta documentazione Doxygen</guilabel +> come questa: </para> + <screenshot +><mediaobject> + <imageobject> + <imagedata fileref="configure-adddialog-baselibs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Aggiungere una &API; di &kde; nella lista</phrase +></textobject> + <caption +><para +>Aggiungere una &API; di &kde; nella lista </para +></caption> + </mediaobject +></screenshot> + <para +>(Ovviamente si deve sostituire la directory <filename class="directory" +>/home/dev/mykde-system/</filename +> nel campo <guilabel +>Posizione</guilabel +> con il percorso della propria installazione di &kde;). </para> +</tip> + +<note +><para +>Si devono inserire le &API; del progetto corrente in questa <guilabel +>Raccolta di documentazione Doxygen</guilabel +>. Nelle versioni precedenti di &kdevelop; potevano essere visualizzate nell'albero della documentazione a seconda del progetto. Questa funzionalità non è più disponibile. </para +></note> + +</sect3 +> <!-- setup-docu-general-dox --> + +<sect3 id="setup-docu-general-toc"> +<title +>Gestire la documentazione strutturata (file KDevelopTOC)</title> + +<para +>Il componente di &kdevelop; che gestisce la documentazione permette un accesso immediato alla documentazione strutturata, sia locale che remota. Lo si può configurare nella pagina <guilabel +>TOC della documentazione di KDevelop</guilabel +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-toc.png" format="PNG"/> + </imageobject> + <caption +><para +>Fornire documentazione KDevelopTOC </para +></caption> + </mediaobject> +</screenshot> + +<para +>&kdevelop; possiede un insieme di file KDevelopTOC che sono stati automaticamente inseriti nella tabella nel momento dell'installazione. Solo quelli usati più frequentemente verranno marcati per la visualizzazione. Se si vuole consultare ulteriore documentazione, marcare la casella <guilabel +>TOC</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +>. </para> + +<para +>I file KDevelopTOC non possono essere indicizzati perché normalmente puntano a posizioni remote. D'altra parte un file <filename +>.toc</filename +> di questo tipo può avere un indice manuale usando il tag <computeroutput +><index></computeroutput +>. Per questo motivo la casella <guilabel +>Indice</guilabel +> sarà abilitata solo quando &kdevelop; trova un tag <computeroutput +><index></computeroutput +> nel relativo file <filename +>.toc</filename +>. (Per ulteriori dettagli vedere la descrizione della sezione <link linkend="setup-docu-general-toc-files" +>File TOC di &kdevelop;</link +>). </para> +<para +>La casella <guilabel +>Cerca</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +> sarà sempre disabilitata. </para> + +<para +>Si possono aggiungere nuove voci usando i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra della lista. &kdevelop; filtrerà i file <filename +>*.toc</filename +> presenti nelle directory selezionate con le finestre di dialogo <guibutton +>Aggiungi</guibutton +> e <guibutton +>Modifica</guibutton +>. </para> + +<note +><para +>Nelle versioni recenti di &kdevelop; il pulsante <guibutton +>Rimuovi</guibutton +> non modificherà i file <filename +></filename +> sul disco. </para +></note> + +</sect3 +> <!-- setup-docu-general-toc --> + +<sect3 id="setup-docu-general-toc-files"> +<title +>File TOC di &kdevelop;</title> + +<para +>Seguire questa procedura: nell'albero della documentazione individuare una voce nella documentazione &Qt;/&kde; (⪚ <quote +>KDE2 Development Book (kde.org)</quote +>). Fare clic sul simbolo più. Verrà aperto un albero nel quale si potrà navigare in modalità offline tra i diversi capitoli, disposti su diversi livelli. Quando si seleziona uno dei capitoli &kdevelop; tenterà di accedere al file <emphasis +>remoto</emphasis +> della documentazione. </para> + +<para +>Questo meccanismo permette non solo di poter navigare localmente la documentazione remota senza consumare risorse di rete, ma anche fornire allo sviluppatore un accesso facile e strutturato alla documentazione necessaria. Con questi strumenti si può accedere a quasi tutta la documentazione locale o remota anche se il documento originale è stato scritto con una struttura diversa o se questa è assente. Tutto quello che serve è l'accesso ai file o alle parti di file che sono visualizzabili di Konqueror. </para> + +<para +>Un tale accesso strutturato è reso possibile da speciali file che hanno estensione <filename +>.toc</filename +>. Questi file contengono una descrizione strutturata in &XML; del documento a cui si deve accedere. </para> + +<variablelist> +<varlistentry> +<term +>Directory standard dei file TOC di &kdevelop;</term> +<listitem> +<para +>Quando si installa &kdevelop; vengono generalmente inseriti una serie di file <filename +>.toc</filename +> predefiniti nella directory <filename class="directory" +>$KDEDIR/share/apps/kdevdoctreeview/tocs</filename +>. Sono semplici file di testo strutturati, che possono essere esaminati usando un editor di testo o altri strumenti per la visualizzazione del testo. </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 +>Struttura di base dei file TOC di &kdevelop;</title> + <varlistentry> + <term +>intestazione</term> + <listitem> + <simplelist> + <member> + <computeroutput +><!DOCTYPE kdeveloptoc></computeroutput> + </member> + <member> + <computeroutput +><kdeveloptoc></computeroutput> + </member> + <member> + <emphasis +>(titolo)</emphasis> + </member> + <member> + <emphasis +>(indirizzo di base)</emphasis> + </member> + <member> + <emphasis +>(struttura dei contenuti)</emphasis> + </member> + <member> + <emphasis +>(struttura dell'indice)</emphasis> + </member> + <member> + <computeroutput +></kdeveloptoc></computeroutput> + </member> + </simplelist> + <para +>Questa struttura &XML; viene analizzata dal plugin <guilabel +>Documentazione</guilabel +> di &kdevelop; per impostare i contenuti dell'albero della documentazione e guidare l'utente nella navigazione della documentazione. Contiene tutte le informazioni necessarie per visualizzare i titoli e accedere ai contenuti del file di documentazione. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>titolo</term> + <listitem> + <simplelist> + <member +><computeroutput +><title></computeroutput +> <emphasis +>(qualche stringa per il titolo)</emphasis +> <computeroutput +></title></computeroutput +> </member> + </simplelist> + <para +>Questo è il titolo che visualizzerà &kdevelop; nel principale livello dell'albero della documentazione. </para> + <note +><para +>Attualmente il titolo visualizzato non può essere modificato dall'utente. Se si desidera che venga visualizzato un testo diverso si deve cambiare manualmente l'elemento <computeroutput +><title></computeroutput +> del file <filename +>.toc</filename +>. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>indirizzo di base</term> + <listitem> + <simplelist> + <member +><computeroutput +><base href="</computeroutput +> <emphasis +>(&URL; di base del documento)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + </simplelist> + <para +>L'&URL; punta alla posizione dove sono presenti tutti i file della documentazione e sarà inserito come prefisso prima dell'&URL; di ogni sezione. Ad esempio, se si vuole visualizzare della documentazione scaricata da un server remoto si deve solo cambiare l'&URL; <computeroutput +><base></computeroutput +>. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>struttura dei contenuti</term> + <listitem> + <simplelist> + <member +><computeroutput +><tocsect1 name="</computeroutput +> <emphasis +>(titolo della sezione)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; della sezione)</emphasis +> <computeroutput +>"></computeroutput +> </member> + <member +>...</member> + <member +><computeroutput +><tocsectn name="</computeroutput +> <emphasis +>(titolo della sezione)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; della sezione)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member +>...</member> + <member> + <computeroutput +></tocsect1></computeroutput> + </member> + </simplelist> + <para +>Tutte le ulteriori informazioni sull'accesso e la navigazione sono memorizzate in una serie di coppie <computeroutput +><tocsecti></computeroutput +> ... <computeroutput +></tocsecti></computeroutput +>. Ogni elemento i-esimo individua un sottolivello annidato, fino all'elemento n-esimo che corrisponde alla sezione visualizzata. </para> + <para +>Ogni elemento <computeroutput +><tocsecti></computeroutput +> deve avere un attributo associato <computeroutput +>name="xxx"</computeroutput +> (dove "xxx" identifica la stringa del titolo). Questo nome verrà visualizzato come titolo del livello nell'albero della documentazione. </para> + <para +>Potrebbe esserci un attributo <computeroutput +>url=""</computeroutput +> associato ad ogni livello annidato <emphasis +>i-esimo</emphasis +>. Quando l'utente fa clic sul titolo di una sezione &kdevelop; accede al file nella posizione ottenuta dalla combinazione dell'&URL; di base e da questo &URL; della sezione. </para> + <para +>L'elemento <computeroutput +><tocsectn/></computeroutput +> deve avere un attributo <computeroutput +>url=""</computeroutput +>. Questo elemento rappresenta l'ultimo elemento annidato e non appare in coppia con l'elemento di chiusura ma viene immediatamente chiuso da <computeroutput +>/</computeroutput +> prima della parentesi <computeroutput +>></computeroutput +>. </para> + <note +><para +>Tutti gli indirizzi combinati dagli &URL; di base e della sezione devono puntare a qualche file di testo visualizzabile. Generalmente sarà un file strutturato HTML. Si può fare un collegamento ai punti di ancora all'interno del file HTML usando la notazione standard # del formato: <filename +>/url-base/url-sezione#ancora</filename +> </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>struttura dell'indice</term> + <listitem> + <simplelist> + <member> + <computeroutput +><index></computeroutput> + </member> + <member +><computeroutput +><entry name="</computeroutput +> <emphasis +>(titolo dell'indice)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; dell'indice della sezione)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member> + <computeroutput +></index></computeroutput> + </member> + </simplelist> + <para +>Index è una lista di voci di indice - costituite da una coppia di titolo e &URL;. Questo elemento non è obbligatorio. </para> + </listitem> + </varlistentry> +</variablelist> +<!-- FIXME: End --> + +</sect3 +> <!-- setup-docu-general-toc-files --> + +<sect3 id="setup-docu-general-devhelp"> +<title +>Documentazione DevHelp</title> + +<para +>La documentazione DevHelp fornisce un sistema alternativo per accedere in modo strutturato alla documentazione. Vengono usati dei file con estensione <filename +>.devhelp</filename +> che contengono una tavola dei contenuti, in modo simile ai <link linkend="setup-docu-general-toc-files" +>file TOC di &kdevelop;</link +>. Sono usati per accedere alla documentazione del desktop GNOME 2. </para> +<para +>Si può controllare quali file devono essere disponibili nella pagina di configurazione <guilabel +>Raccolta documentazione DevHelp</guilabel +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-devhelp.png" format="PNG"/> + </imageobject> + <caption +><para +>Fornire documentazione DevHelp </para +></caption> + </mediaobject> +</screenshot> + +<para +>Originariamente i file DevHelp erano disponibili sul sito <ulink url="http://lidn.sourceforge.net/" +>LiDN</ulink +>, ma ora sembra non essere più mantenuto. La documentazione più recente di DevHelp è disponibile nel sito <ulink url="http://htmlhelp.berlios.de/books/devhelp.php" +>DevHelp Books Download</ulink +>. </para> + +<para +>Quando si installa &kdevelop; verranno cercati tutti i file <filename +>.devhelp</filename +> in posizioni standard, come le sottodirectory di <filename class="directory" +>/opt/gnome/share</filename +>. Inizialmente non saranno visualizzati; se si vuole consultarli marcare la casella <guilabel +>TOC</guilabel +> nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +>. </para> + +<para +>Si possono aggiungere nuove voci usando i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra della lista. &kdevelop; filtrerà i file <filename +>*.toc</filename +> presenti nelle directory selezionate con le finestre di dialogo <guibutton +>Aggiungi</guibutton +> e <guibutton +>Modifica</guibutton +>. </para> + +</sect3 +> <!-- setup-docu-general-devhelp --> + +<sect3 id="setup-docu-general-custom"> +<title +>Configurare la raccolta di documentazione personalizzata</title> + +<para +>In questa raccolta può essere usata per quasi tutti i file di documentazione, a patto che possano essere visualizzati da qualche plugin di &konqueror;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-custom.png" format="PNG"/> + </imageobject> + <caption +><para +>Inserire documentazione personalizzata </para +></caption> + </mediaobject> +</screenshot> + +<para +>Generalmente questa raccolta è vuota al primo avvio di &kdevelop;. Qui è stato inserito un file di esempio per mostrare la struttura degli elementi. </para> +<para +>La gestione è semplice: usare i <link linkend="setup-docu-buttons" +>pulsanti</link +> a destra della lista per aggiungere, modificare o rimuovere la documentazione. &kdevelop; non filtrerà i contenuti delle finestre di dialogo associate ai pulsanti <guibutton +>Aggiungi</guibutton +> e <guibutton +>Rimuovi</guibutton +>. </para> + +<para +>Si devono esplicitamente selezionare le voci per la visualizzazione: marcare la casella <guilabel +>TOC</guilabel +> della voce nella <link linkend="setup-docu-columns" +>tabella di configurazione</link +>. </para> + +<note +><para +>La documentazione personalizzata non può essere indicizzata o cercata, quindi le caselle <guilabel +>Indice</guilabel +> e <guilabel +>Cerca</guilabel +> non hanno effetto. </para +></note> + +</sect3 +> <!--- setup-docu-general-custom --> + +</sect2 +> <!-- setup-docu-general --> + +<sect2 id="setup-docu-textsearch"> +<title +>Impostare gli indici di ricerca del testo</title> + +<para +>(... da scrivere ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-doctree-textsearch.png" format="PNG"/> + </imageobject> + <caption +><para +>Impostare gli indici di ricerca del testo </para +></caption> + </mediaobject> +</screenshot> + +</sect2 +> <!-- setup-docu-textsearch --> + +<sect2 id="setup-docu-other"> +<title +>Collezione documentazione Qt</title> + +<para +>(... da scrivere ...) </para> + +</sect2 +> <!-- setup-docu-other --> + +</sect1 +> <!-- setup-docu --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-advanced"> +<title +>Configurazione avanzata</title> + +<para +>(... da scrivere ...) </para> + +<sect2 id="setup-plugins"> +<title +>Plugin</title> + +<para +>(... da scrivere ...) </para> +</sect2 +> <!-- setup-plugins --> + +</sect1 +> <!-- setup-advanced --> + +</chapter +> <!-- setup --> diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/survey-manual.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/survey-manual.docbook new file mode 100644 index 00000000000..a4282239924 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/survey-manual.docbook @@ -0,0 +1,329 @@ +<chapter id="survey-manual"> +<title +>Contenuto di questo manuale</title> + +<para +>Questo manuale utente descrive l'uso dell'ambiente di sviluppo integrato (IDE) &kdevelop; &kdevrelease;. Non è un manuale di programmazione e non descrive nel dettaglio il processo di sviluppo, ma fornisce una guida nella gestione dell'IDE. </para> +<para +>Si troveranno informazioni sui seguenti argomenti: </para> +<variablelist> +<varlistentry> +<term +><link linkend="getting-started" +>Iniziare ad usare &kdevelop;</link +> </term> +<listitem> +<para +>una veloce introduzione a questo &IDE; e all'utilizzo dei progetti.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="kdevelop-survey" +>Caratteristiche di &kdevelop;</link +></term> +<listitem> +<para +>prosegue il capitolo precedente descrivendo l'aspetto di &kdevelop; e i suoi componenti.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="setup" +>Configurare &kdevelop;</link +></term> +<listitem> +<para +>mostra come si può adattare l'&IDE; alle proprie esigenze.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="applicationwizard" +>Primi passi: la procedura guidata per le applicazioni</link +></term> +<listitem> +<para +>Descrive come impostare un nuovo progetto utilizzando la procedura guidata</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="editing" +>Strumenti di editing</link +></term> +<listitem> +<para +>tutto il necessario per scrivere i file sorgente: dall'uso dell'editor e la ricerca del testo localmente o globalmente fino all'integrazione nel progetto di nuovi file e classi.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="file-browsers" +>Il browser dei file</link +></term> +<listitem> +<para +>illustra vari strumenti per esaminare la struttura del proprio progetto e indica come accedere ai file con cui si vuole lavorare.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="class-browsers" +>Il browser delle classi</link +></term> +<listitem> +<para +>descrive uno dei più potenti strumenti di che permette di navigare attraverso le dipendenze delle classi e creare classi e metodi. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="documentation" +>Documentazione</link +></term> +<listitem> +<para +>mostra come accedere alla ricca documentazione incorporata di &kdevelop;, indica come creare la documentazione del proprio progetto, sia la concisa e potente documentazione delle &API; che fornisce una panoramica di tutti i propri file sorgente sia la documentazione basata su docbook.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="project-management" +>Compilazione e gestione dei progetti</link +></term> +<listitem> +<para +>si occupa della creazione e della gestione dei progetti, descrivendo sia autoconf e automake che l'impostazione di Makefile personalizzati; insegna come usare il compilatore o le opzioni di make per adattare l'applicazione alle proprie esigenze.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="adv-build-management" +>Gestione avanzata della compilazione</link +></term> +<listitem> +<para +>illustra come ottenere compilazioni multiple, come compilare per diverse piattaforme e come costruire un sistema embedded usando le librerie <application +>Qt/embedded</application +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="debugger" +>L'interfaccia del debugger</link +></term> +<listitem> +<para +>descrive come usare l'interfaccia integrata del debugger <application +>gdb</application +> in modo da scovare i bug senza dover uscire da .</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 &kdevelop;. + </para +></listitem> + <listitem +><para> + <link linkend="php" +>PHP</link +> — an overview of how to create PHP-based HTML applications in &kdevelop;. + </para +></listitem +>//--> + +<varlistentry> +<term +><link linkend="cvs" +>Usare CVS</link +></term> +<listitem> +<para +>descrive la manutenzione del proprio progetto con il sistema CVS, necessario se molti sviluppatori lavorano allo stesso progetto.</para> +</listitem> +</varlistentry> +</variablelist> + +<!-- + <listitem +><para> + <link linkend="kdevelop-scripting" +>Scripting &kdevelop;</link +> — describes how to add scripts to automate &kdevelop;. + </para +></listitem> + + + <listitem +><para> + Some commonly used information has been put into the <emphasis +>appendix</emphasis +>. Amongst others this consists of: +--> +<para +>Alcuni argomenti comuni sono stati inseriti nell'<emphasis +>appendice</emphasis +>, che comprende: </para> + +<variablelist> +<varlistentry> +<term +><link linkend="kdevelop-install" +>Installare &kdevelop;</link +></term> +<listitem> +<para +>viene indicato dove ottenere &kdevelop; e come farlo funzionare.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<varlistentry> +<term +><link linkend="nutshell" +>In poche parole — trucchi e suggerimenti</link +></term> +<listitem> +<para +>un veloce riferimento ai comandi e alle azioni più usate, e una breve guida per risolvere i problemi comuni quando si lavora con &kdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="unixdev" +>Sviluppo su &UNIX;</link +></term> +<listitem> +<para +>una panoramica storica sullo sviluppo di applicazioni su &UNIX;, sui principali strumenti necessari e sul perché si ha bisogno di un &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 &kdevelop; without resorting to the mouse. + </para +></listitem> +--> + +<varlistentry> +<term +><link linkend="app-files" +>File di configurazione usati da &kdevelop;</link +></term> +<listitem +><para +>Elenca i file usati da &kdevelop; per salvare la propria configurazione interna. Sono utili se succede un inconveniente durante la fase di setup.</para> +</listitem> +</varlistentry> + +<varlistentry +><term> +<link linkend="plugin-tools" +>Plugin</link> +</term +><listitem +><para +>Elenca gli strumenti che possono essere usati per adattare &kdevelop; alle proprie esigenze. </para +></listitem +></varlistentry> + +<!-- + <listitem +><para> + <link linkend="plugin-tools" +>Plugin tools</link +> — provides you with an overview of the parts which make up &kdevelop; 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" +>Esempi delle modalità dell'interfaccia utente </link> +</term +><listitem +><para +>Mostra le modalità dell'interfaccia utente </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-misc-info" +>Ulteriori informazioni </link +> </term +><listitem +><para +>Ottenere informazioni, segnalare bug, ecc. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-changelog" +>Changelog </link> +</term +><listitem +><para +>Mostra la cronologia di questa documentazione </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-it/docs/kdevelop/kdevelop/tutorial-debug-tree.png b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-debug-tree.png Binary files differnew file mode 100644 index 00000000000..69b79eecfc0 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-debug-tree.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-new2.png b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-new2.png Binary files differnew file mode 100644 index 00000000000..614818182c4 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-new2.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-options.png b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-options.png Binary files differnew file mode 100644 index 00000000000..919c3ddbc06 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-hello-options.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-new-project.png b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-new-project.png Binary files differnew file mode 100644 index 00000000000..0719b64f9c4 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/tutorial-new-project.png diff --git a/tde-i18n-it/docs/kdevelop/kdevelop/unixdev.docbook b/tde-i18n-it/docs/kdevelop/kdevelop/unixdev.docbook new file mode 100644 index 00000000000..20c41454b78 --- /dev/null +++ b/tde-i18n-it/docs/kdevelop/kdevelop/unixdev.docbook @@ -0,0 +1,637 @@ +<appendix id="unixdev"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Sviluppo su &UNIX;</title> + +<indexterm zone="unixdev" +><primary +>sviluppo</primary +></indexterm> +<indexterm zone="unixdev"> + <primary +>&UNIX;</primary> + <secondary +>sviluppo</secondary +></indexterm> + +<sect1 id="history"> +<title +>Alcune note storiche</title> + +<indexterm zone="history" +><primary +>storia</primary +></indexterm> +<indexterm zone="history" +><primary +>linguaggi di scripting</primary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>storia</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>pipe</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>shell</secondary +></indexterm> +<indexterm zone="history"> + <primary +>shell</primary> + <secondary +>&UNIX;</secondary +></indexterm> + +<para +>Fin dall'inizio &UNIX; ha mantenuto due paradigmi di sviluppo molto diversi tra loro. Uno è costituito dal mondo dei <emphasis +>linguaggi di programmazione</emphasis +>, dove il codice sorgente è tradotto in linguaggio macchina da un programma di traduzione, solitamente un <emphasis +>compilatore</emphasis +> o un <emphasis +>interprete</emphasis +>. Il linguaggio di programmazione C ne è un esempio. &UNIX; fu il primo kernel di sistema operativo ad essere scritto interamente in un linguaggio di alto livello, invece del linguaggio assembler, fortemente legato alla macchina, che era comunemente usato prima di allora. (Di fatto, il linguaggio C venne addirittura inventato per scrivere il kernel &UNIX; e i programmi associati su un computer DEC PDP-11). </para> +<para +>L'altro paradigma è costituito dai <emphasis +>linguaggi di scripting</emphasis +>. Si è evoluto con l'invenzione della shell &UNIX; che era l'interfaccia utente del sistema operativo — e allo stesso tempo un linguaggio di programmazione ad un livello molto alto. Uno script della shell è formato da un insieme di piccoli programmi di utilità come ⪚ <command +>grep</command +>, <command +>sed</command +> o <command +>find</command +>. Ognuno di essi è progettato per un compito ben definito. Il trucco consiste nel fatto che ogni programma di questo tipo può essere connesso ad un altro attraverso un semplice meccanismo di trasferimento chiamato <emphasis +>pipe</emphasis +>, che direziona l'output di una utility nell'input di un'altra successiva. Questo lo rende uno strumento di programmazione molto potente e altamente flessibile. </para> +<para +>Col passare del tempo si sono evoluti entrambi gli ambiti. Mentre il C viene ancora usato principalmente come un linguaggio di programmazione di sistema, il C++, una variante del C arricchito dell'orientamento agli oggetti e della programmazione generica, ha trovato negli anni '90 il suo posto nello sviluppo di applicazioni complesse. Esistono numerosi altri linguaggi di programmazione e anche quelli più antichi hanno conservato il loro impiego — il FORTRAN77 e Ada ⪚ hanno ancora il loro punto di forza nelle applicazioni numeriche. </para> +</sect1 +> <!-- history --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-scripting-languages"> +<title +>Linguaggi di scripting contemporanei</title> +<para +>Nell'area dello scripting, c'è stato un allontanamento dalla shell, che soffriva di problemi di portabilità, verso linguaggi che unificavano tutte le funzionalità necessarie nelle loro librerie standard e se necessario potevano comunque interfacciarsi verso l'esterno attraverso le pipe. </para> +<para +>Tutti questi linguaggi di scripting avevano in comune il fatto che erano ampiamente portabili attraverso le varianti di &UNIX;, Microsoft &Windows;, &MacOS; e anche VMS. Inoltre tutti disponevano di implementazioni che erano liberamente distribuibili. </para> + +<sect2 id="unixdev-SL-Perl"> +<title +>&perl;</title> + +<indexterm zone="unixdev-SL-Perl" +><primary +>Perl</primary +></indexterm> +<indexterm zone="unixdev-SL-Perl"> + <primary +>linguaggi di scripting</primary> + <secondary +>Perl</secondary +></indexterm> + +<para +>Il <ulink url="http://www.perl.com" +>&perl;</ulink +> divenne popolare come elaboratore di testo e linguaggio di amministrazione di sistema. All'inizio del World Wide Web, gli script CGI in &perl; erano largamente usati per creare pagine Web dinamiche connesse ai database. Oggi questo metodo è stato rimpiazzato prevalentemente dal plugin <command +>mod_perl</command +> del server web &apache;. Tra i punti di forza del &perl; c'è il suo supporto incorporato per le espressioni regolari avanzate e il suo ricco archivio di moduli liberamente distribuibili. </para> +<para +>Per ulteriori informazioni vedere il sito <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 +>linguaggi di scripting</primary> + <secondary +>Python</secondary +></indexterm> + +<para +>Il <ulink url="http://www.python.org" +>&python;</ulink +> spicca per l'eleganza del suo sistema di classi e la facilità e flessibilità con la quale le librerie esterne possono essere incapsulate in modo da farle apparire come classi e funzioni standard di &python;. In contrasto con il &perl;, &python; ha incluso delle &API; chiare e concise che lo rendono un linguaggio di prima qualità per rendere scriptabili i programmi C e C++. </para> +</sect2 +> <!-- unixdev-SL-Python --> + +<sect2 id="unixdev-SL-PHP"> +<title +>PHP</title> + +<indexterm zone="unixdev-SL-PHP" +><primary +>PHP</primary +></indexterm> +<indexterm zone="unixdev-SL-PHP"> + <primary +>linguaggi di scripting</primary> + <secondary +>PHP</secondary +></indexterm> + +<para +><ulink url="http://www.php.net" +>&php;</ulink +> fu inventato come un linguaggio includibile nelle pagine &HTML;, di conseguenza ha il suo principale utilizzo nel trasmettere contenuti dinamici nel web. </para> +</sect2 +> <!-- unixdev-SL-PHP --> +</sect1 +> <!-- unixdev-scripting-languages --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<sect1 id="unixdev-hl-script"> +<title +>Scripting di alto livello</title> + +<para +>Le applicazioni &UNIX; di alto livello generalmente non sono veloci e flessibili come i tradizionali script di shell. Questo vale soprattutto per le interfacce grafiche (&GUI;) come ⪚ &kde;. </para> +<para +>Sono stati fatti tentativi per creare meccanismi simili operanti ad alto livello come <link linkend="unixdev-corba" +>CORBA</link +> e <link linkend="unixdev-dcop" +>&DCOP;</link +> nell'ambiente &kde;. </para> + +<sect2 id="unixdev-corba"> +<title +>Il protocollo CORBA</title> + +<indexterm zone="unixdev-corba" +><primary +>CORBA</primary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>linguaggi di scripting</primary> + <secondary +>CORBA</secondary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>comunicazione</primary> + <secondary +>CORBA</secondary +></indexterm> + +<para +><ulink url="http://www.omg.org/gettingstarted/corbafaq.htm" +>CORBA</ulink +> (<emphasis +>Common Object Request Broker Architecture</emphasis +>) permette alle applicazioni di operare assieme attraverso una rete. È stato ideato dal comitato <ulink url="http://www.omg.org" +>OMG</ulink +> (Object Management Group). </para> +<para +>I programmi basati su CORBA comunicano usando il protocollo standard IIOP. Sono disponibili implementazioni di IIOP per molti sistemi operativi, linguaggi di programmazione e reti, che rendono questo protocollo molto portabile. </para> +<para +>Il principale svantaggio è costituito dalla lentezza, che può essere accettabile in un network ma diventa un vero e proprio ostacolo per le comunicazioni in un ambiente costituito da un singolo computer come &kde;. </para> + +</sect2 +> <!-- unixdev-corba --> + +<sect2 id="unixdev-dcop"> +<title +>L'interfaccia &DCOP;</title> + +<indexterm zone="unixdev-dcop" +><primary +>DCOP</primary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>linguaggi di scripting</primary> + <secondary +>DCOP</secondary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>comunicazione</primary> + <secondary +>DCOP</secondary +></indexterm> + +<para +>Un'altra evoluzione dello scripting è il protocollo <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +><emphasis +>DCOP</emphasis +></ulink +> progettato per superare le limitazioni di CORBA e usato per le comunicazioni tra applicazioni &kde;. </para> +<para +>&DCOP; significa <emphasis +>Desktop Communication Protocol</emphasis +> ed è implementato come un semplice meccanismo IPC/RPC costruito per operare con i socket. In pratica esso fornisce funzioni simili ai tradizionali meccanismi pipe di &UNIX;. </para> +<para +>Lo scripting shell tradizionale è basato completamente su piccoli programmi che sono progettati per lavorare su basi strettamente testuali. &DCOP; permette a programmi grafici complicati di comunicare con altri in modo simile. Questo permette ⪚ ad un programma &kde; di inviare messaggi ad un altro programma &kde;, oppure ricevere dati da esso per vari scopi. </para> +<para +>Sono comunque presenti alcuni svantaggi: per usare &DCOP; un programma deve essere progettato per contenere una speciale interfaccia &DCOP;, e il processo di comunicazione è piuttosto lento (sebbene sia molto più veloce di CORBA). Tuttavia rende disponibile molto del potere e della flessibilità tipici dello scripting &UNIX; a programmi di alto livello basati sull'interfaccia grafica. </para> +<para +>Per ulteriori informazioni, vedere il documento <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +>DCOP: Desktop COmmunications Protocol</ulink +> o la documentazione di riferimento alle &API; della <ulink url="developer.kde.org/documentation/library/cvs-api/dcop/html/index.html" +>libreria &DCOP;</ulink +> di &kde;. </para> +</sect2 +> <!-- unixdev-dcop --> + +</sect1 +> <!-- unixdev-hl-script --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-buildsystems"> +<title +>Sistemi di compilazione</title> + +<para +>Salvo i casi semplici il proprio progetto consisterà di molti blocchi di codice sorgente collocati in diversi file, in modo da semplificare da manutenzione. Per farlo funzionare è necessario tradurre questo codice in poche unità di linguaggio macchina in un formato appropriato che permetta al sistema operativo di caricare ed eseguire il programma. </para> +<para +>I principali strumenti necessari sono: <itemizedlist> + <listitem +><para +>un <emphasis +>editor di testi</emphasis +> per scrivere i file sorgente, </para +></listitem> + <listitem +><para +>un programma di traduzione, normalmente un <emphasis +>compilatore</emphasis +>, per convertire il codice sorgente in file oggetto, </para +></listitem> + <listitem +><para +>un <emphasis +>librarian</emphasis +> che raccoglie i file oggetto in librerie per poterli riutilizzare facilmente senza la necessità di ricompilare, </para +></listitem> + <listitem +><para +>un <emphasis +>linker</emphasis +> che riunisce i vari file oggetto e le librerie in un eseguibile, </para +></listitem> + <listitem +><para +>un <emphasis +>sistema make</emphasis +> che fornisce i mezzi per gestire tutte queste cose e — da non dimenticare </para +></listitem> + <listitem +><para +>un <emphasis +>debugger</emphasis +> per (si spera) trovare tutti gli errori nel programma e altri strumenti di diagnosi. </para +></listitem> +</itemizedlist> +</para> + +<para +>Il processo di compilazione può diventare laborioso quando si lavora ad un grande progetto che può contenere anche centinaia di file sorgente. Quando si vogliono modificare alcuni di questi file non è opportuno ricompilare tutto il progetto, ma solo i file interessati. Generalmente non è immediato capire quali file debbano essere ricompilati. </para> +<para +>Ad esempio, quando si modifica il prototipo di una funzione in un file header si devono ricompilare tutti i file che lo includono. Nel caso di un grande progetto si possono facilmente dimenticare alcuni file che devono essere ricompilati. Quindi è necessario un qualche sistema automatico. </para> + +<sect2 id="unixdev-buildsystems-make"> +<title +>Il 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 +>regola</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>ricompilazioni</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>target</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>dipendenze</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>comandi</primary +></indexterm> + +<para +>Uno strumento che si occupa della ricompilazione è <command +>make</command +>. Esso mantiene la traccia di tutto il lavoro usando un insieme di <emphasis +>regole</emphasis +> che descrivono cosa fare nel caso vengano cambiate alcune parti di informazione (normalmente un file sorgente o oggetto). Tutte le regole che appartengono a un certo progetto sono conservate in un file chiamato <filename +>Makefile</filename +> che è analizzato da <command +>make</command +> ogni volta che si vuole aggiornare il proprio lavoro. </para> +<para +>Ogni regola consiste di diversi blocchi: <itemizedlist> + <listitem +><para +>un <emphasis +>target</emphasis +>, cioè il file che deve essere compilato </para +></listitem> + <listitem +><para +>un insieme di <emphasis +>dipendenze</emphasis +>, fondamentalmente il nome dei file dai quali dipende il target (ad esempio se il target è un file oggetto che deve essere costruito la dipendenza sarà il nome del file sorgente) e </para +></listitem> + <listitem +><para +>i <emphasis +>comandi</emphasis +> che devono essere eseguiti per costruire il target (es. compilarlo o collegare vari file oggetto per costruire il file eseguibile). </para +></listitem> +</itemizedlist> +</para> +<para +>Sostanzialmente il comando <command +>make</command +> leggerà le regole una per una, controllando ogni file contenuto nella lista delle dipendenze di un determinato target. Se qualcuno di questi file è stato modificato verrà ricostruito il target usando i comandi elencati nella regola. </para> +<para +>Ci sono diversi sistemi per controllare questo processo di compilazione e un <filename +>Makefile</filename +> può diventare molto complesso. Si raccomanda di abituarsi alla sintassi di <command +>make</command +>: anche se non lo si usa direttamente può essere utile comprendere le nozioni fondamentali del sistema di compilazione. Vedere il <ulink url="info://make/Top" +> <citetitle +>Manuale di GNU Make</citetitle +></ulink +> per maggiori informazioni. </para> +<para +>Per maggiori dettagli relativi a &kdevelop; vedere il capitolo <link linkend="project-management" +>Compilazione e gestione dei progetti</link +> di questo manuale. </para> +<para +>Esistono diversi tutorial disponibili, vedere i <link linkend="automake-references" +>riferimenti</link +> nel capitolo riguardante la compilazione e la gestione dei progetti. </para> +</sect2 +> <!-- unixdev-buildsystems-make --> + +</sect1 +> <!-- unixdev-buildsystems --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-guidevelopment"> +<title +>Sviluppo di &GUI;</title> + +<indexterm zone="unixdev-guidevelopment"> + <primary +>GUI</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>interfaccia utente grafica</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>interfaccia utente</primary> + <secondary +>GUI</secondary +></indexterm> + +<para +>In aggiunta alla logica e alle librerie di un programma gli sviluppatori devono anche creare una interfaccia utente facile da usare che sia intuitiva e funzionale. Tuttavia molti programmatori hanno una scarsa preparazione nello sviluppo di &GUI;, che spesso vengono progettate male. </para> +<para +>Attraverso gli anni si sono evoluti alcuni principi di progettazione comuni. Si raccomanda caldamente di seguirli, in modo da costruire interfacce utente con un aspetto uniforme che verranno apprezzate dagli utenti. </para> +<para +>Per lo sviluppo di &GUI; in &kde; è disponibile una guida allo stile che si può trovare all'indirizzo <ulink url="http://developer.kde.org/documentation/standards/kde/style/basics/index.html" +> &kde; User Interface Guidelines</ulink +> della pagina Developer's Corner di &kde;. </para> +<para +><ulink url="http://axp16.iie.org.mx/Monitor/v01n03/ar_ihc2.htm" +>Qui</ulink +> è disponibile una breve introduzione ai principi guida più usati nella progettazione di &GUI;. </para> + +</sect1 +> <!-- unixdev-guidevelopment --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-ide"> +<title +>Integrare concetti e strumenti – l'IDE</title> + +<indexterm zone="unixdev-ide"> + <primary +>IDE</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>ambiente di sviluppo integrato</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>sviluppo</primary> + <secondary +>IDE</secondary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>ambiente</primary> + <secondary +>IDE</secondary +></indexterm> + +<para +>Per quasi tutte le fasi della programmazione — pianificazione, modifica e gestione dei file, compilazione, debug e documentazione sono disponibili diversi strumenti. Tuttavia quando la complessità di un progetto aumenta il processo di programmazione tende a diventare scomodo. </para> +<para +>La progettazione, la compilazione e il debug di un programma sono attività molto ripetitive. Si può risparmiare molto lavoro attraverso l'uso di modelli e script e utilizzando strumenti facilmente disponibili e capaci di comunicare tra loro attraverso un'interfaccia utente comune. </para> +<para +>Ad esempio— non sarebbe pratico se un debugger potesse aprire il file sorgente in un editor e posizionare il cursore nella posizione in cui viene trovato il bug? </para> +<para +>A questo scopo vennero ideati gli <emphasis +>Ambienti di sviluppo integrato Integrated Development Environments, (&IDE;)</emphasis +>. Un &IDE; integra in un singolo ambiente tutti i modelli, gli strumenti e gli script necessari al processo di sviluppo. </para> +<para +>&kdevelop; è un &IDE; per la piattaforma &kde;. Esso fornisce una vasta gamma di strumenti che semplificano lo sviluppo di programmi e la loro manutenzione, anche per diversi linguaggi di programmazione e differenti piattaforme. </para> + +<sect2 id="unixdev-ide-kdevelop"> +<title +>Caratteristiche di base di &kdevelop; &kdevrelease;</title> + +<indexterm zone="unixdev-ide-kdevelop"> + <primary +>&kdevelop;</primary> + <secondary +>caratteristiche</secondary +></indexterm> +<indexterm zone="unixdev-ide-kdevelop"> + <primary +>caratteristiche</primary +></indexterm> + +<!-- ### copied from web page, needs to be updated --> + +<itemizedlist> + <listitem> + <para +>Gestisce tutti gli <emphasis +>strumenti di sviluppo</emphasis +> necessari per la programmazione in C++, come il compilatore, il linker, il debugger e il sistema di compilazione.</para> + </listitem> + <listitem> + <para +>Fornisce una <emphasis +>procedura guidata</emphasis +> che genera applicazioni di esempio complete e pronte ad essere eseguite.</para> + </listitem> + <listitem> + <para +>Permette all'utente di selezionare un <emphasis +>editor integrato</emphasis +> basato sull'editor di &kde; &kwrite;, sul QEditor di Trolltech o su altri.</para> + </listitem> + <listitem> + <para +>Fornisce un <emphasis +>generatore di classi</emphasis +>, per creare nuove classi e integrarle nel progetto corrente.</para> + </listitem> + <listitem> + <para +><emphasis +>Gestisce i file</emphasis +> dei sorgenti, degli header, della documentazione, ecc. da includere nel progetto.</para> + </listitem> + <listitem> + <para +>Assiste nella <emphasis +>creazione dei manuali utente</emphasis +> delle applicazioni scritte con gli strumenti di &kde;.</para> + </listitem> + <listitem> + <para +>Permette di scrivere la <emphasis +>documentazione &API;</emphasis +> in &HTML; delle classi del progetto con riferimenti incrociati alle librerie usate.</para> + </listitem> + <listitem> + <para +><emphasis +>Supporta l'internazionalizzazione</emphasis +>, che permette ai traduttori di aggiungere in modo semplice il loro linguaggio ad un progetto, includendo il supporto per &kbabel;.</para> + </listitem> + <listitem> + <para +>Supporta la gestione di un progetto attraverso un <emphasis +>versioning system</emphasis +> (⪚ &CVS;) fornendo un frontend facile da usare per le funzioni più importanti.</para> + </listitem> + <listitem> + <para +>Include un frontend integrato per il <emphasis +>debugger</emphasis +>.</para> + </listitem> + <listitem> + <para +>Fornisce un emulatore integrato di <emphasis +>shell</emphasis +>.</para> + </listitem> + <listitem> + <para +>Fornisce <emphasis +>l'evidenziazione della sintassi</emphasis +> nel codice sorgente.</para> + </listitem> + <listitem> + <para +>Effettua il <emphasis +>completamento automatico del codice</emphasis +> per le variabili di classe, i metodi, gli argomenti di funzione e altro.</para> + </listitem> + <listitem> + <para +>Sono presenti vari <emphasis +>modelli per la creazione di vari progetti</emphasis +> (moduli del &kcontrol;, applet di &kicker; (panel), KIOSlaves, plugin di &konqueror; e stili del desktop).</para> + </listitem> + <listitem> + <para +>Possiede quattro <emphasis +>viste ad albero</emphasis +> per passare velocemente attraverso file sorgente, file header, classi e documentazione, evitando la necessità di un gestore file esterno.</para> + </listitem> + <listitem> + <para +><emphasis +>Supporta la cross-compilazione</emphasis +>, con la possibilità di specificare diversi compilatori, opzioni, architetture di destinazione, ecc.</para> + </listitem> + <listitem> + <para +>Supporta i progetti <emphasis +>Qt/Embedded</emphasis +> (come Zaurus e iPAQ)</para> + </listitem> + <listitem> + <para +>Include <emphasis +>vari programmi</emphasis +> necessari allo sviluppo che possono essere aggiunti al menu <guimenuitem +>Strumenti</guimenuitem +> a seconda delle proprie necessità.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- unixdev-ide-kdevelop --> + +</sect1 +> <!-- unixdev-ide --> + +</appendix +> <!-- unixdev --> + |