diff options
Diffstat (limited to 'tde-i18n-ru/docs/kdevelop')
40 files changed, 29084 insertions, 0 deletions
diff --git a/tde-i18n-ru/docs/kdevelop/Makefile.am b/tde-i18n-ru/docs/kdevelop/Makefile.am new file mode 100644 index 00000000000..e8ff7c7b1b8 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = ru +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-ru/docs/kdevelop/Makefile.in b/tde-i18n-ru/docs/kdevelop/Makefile.in new file mode 100644 index 00000000000..aaf2006f4b5 --- /dev/null +++ b/tde-i18n-ru/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 = ru +#>- 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-ru/docs/kdevelop/kde_app_devel/Makefile.am b/tde-i18n-ru/docs/kdevelop/kde_app_devel/Makefile.am new file mode 100644 index 00000000000..e8ff7c7b1b8 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kde_app_devel/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = ru +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-ru/docs/kdevelop/kde_app_devel/Makefile.in b/tde-i18n-ru/docs/kdevelop/kde_app_devel/Makefile.in new file mode 100644 index 00000000000..d0d99b803d9 --- /dev/null +++ b/tde-i18n-ru/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 = ru +#>- 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-ru/docs/kdevelop/kde_app_devel/index.cache.bz2 b/tde-i18n-ru/docs/kdevelop/kde_app_devel/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..96c61365cc4 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kde_app_devel/index.cache.bz2 diff --git a/tde-i18n-ru/docs/kdevelop/kde_app_devel/index.docbook b/tde-i18n-ru/docs/kdevelop/kde_app_devel/index.docbook new file mode 100644 index 00000000000..bc337fb7c06 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kde_app_devel/index.docbook @@ -0,0 +1,1876 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kdevelop "<application +>KDevelop</application +>"> + <!ENTITY kappname "&kdevelop;"> + <!ENTITY % addindex "INCLUDE"> + <!ENTITY % Russian "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Основы программирования в &kdevelop;</title> + +<date +>2002-12-05</date> +<releaseinfo +>2.0</releaseinfo> + +<authorgroup> +<author +><firstname +>Ralf</firstname +> <surname +>Nolden</surname +> <affiliation +><address +><email +>[email protected]</email +></address +></affiliation> +</author> +<author +><firstname +>Caleb</firstname +> <surname +>Tennis</surname +> <affiliation +><address +><email +>[email protected]</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 +>Руководство по написанию C++ приложений для KDE с использованием &kdevelop;</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KDevelop</keyword> +<keyword +>IDE</keyword> +<keyword +>разработка</keyword> +<keyword +>программирование</keyword> +</keywordset> + +</bookinfo> + +<chapter id="chapter1"> +<title +>Введение</title> +<para +>С приобретением Unix-подобными системами всё большей популярности даже среди начинающих пользователей из-за таких преимуществ, как стабильность, гибкость и функциональность (а также из-за решения начальства о переходе на эти ОС - прим. перев.), большинство из них разочаровывают из-за непохожего внешнего вида программ и их различного поведения. Разработчикам, пишущим приложения под KDE, предоставляется возможность писать первоклассные программы для Unix-клонов, что способствует расширению сообщества пользователей этих операционных систем посредством предоставления приложений лучшего качества. Поэтому KDE становится всё более популярной средой для программистов, которые хотят сосредоточиться на главной цели своего проекта, оставив основную работу по созданию интерфейса библиотекам KDE. </para> + +<sect1 id="c1s1"> +<title +>Что нужно знать</title> +<para +>Далее предполагается, что вы уже знаете C++. Если это не так, попрактикуйтесь сначала в самом языке. Книги о нём можно найти либо в местном книжном магазине, либо в электронном виде в Сети. Знания о разработке графического пользовательского интерфейса (GUI) не обязательны, т.к. в этом руководстве также даётся введение в разработку дизайна на базе библиотек Qt и KDE. Также вам нужно освоиться с &kdevelop;, в чём вам поможет Руководство &kdevelop;, содержащее обзор функциональности этой среды разработки. </para> +</sect1> + +<sect1 id="c1s2"> +<title +>Об этом руководстве</title> +<para +>Это руководство написано для ознакомления программистов с разработкой приложений KDE в интегрированной среде разработки KDevelop. </para> +<para +>Следующие главы содержат способы создания проектов, описание начального исходного кода, созданного мастером, добавление таких элементы интерфейса, как панели инструментов, меню, и области представления (view). </para> +<para +>Затем идёт обсуждение редактора диалогов с изложением механизма создания элементов управления (элементов пользовательского интерфейса, называемых также виджетами) и изменения их свойств. </para> +<para +>Завершается руководство несколькими темами, которые дополнят ваши знания по проектированию и написанию документации. </para> +<sect2 id="c1s2s1"> +<title +>В следующей главе</title> +<para +>Мы обратим наш взгляд на библиотеки Qt и KDE, их основные принципы и вообще почему всё сделано так, как оно есть. Также будет описано создание учебных программ под Qt с помощью &kdevelop;, так что начинающие смогут получить первые результаты, а также освоиться с основными возможностями &kdevelop;. </para> +</sect2> + +<sect2 id="c1s2s2"> +<title +>В следующих главах</title> +<para +>Вы научитесь: <itemizedlist> +<listitem +><para +>создавать приложения с помощью KAppWizard</para +></listitem> +<listitem +><para +>узнаете, что уже есть в проекте сразу после его создания</para +></listitem> +<listitem +><para +>что делает уже созданный код</para +></listitem> +<listitem +><para +>настраивать представление</para +></listitem> +<listitem +><para +>добавлять новые возможности в ваше приложение с помощью диалогов, меню и панелей инструментов</para +></listitem> +<listitem +><para +>делать приложение простым в использовании с помощью контекстной справки</para +></listitem> +<listitem +><para +>создавать документацию</para +></listitem> +</itemizedlist> +</para> +</sect2> + +</sect1> + +<sect1 id="c1s3"> +<title +>Дополнительная информация</title> +<para +>Дополнительная информация по программированию в Qt/KDE: <itemizedlist> +<listitem +><para +>Программирование под Qt под редакцией Matthias Kalle Dalheimer</para +></listitem> +<listitem +><para +><ulink url="www.kdevelop.org" +>Руководство KDevelop, поставляемое с KDevelop</ulink +></para +></listitem> +<listitem +><para +><ulink url="doc.trolltech.com" +>Справочник по функциям библиотеки Qt</ulink +></para +></listitem> +<listitem +><para +><ulink url="developer.kde.org" +>Сайт разработчиков KDE</ulink +></para +></listitem> +</itemizedlist> +</para> +<para +>Также вы можете получить дополнительную информацию, воспользовавшись <ulink url="http://www.google.com" +>поисковой машиной</ulink +>, подпиской на различные списки рассылки, сетью Usenet. </para> +<para +>Для получения помощи по KDevelop IDE посылайте запросы в список рассылки <email +>[email protected]</email +>. Помните, что команда разработчиков KDevelop оказывает вам помощь бесплатно и её возможности ограничены. Пожалуйста, задавайте вопросы только по KDevelop. </para> +</sect1> + +</chapter> + +<chapter id="chapter2"> +<title +>Библиотеки KDE и Qt</title> +<para +>Норвежская компания TrollTech (<ulink url="http://www.trolltech.com" +>http://www.trolltech.com</ulink +>) является разработчиком, т.н. GUI-инструментария, Qt. GUI расшифровывается как "Graphical User Interface" ("графический пользовательский интерфейс"). Этот инструментарий нужен для разработки приложений с графическим интерфейсом, чаще всего через интерфейс X-Window (или совместимый) на системах Unix, т.к. система X не содержит предопределённого интерфейса сама по себе (на данный момент разрабатывается альтернатива Y Window System, которая должна содержать базовый набор графических элементов, но её разработка находится только на начальной стадии - прим. перев.). Доступны и другие библиотеки пользовательского интерфейса, но Qt имеет некоторые преимущества, позволяющие создавать приложения проще и быстрее. Qt также доступна для Microsoft Windows, что позволяет делать переносимые приложения с графическим интерфейсом. </para> +<para +>Цель команды KDE (<ulink url="http://www.kde.org" +>http://www.kde.org</ulink +>) -- сделать системы Unix более дружественными для пользователя, используя библиотеку Qt, для разработки оконного менеджера для платформы X-Window (или совместимой с ней), а также большого количества разнообразных программ, поставляемых в пакетах KDE. После выхода первых версий KDE, многие разработчики обратили внимание на предложенную им среду разработки графических приложений. Библиотеки KDE предоставляют общие методы и классы для разработки приложений с унифицированным согласованным интерфейсом. Это значит, что пользователю не придётся осваиваться с интерфейсом каждой программы с нуля, а только со её специфическими функциями. Кроме того, программы KDE взаимодействуют друг с другом в рамках рабочего стола: они могут взаимодействовать с файловым менеджером посредством технологии "перетащить и оставить", с менеджером сессии и использовать другие возможности, предоставляемые библиотеками KDE. </para> +<para +>И библиотека QT и библиотеки KDE написаны на языке программирования C++, поэтому почти все приложения, их использующие, тоже написаны на C++. В следующем разделе мы совершим краткий экскурс в библиотеки, увидим, какие возможности они предоставляют, и как в общих чертах создаются приложения Qt и KDE. </para> + +<sect1 id="c2s1"> +<title +>GUI-инструментарий Qt</title> +<para +>Как сказано выше, библиотека Qt предоставляет собой набор графических элементов. Кроме этого: <itemizedlist> +<listitem +><para +>Классы и методы, готовые к использованию даже не графическими программами</para +></listitem> +<listitem +><para +>Удобное решение взаимодействия с пользователем через методы и механизм сигналов/слотов</para +></listitem> +<listitem +><para +>Набор предопределённых GUI-элементов, называемых "виджетами"</para +></listitem> +<listitem +><para +>Предопределённые диалоги, например диалог открытия файла</para +></listitem> +</itemizedlist> +</para> +<para +>Знание классов Qt очень полезно, даже если вы хотите программировать под KDE. Для начала разберём программу под Qt, а потом сделаем из неё программу под KDE. </para> + +<sect2 id="c2s1s1"> +<title +>Первое приложение Qt</title> +<para +>Обычно в начале программы на C++ должна быть функция <function +>main()</function +>, которая выполняется первой при запуске программы. Так как мы хотим показать окна и настроить взаимодействие с пользователем, сначала мы должны разобраться, как эти окна будут показываться пользователю. Посмотрим первый учебный пример из документации по библиотеке Qt и разберём шаги выполнения программы, которая показывает окно: <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 +>Приложение прорисовывает окно с кнопкой "Hello world". Для всех Qt-приложений, нужно создать сначала экземпляр класса <classname +>QApplication</classname +>, представленного переменной a. </para> +<para +>Далее создаётся экземпляр класса <classname +>QPushButton</classname +> и именем hello. Он представляет собой кнопку. Конструктор hello получает строку в виде аргумента и выводит её на кнопке. </para> +<para +>Вызывается метод кнопки hello <methodname +>resize()</methodname +>. Он изменяет размер элемента управления <classname +>QPushButton</classname +> - ширина 100 точек и высота - 30. Наконец, вызывается метод setMainWidget() для переменной a и show() для переменной hello. QApplication выполняется методом <methodname +>a.exec()</methodname +>, запускается цикл опроса событий, который повторяется до тех пор, пока событием не будет возвращено целое число, сигнализирующее операционной системе о том, что работа приложения закончена. </para> +</sect2> + +<sect2 id="c2s1s2"> +<title +>Справочник Qt</title> +<para +>Теперь давайте посмотрим на справочную документацию Qt. Запустите &kdevelop; и выберите "Qt" из дерева, расположенного на вкладке документации. Здесь вы будете получать всю необходимую информацию о классах и их методах библиотеки Qt. Кроме того, разбираемая программа показывается первой в разделе обучения. Для того, чтобы найти информацию о классах <classname +>QApplication</classname +> и <classname +>QPushButton</classname +>, выберите раздел "Alphabetical Class List" и найдите в списке имена классов. Нажмите на соответствующую ссылку для получения подробного описания класса. </para> +<para +>Документацию по библиотеке Qt вы также можете найти на сайте компании Trolltech в разделе <ulink url="doc.trolltech.com" +>документация Qt</ulink +> (на английском языке) </para> +<para +><classname +>QApplication</classname +> имеет конструктор и другие методы. Если вы последуете за ссылкой, то можете больше узнать о каждом из методов. Это остаётся верным и для документации по библиотеке KDE, использующей схожий тип документации. </para> +<sect3 id="c2s1s2s1"> +<title +>Интерпретация работы примера</title> +<para +>Начините с <classname +>QApplication</classname +>, и вы увидите все методы, использованные в первом примере: <itemizedlist> +<listitem +><para +>конструктор <methodname +>QApplication()</methodname +></para +></listitem> +<listitem +><para +>метод <methodname +>setMainWidget()</methodname +></para +></listitem> +<listitem +><para +>метод <methodname +>exec()</methodname +></para +></listitem> +</itemizedlist> +</para> +<para +>Интерпретация работы программы очень проста: <orderedlist> +<listitem +><para +>Создаём экземпляр класса <classname +>QApplication</classname +> с помощью конструктора, что позволит нам использовать GUI-элементы, предоставляемые Qt</para +></listitem> +<listitem +><para +>Создаём элемент управления в окне приложения</para +></listitem> +<listitem +><para +>Делаем элемент управления главным для приложения (переменная 'a')</para +></listitem> +<listitem +><para +>Запускаем экземпляр <classname +>QApplication</classname +></para +></listitem> +</orderedlist +> +</para> +<para +>Второй объект нашей программы - кнопка, экземпляр класса <classname +>QPushButton</classname +>. Из двух доступных конструкторов экземпляров этого класса мы воспользовались вторым: он принимает в виде аргумента строку текста, которая будет показана на кнопке. Затем методом <methodname +>resize()</methodname +> мы изменяем размер кнопки, чтобы вся строка была видна на кнопке. </para> +<para +>Далее идёт метод <methodname +>show()</methodname +>. Но его нет в описании класса <classname +>QPushButton</classname +>. Этот класс наследует методы класса <classname +>QButton</classname +>, а тот, в свою очередь, наследует методы <classname +>QWidget</classname +>. Этот класс содержит огромное количество методов, в том числе <methodname +>show()</methodname +>. Итак, что же делалось с кнопкой: <orderedlist> +<listitem +><para +>Создаём экземпляр класса <classname +>QPushButton</classname +>, используя второй конструктор для указания надписи на кнопке</para +></listitem> +<listitem +><para +>Изменяем размер кнопки</para +></listitem> +<listitem +><para +>Делаем основным элементом управления для переменной а, экземпляра класса <classname +>QApplication</classname +></para +></listitem> +<listitem +><para +>Вызываем метод <methodname +>show()</methodname +>, который приводит к отображению элемента управления. Он наследуется от класса <classname +>QWidget</classname +></para +></listitem> +</orderedlist> +</para> +<para +>После вызова метода <methodname +>exec()</methodname +>, приложение становится видимым пользователю. Окно приложения содержит кнопку "Hello world!". Примечание: GUI-программы ведут себя несколько отлично от процедурных. Главное отличие состоит в том, что приложение входит в т.н. "главный цикл событий" ("main event loop"). Это означает, что программа ожидает действий со стороны пользователя, и выдаёт на них определённую реакцию. Следующий раздел разъясняет, что это означает для программиста, и как эти события обрабатываются в Qt. </para> +<note +><para +>Для опытных: кнопка не имеет родителя, это значит, что это элемент управления верхнего уровня (top-level) и выполняется в локальном цикле событий, которому не нужно ждать главного цикла событий. Подробно это объяснено в документации класса QWidget и The KDE Library Reference Guide</para> +</note +> + +</sect3> +</sect2> + +<sect2 id="c2s1s3"> +<title +>Взаимодействие с пользователем</title> +<para +>После прочтения последних разделов, вы уже должны знать: <itemizedlist> +<listitem +><para +>Что предоставляет библиотека Qt в терминах GUI-программирования</para +></listitem> +<listitem +><para +>Как создаётся программа, использующая Qt и</para +></listitem> +<listitem +><para +>Где и как найти информацию о классах, которые вам нужны</para +></listitem> +</itemizedlist +> +</para> +<para +>Теперь оживим нашу программу добавлением обработчика событий. В общем, есть два способа взаимодействия пользователя с программой - клавиатурой и мышью. В обоих случаях графический интерфейс предоставляет механизмы регистрации новых событий от этих устройств и методы их обработки. </para +> +<para +>Оконная система посылает все события соответствующему приложению. <classname +>QApplication</classname +> пересылает их активному окну в виде <classname +>QEvent</classname +> и элементы управления затем решают, что при этом делать. Соответствующий элемент управления принимает событие и обрабатывает <methodname +>QWidget::event (QEvent*)</methodname +>, в котором определяется тип события и выдаётся соответствующая реакция; <methodname +>event()</methodname +> - главный обработчик событий. Он передаёт событие т.н. фильтрам событий, которые определяют, что произошло и что делать с этим событием. Если фильтра для данного типа события нет, вызываются специальные обработчики событий. Они вызывают соответствующие предопределённые методы: <itemizedlist> +<listitem +><para +>События с клавиатуры - нажатие клавиш TAB и 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 +>Весь остальной ввод с клавиатуры:</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 +>Движения курсора мыши:</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 +>Щелчки мышью</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 +>События с окном, содержащим элемент управления</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 +>Помните, что все функции событий являются виртуальными и защищёнными. Вы можете переназначить события, нужные вам, и определить свою реакцию. <classname +>QWidget</classname +> также содержит некоторые виртуальные методы, которые могут пригодиться в ваших программах. В любом случае, класс <classname +>QWidget</classname +> нужно узнать получше. </para> +</sect2> +<sect2 id="c1s2s4"> +<title +>Взаимодействие объектов через сигналы и слоты</title> +<para +>Теперь переходим к основному отличию Qt: механизму сигнал/слот. Это быстрое и удобное решение реализации взаимодействия объектов, которое обычно решается посредством callback-функций в библиотеках, работающих с X-Window. Так как такое взаимодействие требует аккуратного программирования и иногда делает создание пользовательского интерфейса очень сложным (что описано в документации по Qt и объяснено в книге К.Дальхеймера [K.Dalheimer] 'Programming with Qt'), Troll Tech придумала новую систему, где объекты могут посылать сигналы, которые можно связывать с методами, объявленными как слоты. Программисту на C++ нужно знать только некоторые вещи о механизме: <itemizedlist> +<listitem +><para +>объявление класса, использующего сигналы/слот должно содержать макрос Q_OBJECT в начале (без точки с запятой); и должно быть унаследовано от класса <classname +>QObject</classname +> </para +></listitem> +<listitem +><para +>сигнал может быть послан ключевым словом emit (например, emit signal (параметры...)) из любого метода класса, поддерживающего сигналы/слоты </para +></listitem> + +<listitem +><para +>все сигналы, использующиеся не наследуемыми классами, должны быть добавлены в объявление класса в разделе signals </para +></listitem> +<listitem +><para +>все методы, которые могут быть связаны с сигналом, объявляются в разделах определения класса с дополнительным ключевым словом slot, например public slots </para +></listitem> +<listitem +><para +>компилятор метаобъектов (moc, meta-object compiler) обрабатывает заголовочные файлы, заменяя макросы на действительный код (это не обязательно знать). Вывод moc передаётся компилятору C++. </para +></listitem> +</itemizedlist> +</para> +<para +>Другой способ использования сигналов без наследования от класса <classname +>QObject</classname +> - использовать класс <classname +>QSignal</classname +>: дополнительные сведения и примеры использования вы можете найти в документации. Далее подразумевается, что вы используете наследование от класса <classname +>QObject</classname +>. </para> +<para +>В этом случае ваш класс может посылать сигналы куда угодно и создавать слоты, к которым можно привязывать любые сигналы. Используя сигналы, вам не нужно заботиться о том, кто их получает - нужно просто послать сигнал, а потом подключить любой слот, который будет выполнен при возникновении сигнала. Слоты можно использовать также как обычные методы в реализации. </para> +<para +>Теперь, чтобы соединить сигнал со слотом,воспользуйтесь методом <methodname +>connect()</methodname +> класса <classname +>QObject</classname +> или, если доступно, другими специальными методами объекта для создания привязки к соответствующему сигналу. </para> + +<sect3 id="c1s2s4s1"> +<title +>Примерное использование</title> +<para +>В качестве объяснения взаимодействия между объектами возьмём наш первый пример и расширим его простой привязкой сигнала и слота: <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 +>Как видите, мы лишь расширили возможности кнопки с использованием метода <methodname +>connect()</methodname +>: <methodname +>connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() ))</methodname +> — всё, что мы добавили. Что же это означает? Объявление метода <methodname +>connect()</methodname +> в классе QObject: </para> +<para +><methodname +>bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) </methodname +></para> +<para +>Это значит, что указатель на экземпляр <classname +>QObject</classname +> является инициатором сигнала, указанного во втором аргументе. Оставшиеся два аргумента есть объект-приёмник, который имеет слот, а затем и имя функции-слота, которая будет выполнена при получении сигнала. </para> +<para +>С помощью сигналов и слотов, объекты ваших программ могут взаимодействовать друг с другом без явной зависимости от типа объекта-приёмника. Далее в этом руководстве приводится более подробное описание работы механзима сигналов/слотов. Коме этого, о нём можно почитать в <ulink url="developer.kde.org/documentation/library/libraryref.html" +>The KDE Library Reference Guide</ulink +> и <ulink url="doc.trolltech.com" +>Qt online reference</ulink +>. </para> +</sect3> +</sect2> +</sect1> + +<sect1 id="c2s3"> +<title +>Что даёт KDE</title> +<sect2 id="c2s3s1"> +<title +>Библиотеки KDE 3.x</title> +<para +>Основные библиотеки KDE, которые вам обязательно понадобятся при написании KDE-программ: <itemizedlist> +<listitem +><para +>kdecore - все классы с не графическими элементами, предназначенными для обеспечения функциональности приложений </para +></listitem> +<listitem +><para +>kdeui - элементы пользовательского интерфейса, например меню, панели инструментов и т.д. </para +></listitem> +<listitem +><para +>kfile - диалоги выбора файлов </para +></listitem> +</itemizedlist> +</para> +<para +>Также возможно вам понадобятся библиотеки: <itemizedlist> +<listitem +><para +>kdefx - растровые изображения, эффекты расширения QStyle - KStyle </para +></listitem> +<listitem +><para +>khtml - компонент показа HTML </para +></listitem> +<listitem +><para +>kjs - поддержка Javascript </para +></listitem> +<listitem +><para +>kio - низкоуровневый доступ к сетевым файлам </para +></listitem> +<listitem +><para +>kparts - поддержка интерфейса компонентов (повторно используемых, внедряемых приложений) </para +></listitem> +</itemizedlist> +</para> +<para +>Теперь давайте попробуем сделать из нашей первой программы на Qt KDE-программу. </para> +</sect2> +<sect2 id="c2s3s2"> +<title +>Пример приложения KDE</title> +<para +>В дальнейшем вы увидите, что написание программ под KDE ни капельки не труднее написания приложений на Qt. Для использования возможностей KDE, нужно использовать немного другие классы. В этом примере мы обсудим изменения по сравнению с версией на 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 +>Вы видите, что мы поменяли класс <classname +>QApplication</classname +> на <classname +>KApplication</classname +>. Затем мы использовали метод <methodname +>setTopWidget</methodname +> вместо <methodname +>setMainWidget()</methodname +> для указания главного элемента управления для <classname +>KApplication</classname +>. Всё! Ваше первое приложение KDE готово - осталось только указать путь к заголовочным файлам KDE и скомпоновать библиотеку kdecore ключом компоновщика -lkdecore. </para> +<para +>Если вы не собираетесь создавать такие простые программы, вам понадобится более удобная среда написания ПО. В следующей главе речь пойдёт о &kdevelop;. </para> +<para +>Итак, к этому времени, вы уже прошлись по страницам справочной документации Qt, в т.ч. по классам <classname +>QApplication</classname +>, <classname +>QWidget</classname +> и <classname +>QObject</classname +>, а также по документации библиотеки kdecore, классу <classname +>KApplication</classname +>. <ulink url="developer.kde.org/documentation/library/libraryref.html" +>KDE Library Reference handbook</ulink +> содержит полное описание использования конструкторов <classname +>QApplication</classname +> и <classname +>KApplication</classname +>, включая также обработку ключей командной строки. </para> +</sect2> +</sect1> + +</chapter> + +<chapter id="chapter3"> +<title +>Создание новых приложений</title> + +<sect1 id="c3s1"> +<title +>Мастер приложений</title> +<para +>Мастер приложений (Application Wizard) поможет вам начать, предоставив скелет-основание для ваших программ. В зависимости от цели проекта, вы можете выбрать различный тип шаблона: <itemizedlist> +<listitem +><para +>KDE Application Framework: полный каркас для обычного приложения KDE </para +></listitem> +<listitem +><para +>QMake Project: структура программы основывается на системе сборки qmake фирмы Trolltech </para +></listitem> +<listitem +><para +>Simple hello world program: консольная программа на C++ без графического интерфейса </para +></listitem> +<listitem +><para +>и немалое количество других шаблонов </para +></listitem> +</itemizedlist> +</para> +<para +>В этой главе мы рассмотрим использование Мастера приложений и вообще первые действия при создании проекта KDE. </para> +</sect1> + +<sect1 id="c3s2"> +<title +>Мастер приложений и генерирование проекта</title> +<sect2 id="c3s2s1"> +<title +>Запуск мастера приложений и первая страница</title> +<para +>Откройте &kdevelop;, в меню "Проект" выберите "Новый проект". Выберите ветку C++, KDE, Application Framework. </para> +<para +>Выберем имя KScribble. <screenshot +><mediaobject +><imageobject> +<imagedata fileref="appwizard.png" format="PNG"/> +</imageobject +><textobject +><phrase +>Мастер приложений</phrase +></textobject> +</mediaobject +></screenshot> +</para> +</sect2> +<sect2 id="c3s2s2"> +<title +>Система контроля версий</title> +<para +>Далее вам нужно будет выбрать систему контроля версий, например CVS, или отказаться от её использования. В нашем случае - это последнее. </para> +</sect2> +<sect2 id="c3s2s3"> +<title +>Шаблоны заголовочных и исходных файлов</title> +<para +>Отредактируйте текст, который будет добавляться в начало каждого вновь создаваемого файла. Затем нажмите "Готово". Если она неактивна, вернитесь и проверьте правильность выбранных вами параметров. </para> +</sect2> +<sect2 id="c3s2s4"> +<title +>Окончание</title> +<para +>Откроется окно с сообщениями, в котором, после успешного завершения генерирования нового проекта, должна появиться надпись **** Success *****. </para> +</sect2> +</sect1> + +<sect1 id="c3s3"> +<title +>Первая сборка</title> +<para +>Давайте пройдёмся по выданному мастером коду для получения общего представления по структуре программы. </para> +<para +>Далее предполагается, что вы освоились с базовой навигацией &kdevelop;. Если это не так, обратитесь к руководству KDevelop. </para> +<para +>Менеджер Automake отображает файлы проекта: <screenshot +><mediaobject +><imageobject> +<imagedata fileref="kscribblefiles.png" format="PNG"/> +</imageobject +><textobject +><phrase +>Файлы нашего проекта</phrase +></textobject> +</mediaobject +></screenshot> +</para> +<para +>Перед углублением в исходники, выполним сборку. Для этого выберите "Собрать проект" из меню "Сборка", или просто нажмите F8. В появившемся окне вывода будут выводиться сообщения сборщика <command +>make</command +>. <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 +>Мы пронумеровали строки для простоты их описания. Прежде всего, <command +>gmake</command +> работает рекурсивно. Это значит, что сначала он находит самый глубоковложенный каталог, обрабатывает его, затем подымается на уровень выше, обрабатывает этот каталог и так далее до самого верхнего. </para> +<para +>Первая, интересующая нас строка - 24. В ней <command +>make</command +> обращается к GNU C++ компилятору <command +>g++</command +> для компиляции файла main.cpp. При этом используется некоторое количество дополнительных ключей, многие из которых можно настроить через &kdevelop;. </para> +<para +>Перед компилированием следующего файла (kscribble.cpp, строка 29) вызывается команда <command +>moc</command +> (meta object compiler, компилятор мета-объектов) для kscribble.h (строка 25). Это из-за того, что классы KScribble используют механизм сигналов/слотов. Она подставляет вместо макроса Q_OBJECT действительный код. Получившийся файл, kscribble.moc, используется kscribble.cpp через #include. </para> +</sect1> + +<sect1 id="c3s4"> +<title +>Базовый исходный код</title> +<para +>Чтобы понять принцип работы KDE-программы, давайте сначала поближе рассмотрим исходный код, предоставленный Мастером приложений. Разберём код (почти) построчно, в том порядке, в котором он выполняется, до момента, когда программа войдёт в главный цикл событий и будет ожидать действий от пользователя. Т.к. большинство программ KDE имеют похожую структуру, это поможет вам легче ориентироваться в коде других программ (благо, се они распространяются с открытым исходным кодом). </para> + +<sect2 id="c3s4s1"> +<title +>Функция main()</title> +<para +>Выполнение программы начинается с функции <function +>main()</function +>. Она прописана в файле main.cpp, её можно найти через "Обзор классов", в ветке "Глобальные функции". <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, "[email protected]"); +5 about.addAuthor( "Your Name", 0, "[email protected]" ); +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 +>В ней создаётся объект <classname +>KApplication</classname +>, но перед этим добавляются некоторые методы KDE, указывающие информацию о программе и авторе. </para> +</sect2> +<sect2> +<title +>Запуск пользвтельского приложения</title> + +<para +>... (забыли написать)</para> + +</sect2> +<sect2> +<title +>Конструктор</title> +<para +>Давайте посмотрим на использование конструктора <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 +><classname +>KScribble</classname +> наследует класс <classname +>KMainWindow</classname +> - базовый класс KDE-программ. Класс <classname +>KScribbleView</classname +> инициализируется как центральный элемент управления, <classname +>KStatusBar</classname +> создаётся методом <methodname +>statusBar()</methodname +> (строка 16), затем некоторые сигналы соединяются со слотами. </para> +</sect2> +</sect1> +</chapter> + + +<chapter id="chapter4"> +<title +>Создание представления</title> +<sect1 id="c4s1"> +<title +>Введение</title> +<para +>При объектно-ориентированной разработке программ (с графическим интерфейсом), большая часть работы заключается в разработке т.н. "представления" ("view", дизайна пользовательского интерфейса) Нужно уметь эргономично располагать элементы управления в окнах и других объектах, не злоупотреблять, но и не пренебрегать ними. Программа реализует свою интерактивность именно через элементы управления, соединённые со слотами, а также через клавиатуру - реагируя на нажатия определённых (комбинаций) клавиш. Панель состояния предназначена для отображения текущей (некритичной) информации, например о состоянии приложения, или о свойствах открытого документа. Рассмотрим конструирование пользовательского интерфейса на примере редактора. </para> +<para +>Редактор - это программа, предназначенная для просмотра и/или редактирования содержимого текстовых файлов. Если вы запустите Kate, то увидите следующие элементы интерфейса: <itemizedlist> +<listitem +><para +>Меню: комплексные (в т.ч. не часто используюмые) действия, открытие, сохранение и закрытие файлов и т.д. </para +></listitem> +<listitem +><para +>Панель инструментов: набор значков, предоставляющих быстрый доступ к наиболее часто используемым действиям (таковые, при желании, определяются пользователем), </para +></listitem> +<listitem +><para +>Панель состояния: позиция курсора, вставка/замена, </para +></listitem> +<listitem +><para +>Представление, отображающее содержание файла, содержащее курсор, управляемый с клавиатуры, для работы с данными. </para +></listitem> +</itemizedlist> +</para> +<para +>Последняя является наиболее уникальной частю программы. Правильное её проектирование определяет простоту использования программы ("usability"). Это значит, что одним их первых шагов при разработке должно быть определение задач программы и какой дизайн подойдёт лучше, так, чтобы на обучение и, самое главное, на работу с программой, требовалось как можно меньше времени. </para> +<para +>Для таких задач как редактирование текста и отображение HTML, библиотеки Qt и KDE предоставляют уже готовые решения, "представления", по сути - высокоуровневые элементы управления. Но для большинства приложений, всё же придётся делать новые элементы управления. Вот что делает из программиста дизайнера и где становится востребованной вещь, называемая модным словом "креатив", или попросту творчество. Тут, прежде всего, главное интуитивность. Помните, что большинство людей не будут использовать программу, которая не: <itemizedlist> +<listitem +><para +>красивая </para +></listitem> +<listitem +><para +>предлагает большое количество возможностей </para +></listitem> +<listitem +><para +>простая в использовании </para +></listitem> +<listitem +><para +>быстрая в изучении </para +></listitem> +</itemizedlist> +</para> +<para +>Излишним будет говорить, что стабильность - самая главная цель. Никто не может 100% избежать ошибок ("bugs"), но разумное проектирование позволяет значительно уменьшить количество возможных недоработок. Программирование на C++, если вы знаете как использовать его лучшие стороны - наследовательность, скрытие информации (модульность) и повторное использование одного кода, безусловно принесёт вам успех. </para> +<para +>При создании проекта KDE или Qt, его представление (view) всегда наследует QWidget, либо напрямую, либо через другие элементы управления библиотек. Мастер приложений также создёт код, содержащий класс yourappView, наследователь QWidget. </para> +<para +>В этой главе мы опишем как использовать элементы управления библиотек для создания новыхпредставлений, потом будет обзор готовых представлений, которые они уже содержат. </para> +</sect1> +<sect1 id="c4s2"> +<title +>Использование библиотечных представлений</title> +<para +>После проектирования вашего приложения, просмотрите уже существующий код. В т.ч. найдите элемент управления, который можно использовать как представление, или хотябы как его часть, либо напрямую, либо наследованием. Библиотеки KDE и Qt уже содержат набор элементов управления, которые можно для этого использовать. Есть два способа этого: <orderedlist> +<listitem +><para +>Удалить класс текущего представления и создать экземпляр библиотечного элемента управления, затем установить его как представление, </para +></listitem> +<listitem +><para +>Изменить наследование текущего класса представления. </para +></listitem> +</orderedlist> +</para> +<para +>В любом случае, не забудьте связать программу с библиотекой с элементом управления, иначе компоновщик будет выдавать ошибку. Перейдите в "Проект"->"Параметры", вкладка "Параметры компоновщика" в &kdevelop;. Если в списке не будет этой библиотеки, допишите её сюда. Чтобы изменить список библиотек, которые должны быть найдены сценарием <command +>configure</command +>, добавьте соответствующий макрос в <filename +>configure.in</filename +> из корневого каталога вашего проекта. После этого, не забудьте выполнить "Сборка"->"Autoconf и automake" и "Сборка"->"Configure". </para> +<para +>Также, если заголовочные файлы библиотеки находятся не в стандартном каталоге (это можно проверить по ключам -I окна вывода команды "Make"), на вкладке "Параметры компиляции" настроек проекта, добавьте нужный каталог с ключём -I или соответствующим макросом automake в поле "Дополнительные параметры". </para> +<sect2 id="c4s3s1"> +<title +>Представления Qt</title> +<para +>На первой странице документации Qt вы можете найти ссылку на "Widget Screenshots", чтобы выбрать нужный. Они уже готовы к использованию, и их можно совмещать. Далее, мы обсудим некоторые из них, но помните, что библиотеки KDE могут содержать свои (доработанные) элементы управления, предназначенные для тех же задач. </para> +<para +>Вот несколько компонентов Qt и их назначения: <orderedlist> +<listitem +><para +>Если в области вашего представления не хватает свободного места, пользователь должен перемещаться по документу с помощью полос прокрутки. Для этого, в Qt есть класс <classname +>QScrollView</classname +>. Вы можете сделать свой элемент управления наследником <classname +>QScrollView</classname +> или использовать его экземпляр для управления представлением. </para +></listitem +> +<listitem +><para +>Для создания ScrollView, унаследуйте виджет-представление от <classname +>QWidget</classname +> и и добавьте вертикальные и горизонтальные полосы прокрутки <classname +>QScrollBars </classname +> (так делается в KHTMLView). </para +></listitem +> +<listitem +><para +>Для обработки текста, пвоспользуйтесь <classname +>QTextEdit</classname +>. Этот класс предоставляет законченный виджет текстового редактора, который уже поддерживает операции с буфером обмена, а также управляется полосами прокрутки scrollview. </para +></listitem +> +<listitem +><para +>Воспользуйтесь <classname +>QTable</classname +> для отображения данных, организованных в таблицу. <classname +>QTable</classname +> также управляется полосами прокрутки. </para +></listitem +> +<listitem +><para +>Для отображения двух различных виджетов или двух экземпляров одного виджета одновременно, воспользуйтесь <classname +>QSplitter </classname +>. Он позволяет разделить представления горизонтально или вертикально. Его использует KMail и KBabel. </para +></listitem +> +<listitem +><para +><classname +>QListView</classname +> отображает данные в виде списка и дерева. Используйте его для вывода иерархических данных. </para +></listitem +> +</orderedlist> +</para> +<para +>Всё, что вам нужно, уже есть в Qt, вам остаётся лишь узнать о нужном вам элементе, научиться его использовать, и, если необходимо, дополнять. Использование стандартных решений позволяет пользователям, привыкшим к ним, сконцентрироваться на информации, которую они несут. </para> +</sect2> +<sect2 id="c4s3s2"> +<title +>Представления KDE</title> +<para +>Библиотеки KDE созданы чтобы ещё более упростить создание приложений для K Desktop Environment. Библиотека kdeui предлагает: <orderedlist> +<listitem +><para +>KListView: более мощная версия <classname +>QListView</classname +> </para +></listitem> +<listitem +><para +>KIconView: графический просмотр значков </para +></listitem> +</orderedlist> +</para> +<para +>Библиотека khtml предоставляет полный интерпретатор HTML. Вы можете использовать его для оформления вида вашего приложения по его запуску. </para> +</sect2> +</sect1> +<sect1 id="c4s4"> +<title +>Создание собственных представлений</title> +<para +>НАПИСАТЬ </para> +</sect1> +</chapter> + +<chapter id="chapter5"> +<title +>Настройка меню и панелей инструментов</title> +<sect1 id="c5s1"> +<title +>Введение</title> +<para +>Меню и панели инструментов - одни из самых главных частей приложения для работы с документами. Следуя общим правилам, все возможные действия должны быть доступны через меню, и только часто используемые - на панели инструментов. </para> +<para +>В программе может быть несколько панелей инструментов. Они, кроме кнопок, могут также содержать выпадающие списки и т.д. </para> +</sect1> +<sect1 id="c5s2"> +<title +>Как это работает?</title> +<para +>Приожение наследует класс <classname +>KMainWindow</classname +>, который сам заботится о создании панели инструментов и меню. В методе <methodname +>KScribble::setupActions()</methodname +> есть вызов <methodname +>KMainWindow::createGUI()</methodname +>. Этот метод загружает файл ресурсов, в нашем случае это kscribbleui.rc, для инциализации меню. Вот его содержание: <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 +>Объяснение... </para> +<para +>Можо обойтись и без файла ресурсов. Например, метод <methodname +>menuBar()</methodname +> возвращает элемент управления <classname +>KMenuBar</classname +>, являющийся меню для нашей програмы. <classname +>KMenuBar</classname +> и его родительский класс <classname +>QMenuBar</classname +> имеют большое количество методов <methodname +>insertItem()</methodname +> для добавления пунктов меню. </para> +<para +>Методы <classname +>KMainWindow</classname +><methodname +>statusBar()</methodname +> и <methodname +> toolBar()</methodname +> также предоставляют соответствующие элементы управления. </para> +</sect1> +<sect1 id="c5s3"> +<title +>Настройка комбинаций клавиш.</title> +<para +>Вы должны всегда заботиться о том, чтобы все действия в вашей пограмме можно было выполнить лишь с клавиатуры. Такой метод используется опытными пользователями. Для этого в библиотеках KDE естькласс <classname +> KAction</classname +>. </para> +<para +>Программы, сгенерированные &kdevelop;, только используют стандартные комбинации клавиш, такие как F1 или Ctrl+N. </para> +<para +>Если в вашей программе много компбинаций клавиш, лучше сделать их настраиваемыми (через меню Настройка->Комбинации клавиш). Библиотека KDE предоставляет для этого класс <classname +>KKeyChooser</classname +> для использования в диалогах с вкладками, тогда как <classname +>KKeyDialog</classname +> предоставляет отдельный диалог. </para> + +</sect1> +</chapter> + +<!-- +<chapter id="chapter6"> +<title +>Other Features</title> +</chapter> + +<chapter id="chapter7"> +<title +>Printing Support</title> +</chapter> +--> +<chapter id="chapter8"> +<title +>Справка</title> +<sect1 id="c8s1"> +<title +>Введение</title> +<para +>Помните, что не все пользователи - Linux-гуру и для некоторых из них нужна справка (как контекстная, так и просто руководство):</para> +<itemizedlist> +<listitem +><para +>Всплывающие подсказки</para +></listitem> +<listitem +><para +>Сообщения в строке состояния</para +></listitem> +<listitem +><para +>Что это?</para +></listitem> +</itemizedlist> +<para +>Ну, и конечно же, руководство, вызываемое через F1. Всё это предоставляется классом <classname +>KMainWindow</classname +>, а вам лишь остаётся наполнить его содержимым. </para> +<para +>&kdevelop; содержит вспомогательные средства для включения всех типов справки в ваше приложение. </para> +<para +>В процессе разрабтки вашего приложения, попытайтесь быть последовательными ввезде. Пишите справку сразу после написания кода. Иначе потом придётся заново лезть в код и разбираться что к чему. </para> +</sect1> + +<sect1 id="c8s2"> +<title +>Всплывающие подсказки</title> +<para +>Самая простая справка - всплывающие подсказки (появляющиеся после задержки курсора над объектом). Наиболее часто они используются на панелях инструментов. За подробностями обращайтесь к документации класса <classname +>KToolBar</classname +>, расположенного в библиотке kdeui. </para> +<para +>Как пример, мы рассмотрим кнопку "New File": </para> +<para +>i18n("New File") нужна заключать в макрос i18n(), описанный в kapp.h, для отметки этой строки для перевода на другие языки. </para> +<para +>Подсказки также можно добавлять в любой другой элемент управления через <classname +>QToolTip</classname +>: </para> +</sect1> +<sect1 id="c8s3"> +<title +>Расширение панели состояния</title> +<para +>Т.к. приложения, наследующие класс <classname +>KMainWindow</classname +>, содержат также панель состояния, её можно использовать для отображения более длинного теекста, чем в подсказке. </para> +</sect1> +<sect1 id="c8s4"> +<title +>Кнопка <guibutton +>Что это?</guibutton +></title> +<para +>Подсказка <guibutton +>Что это?</guibutton +> должна содержать кратку справку (абзац-два) по выбраному элементу. Сама кнопка <guibutton +>Что это?</guibutton +> обычно располагается либо в меню, либо на панели инструментов, либо в загаловке окна. После нажатия на ней, пользователь должен нажать на нужной объекте. </para> +<para +>Для добавления такой справки, воспользуйтесь статическим методом <methodname +>QWhatsThis::add(QWidget *widget, const QString &text)</methodname +> </para> +</sect1> +</chapter> + +<chapter id="chapter9"> +<title +>Документация</title> +<sect1 id="c9s1"> +<title +>Введение</title> +<para +>Програмы, создаваемые в &kdevelop; уже содержат шаблон для документации. </para> +</sect1> +<sect1 id="c9s2"> +<title +>Пользовательская документация</title> +<para +>Документация для вашего проекта располагается в путь-к-проекту/doc/en/index.docbook. Справка по языку разметки, используемому для написания докуметтации, можно найти на <ulink url="http://i18n.kde.org/doc/markup/" +>KDE's documentation website</ulink +>. Если вы испытываете трудности в написании руководства на английском, можете обратиться к KDE Editorial Team (см. ссылку выше). </para> +</sect1> +<sect1 id="c9s3"> +<title +>Документация для разработчиков</title> +<para +>Данная документация обычно генерируется автоматически и содержит описание классов приложения. Например, так создаётся документация к библиотеке KDE. За подробностями обращайтесь <ulink url="http://developer.kde.org/" +>сюда</ulink +> </para> +</sect1> +</chapter> + +<chapter id="chapter10"> +<title +>Интернационализация</title> +<sect1 id="c10s1"> +<title +>Введение</title> +<para +>i18n - сокращение от internationalization. Интернационализация заключается в переводе всех сообщений программы на другие языки, а также всесторонней их поддержке (как-то множественные формы, поддержка кодировок и т.д.). Изначально программа и документация к ней должны быть на английском, т.к. большинство потенциальных переводчиков знает именно этот язык (если бы KDE был изначально на немецком, врядли мы бы увидели его русский перевод). </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 +>Перевод</title> + +<para +>Перевод осуществил Н. Шафоростов, <ulink url="http://program.net.ua/" +>http://program.net.ua</ulink +> </para> + +<!--CREDITS_FOR_TRANSLATORS--> + +</chapter +> <!-- credits --> + +<appendix id="bibliography"> +<title +>Библиография</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 и 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-ru/docs/kdevelop/kdearch/Makefile.am b/tde-i18n-ru/docs/kdevelop/kdearch/Makefile.am new file mode 100644 index 00000000000..e8ff7c7b1b8 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdearch/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = ru +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-ru/docs/kdevelop/kdearch/Makefile.in b/tde-i18n-ru/docs/kdevelop/kdearch/Makefile.in new file mode 100644 index 00000000000..a9f1637ed69 --- /dev/null +++ b/tde-i18n-ru/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 = ru +#>- 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-ru/docs/kdevelop/kdearch/index.cache.bz2 b/tde-i18n-ru/docs/kdevelop/kdearch/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..551644fb07f --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdearch/index.cache.bz2 diff --git a/tde-i18n-ru/docs/kdevelop/kdearch/index.docbook b/tde-i18n-ru/docs/kdevelop/kdearch/index.docbook new file mode 100644 index 00000000000..0f7a63709f1 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdearch/index.docbook @@ -0,0 +1,3676 @@ +<?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 % Russian "INCLUDE" +> <!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Обзор архитектуры KDE</title> + +<date +></date> +<releaseinfo +></releaseinfo> + +<authorgroup> +<author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +><address +><email +>[email protected]</email +></address +></affiliation> +</author> +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<holder +>Bernd Gehrmann (перевод на русский - (С) 2004 Николай Шафоростов, http://program.net.ua)</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<abstract> +<para +>Документ содержит краткий обзор архтитектуры KDE Development Platform</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>архитектура</keyword> +<keyword +>разработка</keyword> +<keyword +>программирование</keyword> +</keywordset> + +</bookinfo> + +<chapter id="structure"> +<title +>Структура библиотек</title> + +<simplesect id="structure-byname"> +<title +>Библиотеки по имени</title> + +<variablelist> + +<varlistentry> +<term +><ulink url="kdeapi:kdecore/index.html" +>kdecore</ulink +></term> +<listitem +><para +>kdecore - основа, каркас для любого приложения KDE. Она обеспечивает доступ к системе конфигурации, обработке командной строки, загрузке и управлению значками, межпроцессное взаимодействие и т.д. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kdeui/index.html" +>kdeui</ulink +></term> +<listitem +><para +>Библиотека <literal +>kdeui</literal +> содержит большое количество элементов управления и стандартных диалогов, которых нет в Qt или которые имеют расширенную функциональность по сравнению с их аналогами. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kio/index.html" +>kio</ulink +></term> +<listitem +><para +>Библиотека <literal +>kio</literal +> содержит удобства для асинхронного, сетевого файлового ввода/вывода и доступ к обработчику mimetype. Она также содержит диалог открытия файлов и его вспомогательные классы. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:kjs/index.html" +>kjs</ulink +></term> +<listitem +><para +>Библиотека <literal +>kjs</literal +> содержит реализацию JavaScript. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><ulink url="kdeapi:khtml/index.html" +>khtml</ulink +></term> +<listitem +><para +>Библиотека <literal +>khtml</literal +> содержит компонент KHTML, виджет для отображения HTML, DOM API, включая интерфейсы к Java и JavaScript. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="structure-grouped"> +<title +>Сгруппированные классы</title> + +<para +>Каркас приложения - классы, требуемые для любого KDE-приложения. </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:kdecore/KApplication" +>KApplication</ulink +></title> +<para +>инициализация и контроль приложения </para> +</formalpara +></listitem> + +<listitem +><formalpara> +<title +><ulink url="kdeapi:kdecore/KUniqueApplication" +>KUniqueApplication</ulink +></title> +<para +>Позволяет запускать только один экземпляр приложения. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KAboutData" +>KAboutData</ulink +></title> +<para +>Хранение и отображение информации об авторах программы. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KCmdLineArgs" +>KCmdLineArgs</ulink +></title> +<para +>Обработка ключей командной строки. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Доступ к иерархической базе данных конфигурации KDE, глобальные параметры и ресурсы приложения. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KConfig" +>KConfig</ulink +></title> +<para +>Доступ к файлам конфигурации KDE. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KSimpleConfig" +>KSimpleConfig</ulink +></title> +<para +>Простой доступ к простым файлам конфигурации. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KDesktopFile" +>KDesktopFile</ulink +></title> +<para +>Доступ к файлам <literal +>.desktop</literal +>. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KGlobalSettings" +>KGlobalSettings</ulink +></title> +<para +>Доступ к общим настройкам. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Обработка имён файлов и URL - разбор URL по частям, временные файлы. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KURL" +>KURL</ulink +></title> +<para +>Обработка URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KTempFile" +>KTempFile</ulink +></title> +<para +>Работа с временными файлами. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KSaveFile" +>KSaveFile</ulink +></title> +<para +>Сохранение файлов. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Взаимодействие процессов - DCOP. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KProcess" +>KProcess</ulink +></title> +<para +>Запуск и контроль дочерних процессов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KShellProcess" +>KShellProcess</ulink +></title> +<para +>Запуск дочерних процессов через оболочку. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdesu/PtyProcess" +>PtyProcess</ulink +></title> +<para +>Связь с дочерними процессами через псевдотерминал. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIPC" +>KIPC</ulink +></title> +<para +>Простой механизм IPC, использующий X11 ClientMessages. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:dcop/DCOPClient" +>DCOPClient</ulink +></title> +<para +>Отправка сообщений DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KDCOPPropertyProxy" +>KDCOPPropertyProxy</ulink +></title> +<para +>Класс-прослойка, для публикации Qt-свойств через DCOP. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KDCOPActionProxy" +>KDCOPActionProxy</ulink +></title> +<para +>Класс-прослойка, для публикации интерфейса DCOP для действий. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Вспомогательные классы - управление памятью, регулярные выражения, работа со строками, произвольные числа </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KRegExp" +>KRegExp</ulink +></title> +<para +>POSIX-совместимые регулярные выражения </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KStringHandler" +>KStringHandler</ulink +></title> +<para +>Тонкий интерфейс к работе со строками. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KZoneAllocator" +>KZoneAllocator</ulink +></title> +<para +>Эффективное выделение памяти для больших групп маленьких объектов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KRandomSequence" +>KRandomSequence</ulink +></title> +<para +>(Псевдо)случайный генератор чисел (см. также /dev/random). </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Комбинации клавиш. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KAccel" +>KAccel</ulink +></title> +<para +>Коллекция комбинаций клавиш. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KStdAccel" +>KStdAccel</ulink +></title> +<para +>Простой доступ к стандартным комбинациям клавиш. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KGlobalAccel" +></ulink +></title> +<para +>Коллекция системных комбинаций клавиш. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Обработка изображений - загрузка и управлений значками. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIconLoader" +>KIconLoader</ulink +></title> +<para +>Загрузка значков. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KIconTheme" +>KIconTheme</ulink +></title> +<para +>Вспомогательные классы для KIconLoader. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KPixmap" +>KPixmap</ulink +></title> +<para +>Класс растра. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPixmapEffect" +>KPixmapEffect</ulink +></title> +<para +>Растровые эффекты наподобие градиентов м заливки. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPixmapIO" +>KPixmapIO</ulink +></title> +<para +>Быстрое преобразование <classname +>QImage</classname +> в <classname +>QPixmap</classname +>. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Drag and Drop. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KURLDrag" +>KURLDrag</ulink +></title> +<para +>Перенос URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorDrag" +>KColorDrag</ulink +></title> +<para +>Перенос цветов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KMultipleDrag" +>KMultipleDrag</ulink +></title> +<para +>Перетаскивание нескольких объектов одновременно. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Автозавершение </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KCompletion" +>KCompletion</ulink +></title> +<para +>Общее завершение строк. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KURLCompletion" +>KURLCompletion</ulink +></title> +<para +>Автозавершение строк URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KShellCompletion" +>KShellCompletion</ulink +></title> +<para +>Автозавершение имён программ. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Виджеты - классы элементов управления для списов, правил, выбора цветов и т.д.. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KListView</ulink +></title> +<para +>Вариант <classname +>QListView</classname +>. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KListBox</ulink +></title> +<para +>Вариант <classname +>QListBox</classname +>. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KIconView</ulink +></title> +<para +>Вариант <classname +>QIconView</classname +>. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KListView" +>KLineEdit</ulink +></title> +<para +>Вариант <classname +>QLineEdit</classname +> с поддержкой завершения. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KComboBox" +>KComboBox</ulink +></title> +<para +>Вариант <classname +>QComboBox</classname +> с поддержкой завершения. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KFontCombo" +>KFontCombo</ulink +></title> +<para +>Выпадающий список для выбора шрифтов </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorCombo" +>KColorCombo</ulink +></title> +<para +>Выпадающий список для выбора цветов </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorButton" +>KColorButton</ulink +></title> +<para +>Кнопка для выбора цветов </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KURLCombo" +>KURLCombo</ulink +></title> +<para +>Выпадающий список для выбора файлов и URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequester" +>KURLRequester</ulink +></title> +<para +>Выбор имён файлов и URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KRuler" +>KRuler</ulink +></title> +<para +>Элемент управления линейки </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink +url="kdeapi:kdeui/KAnimWidget" +>KAnimWidget</ulink +></title> +<para +>анимация. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KNumInput" +>KNumInput</ulink +></title> +<para +>Ввод чисел. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPasswordEdit" +>KPasswordEdit</ulink +></title> +<para +>Ввод паролей. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Диалоги. </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KFileDialog" +>KFileDialog</ulink +></title> +<para +>Выбор файла. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KColorDialog" +>KColorDialog</ulink +></title> +<para +>Выбор цвета. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KFontDialog" +>KFontDialog</ulink +></title> +<para +>Выбор шрифта. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KIconDialog" +>KIconDialog</ulink +></title> +<para +>Выбор значка. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KKeyDialog" +>KKeyDialog</ulink +></title> +<para +>Ввод комбинаций клавиш. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KEditToolBar" +>KEditToolBar</ulink +></title> +<para +>Изменение панелей инструментов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KTipDialog" +>KTipDialog</ulink +></title> +<para +>Совет дня. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KAboutDialog" +>KAboutDialog</ulink +></title> +<para +>Диалог "О программе". </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KLineEditDlg" +>KLineEditDlg</ulink +></title> +<para +>Простой диалог для ввода текста. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kfile/KURLRequesterDlg" +>KURLRequesterDlg</ulink +></title> +<para +>Простой диалог для ввода URL. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KMessageBox" +>KMessageBox</ulink +></title> +<para +>Вывод сообщений. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KPasswordDialog" +>KPasswordDialog</ulink +></title> +<para +>Ввод паролей. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Действия и XML GUI </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KAction" +>KAction</ulink +></title> +<para +>Абстракция для действия, котрое можно подключить к меню или панели инструментов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KActionCollection" +>KActionCollection</ulink +></title> +<para +>Набор действий. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdeui/KXMLGUIClient" +>KXMLGUIClient</ulink +></title> +<para +>Часть GUI, состоящая из коллекций действий и дерева DOM, представляющего их расположение в GUI. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kparts/KPartManager" +>KPartManager</ulink +></title> +<para +>Управление активацией клиентов XMLGUI. </para> +</formalpara +></listitem> + +</itemizedlist> + +<para +>Модули и компоненты </para> + +<itemizedlist> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibrary" +>KLibrary</ulink +></title> +<para +>Динамически загружаемая библиотека. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibrary" +>KLibLoader</ulink +></title> +<para +>Загрузка совместно используемых библиотек. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kdecore/KLibFactory" +>KLibFactory</ulink +></title> +<para +>Фабрика объектов в модулях. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceType" +>KServiceType</ulink +></title> +<para +>Тип службы </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KService" +>KService</ulink +></title> +<para +>Служба </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KMimeType" +>KMimeType</ulink +></title> +<para +>Представляет MIME-тип. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KServiceTypeProfile</ulink +></title> +<para +>Пользовательские настройки для обработки MIME-типов. </para> +</formalpara +></listitem> + +<listitem +><formalpara +><title +><ulink url="kdeapi:kio/KServiceTypeProfile" +>KTrader</ulink +></title> +<para +>Запрос служб. </para> +</formalpara +></listitem> + +</itemizedlist> + +</simplesect> + +</chapter> + + + +<chapter id="graphics"> +<title +>Графика</title> + +<sect1 id="graphics-qpainter"> +<title +>Низкоуровневая графика с QPainter</title> + +<simplesect id="qpainter-rendering"> +<title +>Прорисовка с QPainter</title> + +<para +>Низкоуровневая графическая модель Qt основывается на возможностях, предоставляемых X11 или другими графическими моделями, в которые портирована Qt. Но в ней также есть расширенные функции, такие как произвольные преобразования для текста и растра. </para> + +<para +>Центральный графический класс для двухмерного рисования с Qt называется <ulink url="kdeapi:qt/QPainter" +>QPainter</ulink +>. Он может рисовать на <ulink url="kdeapi:qt/QPaintDevice" +>QPaintDevice</ulink +>. Реализовано 3 устройства для рисования: <ulink url="kdeapi:qt/QWidget" +>QWidget</ulink +>, представляющий элемент управления на экране, <ulink url="kdeapi:qt/QPrinter" +>QPrinter</ulink +>, представляющий виджет в виде вывода Postscript, и <ulink url="kdeapi:qt/QPicture" +>QPicture</ulink +>, позволяющий записывать и воспроизводить команды рисования (с диска) в формате SVG. </para> + +<para +>Такое рисование используется преимущественно в методе paintEvent() класса элемента управления. </para> + +<programlisting +>void FooWidget::paintEvent() +{ + QPainter p(this); + // Setup painter + // Use painter +} +</programlisting> + +<para +>При рисовании на принтере не забудьте вызывать QPrinter::newPage() для сигнализации о необходимости смены страницы. Также, при печати, вы можете использовать <ulink url="kdeapi:qt/QPaintDeviceMetrics" +>метрику устройства</ulink +> для подсчёта координат. </para> + +</simplesect> + + +<simplesect id="qpainter-transformations"> +<title +>Преобразования</title> + +<para +>По умолчанию, при использовании QPainter, прорисовка происходит в системе координат устройства. Это значит, что если вы рисуете линию по оси абсцисс с длинов в 10 единиц, её длина на экране будет составлять 10 пикселей. Однако, QPainter может применить некоторое преобразование перед прорисовкой фигур и кривых. Оно переносит координаты x и y линейно в x' и y' соответственно. </para> + +<mediaobject> +<imageobject +><imagedata fileref="affine-general.png"/></imageobject> +</mediaobject> + +<para +>Матрицу 3x3 в этом равенстве можно получить с помощью QPainter::setWorldMatrix(), она имеет тип <ulink url="kdeapi:qt/QWMatrix" +>QWMatrix</ulink +>. Это должна быть тождественная матрица, т.е. m11 и m22 равны единице, остальные параметры - нулю. Три типа преобразований: </para> + +<itemizedlist> + +<listitem +><formalpara> +<title +>Сдвиги</title> +<para +>Перемещает все точки объекта на определённую величину в определённом направлении. Трансляционная матрица может быть получена вызовом метода m.translate(dx, dy). Это отвечает матрице </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-translate.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Масштабирование</title> +<para +>Растянуть или сжать координаты объекта, делая его больше или меньше и сохраняя пропорции. Масштабирование можно применить к матрице методом m.scale(sx, sy). </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-scale.png"/></imageobject> +</mediaobject> + +<para +>Установкой любого из этих параметров в отрицательное значение, можно достичь зеркального отображения. </para> + +</listitem> + +<listitem +><formalpara> +<title +>Искажение</title> +<para +>Искажение координатной системы с двумя параметрами - m.shear(sh, sv) (англ.: "shearing" - сдвиг) </para> +</formalpara> + +<mediaobject> + <imageobject +><imagedata fileref="affine-shear.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><formalpara> +<title +>Вращение</title> +<para +>Вращение обеспечивается методом m.rotate(alpha). Величина угла задаётся в градусах. </para> +</formalpara> + +<mediaobject> +<imageobject +><imagedata fileref="affine-rotate.png"/></imageobject> +</mediaobject> + +<para +>Вращение - суть масштабирование и искажение </para> + +</listitem> + +</itemizedlist> + +<para +>Вот некоторые иллюстрации: </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) Без преобразований</entry> +<entry +>b) Вращение на 30 градусов</entry> +<entry +>c) Искажение 0.4</entry> +<entry +>d) Зеркальное отражение</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>Преобразования можно совмещать с умножением элементарных матриц. Помните, что операции с матрицами не являются коммутативными, поэтому обращайте внимание порядок множителей. </para> + +</simplesect> + + +<simplesect id="qpainter-strokeattributes"> +<title +>Изменение параметров штрихов</title> + +<para +>Прорисовка линий, кривых и контуров многоугольниковможет быть изменена установкой специального пера через QPainter::setPen(). Аргумент этого метода - объект типа <ulink url="kdeapi:qt/QPen" +>QPen</ulink +>. Он содержит такие параметры как стиль, цвет, тип соединения и концов. </para> + +<para +>Стиль пера - член enum <ulink url="kdeapi:qt/Qt#PenStyle-enum" +>Qt::PenStyle</ulink +> и может принимать следующие значения: </para> + +<mediaobject> + <imageobject +><imagedata fileref="penstyles.png"/></imageobject> +</mediaobject> + +<para +>Стиль соединение - член enum <ulink url="kdeapi:qt/Qt#PenJoinStyle-enum" +>Qt::PenJoinStyle</ulink +>. Он указывает метод соединения нескольких линий. Он может принимать следующие значения: </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 +>Стиль концов является членом enum <ulink url="kdeapi:qt/Qt#PenCapStyle-enum" +>Qt::PenCapStyle</ulink +> и определяет как рисовать концы линий. Возможные значения: </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 +>Атрибуты заливки</title> + +<para +>Тип заливки многоугольников, окружностей и прямоугольников можно изменить установкой специальной кисти через QPainter::setBrush(). Она берёт аргумент типа <ulink url="kdeapi:qt/QBrush" +>QBrush</ulink +>. </para> + +<itemizedlist> +<listitem> +<para +>QBrush::QBrush() - кисть, не заполняющая фигуры.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(BrushStyle) - чёрная кисть.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, BrushStyle) - Цветная кисть.</para> +</listitem> +<listitem> +<para +>QBrush::QBrush(const QColor &, const QPixmap) - Цветная кисть с заданным узором.</para> +</listitem> +</itemizedlist> + +<para +>Стиль кисти - enum <ulink url="kdeapi:qt/Qt#BrushStyle-enum" +>Qt::BrushStyle</ulink +>. Иллюстрация всех стандартных узоров: </para> + +<mediaobject> + <imageobject +><imagedata fileref="brushstyles.png"/></imageobject> +</mediaobject> + +<para +>Для ещё большего изменения поведения кисти используйте QPainter::setBrushOrigin(). </para> + +</simplesect> + + +<simplesect id="qpainter-color"> +<title +>Цвет</title> + +<para +>В Qt цвета представлены классом <ulink url="kdeapi:qt/QColor" +>QColor</ulink +>. Qt не поддерживает расширенную функциональность типа цветовых профилей ICC и сглаживание цветов. Цвета указываются по RGB. </para> + +<para +>Также возможно использовать оттенки, насыщенность и величина (HSV). Эти параметры напрямую используются в диалоге выбора цвета GIMP. Оттенок отвечает уголку на полосе цвета, насыщенность отвечает расстоянию до центра окружности. Величину можно выбрать отдельным ползунком. </para> + +</simplesect> + + +<simplesect id="qpainter-paintsettings"> +<title +>Прочие параметры</title> + +<para +>Обычно, точки, которые вы рисуете заменяют те, которые были до них на том же месте. Например, если вы нарисуете квадрат красным цветом, а потом повторите действие, лишь изменив цвет на синий, вы увидите синий квадрат. Пока что Qt не поддерживает прозрачность. Тем не менее, существует простой путь совместить фон и передний план с булевыми операторами. Метод QPainter::setRasterOp() устанавливает используемый оператор, из enum <ulink url="kdeapi:qt/Qt#RasterOp-enum" +>RasterOp</ulink +>. </para> + +<para +>По умолчанию установлен CopyROP, который игнорирует фон. Однако вы можете выбрать XorROP. Если вы нарисуете чёрную линию с этим оператором на цветном изображении, цвет покрываемой линией области будет обращён. </para> + +</simplesect> + + +<simplesect id="qpainter-primitives"> +<title +>Рисование примитивных фигур</title> + +<para +>Далее приводится список графических элементов, поддерживаемых QPainter. Большинство из них имеют несколько перегруженных версий, поэтому принимают различный набор аргументов. Например, методы, работающие с прямоугольниками обычно принимаю либо <ulink url="kdeapi:qt/QRect" +>QRect</ulink +>, либо 4 числа. </para> + +<itemizedlist> +<listitem> +<para +>Рисование точки - drawPoint().</para> +</listitem> +<listitem> +<para +>Рисование линий - drawLine(), drawLineSegments(), drawPolyLine().</para> +</listitem> +<listitem> +<para +>Рисование и заполнение прямоугольников - drawRect(), drawRoundRect(), fillRect(), eraseRect().</para> +</listitem> +<listitem> +<para +>Рисование и заполнение окружностей, эллипсов и их частей - drawEllipse(), drawArc(), drawPie, drawChord().</para> +</listitem> +<listitem> +<para +>Рисование и заполнение многоугольников - drawPolygon().</para> +</listitem> +<listitem> +<para +>Рисование кривых bezier - drawQuadBezier() [drawCubicBezier в Qt 3.0].</para> +</listitem> +</itemizedlist> + +</simplesect> + + +<simplesect id="qpainter-pixmaps"> +<title +>Рисование растра и изображений</title> + +<para +>Qt предоставляет два различных класса для работы с изображениями. </para> + +<para +><ulink url="kdeapi:qt/QPixmap" +>QPixmap</ulink +> отвечает растровым объектам X11. Растры - это объекты стороны сервера и могут - на новых графических картах - даже храниться в их памяти. Поэтому работа с ними происходит <emphasis +>очень</emphasis +> быстро. Растры также выступают эквивалентами элементов управления - класс QPixmap является подклассом QPaintDevice, так что вы можете рисовать на нём с QPainter. Элементарные операции рисования обычно оптимизируются современными графическими картами. Поэтому, можно использовать растры для двойной буферизации ("double buffering"). Это означает рисовать не прямо на элементе управления, а на временном растре, а потом вызывать функцию <ulink url="kdeapi:qt/QPaintDevice#bitBlt-1" +>bitBlt</ulink +> чтобы передать его виджету. Для сложных перерисовок, это помогает предотвратить мигание. </para> + +<para +>Объекты <ulink url="kdeapi:qt/QImage" +>QImage</ulink +> располагаются на стороне клиента. Основное ударение поставлено на прямой доступ к точкам изображения. Это упрощает операции манипуляции с изображениями, загрузку и сохранение на диск (метод QPixmapload() берёт QImage как промежуточный). С другой стороны, рисование на элементе управления - дорогая операция, т.к. включает в себя передачу X-серверу. В зависимости от глубины цвета, преобразование из QImage в QPixmap может требовать dithering. </para> + +</simplesect> + + +<simplesect id="qpainter-drawingtext"> +<title +>Рисование текста</title> + +<para +>Текст можно нарисовать одним из вариантов перегруженной функции QPainter::drawText(). Шрифт можно установить функцией QPainter::setFont(). Есть также параметр, представляющий их себя комбинацию флагов ORed из enums <ulink url="kdeapi:qt/Qt#AlignmentFlags-enum" +>Qt::AlignmentFlags</ulink +> и <ulink url="kdeapi:qt/Qt#TextFlags-enum" +>Qt::TextFlags</ulink +> </para> + +<para +>Начиная с версии 3.0, Qt также поддерживает языки с письмом справа налево. </para> + +<para +>Чтобы отобразить текст с оформлением, воспользуйтесь классом <ulink url="kdeapi:qt/QSimpleRichText" +>QSimpleRichText</ulink +>. При этом в текст нужно включать базовую HTML-разметку (включающую, тем не менее даже таблицы). Стиль текста можно изменить с помощью <ulink url="kdeapi/qt/QStyleSheet" +>QStyleSheet</ulink +>. Для прорисовки такого объекта используйте метод QSimpleRichText::draw(). </para> + +</simplesect> + +</sect1> + + +<sect1 id="graphics-qcanvas"> +<title +>Сложная графика с QCanvas</title> + +<para +>QPainter обеспечивает мощную низкоуровневую модель для рисования на элементах управления и растрах. Однако, рисование более сложных объектов с его помощью может оказаться непосильной задачей. Каждый раз, когда элемент управления получает событие рисования, ему нужно проанализировать QPaintEvent::region() или QPaintEvent::rect(). Затем ему нужно установить QPainter и нарисовать все объекты, которые перекрывают эту область. Например, представьте себе программу векторной графики, позволяющую перетаскивать объекты типа многоугольников, окружностей, и их групп. Каждый раз при наименьшем перемещении объектов, обработчик событий мыши создаёт событие перерисовки для всей области, занимаемой объектами в старой и новой позициях. Вычисление необходимых перерисовок и их выполнение оптимальным способом может составлять трудность, и может конфликтовать с объектно-ориентированной структурой кода программы. </para> + +<para +>Как выход, Qt предлагает класс <ulink url="kdeapi:qt/QCanvas" +>QCanvas</ulink +>, в котором можно располагать графические объекты, такие как многоугольники, текст, растры. Дополнительные элементы можно создать созданием подкласса <ulink url="kdeapi:qt/QCanvasItem" +>QCanvasItem</ulink +> или одного из его специализированных подклассов. Канва (от англ. холст) может отобаржаться одним или более элементами управления класса <ulink url="kdeapi:qt/QCanvas" +>QCanvasView</ulink +>, которые вы должны пол=делить на подклассы для взаимодействия с пользователем. Qt заботится о всех перерисовках в представлении самостоятельно. Т.к. при этом используется двойная буферизация, это позволяет избавиться от мигания. </para> + +<para +>Элементы канвы могут перекрывать один другого В этом случае видимость объектов определяется т.н. z-порядком, который можно изменять методом QCanvasItem::setZ(). Их можно вообще скрывать. Также, вы можете выбрать фон. Для ассоциации событий мыши в канве есть метод QCanvas::collisions(), возвращающий список элементов, перекрывающих данную точку: </para> + +<mediaobject> +<imageobject +><imagedata fileref="canvas.png"/></imageobject> +</mediaobject> + +<para +>Здесь сетка нарисована на фоне. Кроме них там есть элементы QCanvasText и фиолетовый QCanvasPolygon. Бабочка представлена растром QCanvasPixmap. Он имеет прозрачные области. </para> + +<para +>Руководство по использованию QCanvas для написания sprite-based игр можно найти <ulink url="http://zez.org/article/articleview/2/1/" +>тут</ulink +>. </para> + +</sect1> + + +<sect1 id="graphics-qglwidget"> +<title +>3D-графика с OpenGL</title> + +<simplesect id="qglwidget-lowlevel"> +<title +>Низкоуровневый интерфейс</title> + +<para +>Стандартом де-факто для прорисовки трёхмерной графики на сегодня является <ulink url="http://www.opengl.org" +>OpenGL</ulink +>. Реализации этой спецификации поставляются с Microsoft Windows, Mac OS X и XFree86, и часто поддерживают аппаратное ускорение. OpenGL сам по себе только занимается прорисовкой на указанной области фреймбуфера через <emphasis +>GL context</emphasis +> и не взаимодействует с инструментарием среды. </para> + +<para +>Qt предоставляет элемент управления <ulink url="kdeapi:qt/QGLWidget" +>QGLWidget</ulink +>, инкапсулирующий окно с ассоциированным контекстом GL. Используйте его, создавая его подкласс и переопределяя некоторые из его методов. </para> + +<itemizedlist> + +<listitem +><para +>Вместо повторной реализация paintEvent() и использования QPainter для прорисовки содержимого элемента управления, замещайте paintGL() и используйте команды GL для прорисовки сцены. QLWidget позаботится о создании его контекста GL перед вызовом paintGL() и очистит его. </para +></listitem> + +<listitem +><para +>Виртуальный метод initializeGL() вызывается перед первым вызовом resizeGL() или paintGL(). Его можно использовать для конструкции списков отображения для объектов и других инициализаций. </para +></listitem> + +<listitem +><para +>Вместо повторной реализации resizeEvent(), заместите resizeGL(). Это может быть использовано для установки соответствующей области просмотра. </para +></listitem> + +<listitem +><para +>Вместо вызова update() по изменении состояния сцены - например при анимировании по таймеру - вызывайте updateGL(). Это приведёт к перерисовке. </para +></listitem> + +</itemizedlist> + +<para +>В общем, QGLWidget ведёт себя также, как и любой другой элемент управления, например вы можете обрабатывать события мыши как обычно, изменять размер и совмещать его с другими объектами. </para> + +<mediaobject> +<imageobject +><imagedata fileref="opengl.png"/></imageobject> +</mediaobject> + +<para +>Qt поставляется с несколькими примерами использования QGLWidget в <literal +>demo</literal +>. Набор руководств на эту тематику можно найти <ulink url="http://www.libsdl.org/opengl/intro.html" +>здесь</ulink +>, и больше информации и справочник OpenGL доступно на <ulink url="http://www.opengl.org" +>сайте OpenGL</ulink +>. </para> + +</simplesect> + + +<simplesect id="qglwidget-highlevel"> +<title +>Высокоуровневые интерфейсы</title> + +<para +>OpenGL является относительно низкоуровневым интерфейсом для рисования трёхмерной графики. Как QCanvas предоставляет интерфейс более высокого уровня для двухмерной графики, так Open Inventor является трёхмерным аналогом канвы. Изначально эта технология была реализована SGI, но на данный момент есть также версия с открытым исходным кодом <ulink url="http://www.coin3d.org" +>Coin</ulink +>, сопровождающаяся связью с SoQt. </para> + +<para +>Основна Open Inventor - <emphasis +>сцена</emphasis +>. Сцену можно загрузить с диска и сохранить в специальном формате, тесно связанным с <ulink url="http://www.vrml.org" +>VRML</ulink +>. Сцена состоит из набора объектов, называющихся <emphasis +>узлами</emphasis +> (<emphasis +>nodes</emphasis +>). Inventor уже предоставляет набор узлов таких как кубы, цилиндры и сплетения (нити), источники света, материалы, камеры и т.д. Узлы представлены классами C++ и могут комбинироваться и разделяться на подклассы. </para> + +<para +>Введение в Inventor можно найти <ulink url="http://www.motifzone.com/tmd/articles/OpenInventor/OpenInventor.html" +>здесь</ulink +> (в общем, все упоминания SoXt в этой статье можно заменить на SoQt). </para> + +</simplesect> + +</sect1> + +</chapter> + + + +<chapter id="userinterface"> +<title +>Пользовательский интерфейс</title> + +<sect1 id="userinterface-actionpattern"> +<title +>Действия</title> + +<para +></para> + +</sect1> + + +<sect1 id="userinterface-xmlgui"> +<title +>Задание меню и панелей инструментов в XML</title> + +<simplesect id="xmlgui-intro"> +<title +>Введение</title> + +<para +><link linkend="userinterface-actionpattern" +>Модель действия</link +> позволяет инкапсулировать действия, вызываемые пользователем в объекте, который может быть "подключён" где-нибудь в меню или панелях инструментов, но она не отвечает за составление меню как таковых. В частности, вам нужно построить все меню в коде C++ и явно вставить действия в определённом порядке. Таким образом, трудно сделать меню. </para> + +<para +>Проблема решается набором классов <literal +>XMLGUI</literal +>. Это отделяет действия (в C++) от их отображения в меню и панелях инструментов (в XML). Без изменения исходного кода, меню можно легко подкорректировать изменением XML-файла. Более того, это позволяет удостовериться, что стандартные действия (типа <menuchoice +><guimenu +>Файл</guimenu +><guimenuitem +>Открыть...</guimenuitem +></menuchoice +> или <menuchoice +><guimenu +>Справка</guimenu +><guimenuitem +>О программе</guimenuitem +></menuchoice +>) отображаются на месте, рекомендуемом руководством по стилю. XMLGUI особенно важны для модульных программ, где пункты, появляющиеся в меню могут обеспечиваться разными модулями и компонентами. </para> + +<para +>Класс KDE верхнеуровневого окна, <ulink url="kdeapi:kdeui/KMainWindow.html" +>KMainWindow</ulink +>, наследует <ulink url="kdeapi:kdeui/KXMLGUIClient.html" +>KXMLGUIClient</ulink +> и, следовательно, поддерживает XMLGUI. Все действия, созданные с ним должны иметь <literal +>actionCollection()</literal +> как родителя. Вызов<literal +>createGUI()</literal +> приведёт к построению целого набора меню и панелей инструментов, описанных в XML-файле (обычно с расширением<literal +>.ui</literal +>). </para> + +</simplesect> + + +<simplesect id="xmlgui-kviewexample"> +<title +>Пример: Меню в KView</title> + +<para +>Далее мы берём программу просмотра KDE <application +>KView</application +> в виде примера. Его файл <literal +>ui.rc</literal +> носит имя <filename +>kviewui.rc</filename +>, устанавливаемый заготовкой <filename +>Makefile.am</filename +> </para> + +<programlisting +>rcdir = $(kde_datadir)/kview +rc_DATA = kviewui.rc +</programlisting> + +<para +>Вот выдержка из <filename +>kviewui.rc</filename +>. Для простоты мы приводим только меню <guimenu +>Вид</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 +>Соответствующий код C++: </para> + +<programlisting +>KStdAction::zoomIn ( this, SLOT(slotZoomIn()), actionCollection() ); + KStdAction::zoomOut ( this, SLOT(slotZoomOut()), actionCollection() ); + KStdAction::zoom ( this, SLOT(slotZoom()), actionCollection() ); + new KAction ( i18n("&Half size"), ALT+Key_0, + this, SLOT(slotHalfSize()), + actionCollection(), "zoom50" ); + new KAction ( i18n("&Normal size"), ALT+Key_1, + this, SLOT(slotDoubleSize()), + actionCollection(), "zoom100" ); + new KAction ( i18n("&Double size"), ALT+Key_2, + this, SLOT(slotDoubleSize()), + actionCollection(), "zoom200" ); + new KAction ( i18n("&Fill Screen"), ALT+Key_3, + this, SLOT(slotFillScreen()), + actionCollection(), "zoomMaxpect" ); + new KAction ( i18n("Fullscreen &Mode"), CTRL+SHIFT+Key_F, + this, SLOT(slotFullScreen()), + actionCollection(), "fullscreen" ); +</programlisting> + +<para +>Меню <guimenu +>View</guimenu +> показано на снимке экрана: </para> + +<mediaobject> +<imageobject +><imagedata fileref="kview-menu.png"/></imageobject> +</mediaobject> + +<para +>Файл XML начинается с объявления типа документа. DTD для kpartgui можно найти в исходниках kdelibs в <filename +>kdeui/kpartgui.dtd</filename +>. Дальний элемент файл содержим имя экземпляра приложения как атрибут. он может содержать версию в форме "version=2". Это полезно когда вы выпускаете новую версию программы с изменённым меню. Если вы увеличите номер версии в файле <literal +>ui.rc</literal +>, KDE убедиться, что любая изменённая версия отброшена и используется новый файл. </para> + +<para +>Следующая строка, <literal +><MenuBar></literal +>, содержит объявление панели меню. Вы можете вставлять любое количество <literal +><ToolBar></literal +> для создания панелей инструментов. Меню содержит подменю "view". Это имя является предопределённым и поэтому вы видите нормальные названия пунктов на снимке. Если вы будете добавлять свои подменю, вам нужно будет явно указать их заголовки. Например, в <application +>KView</application +> есть подменю с заголовком "Image": </para> + +<programlisting +><Menu name="image" > + <text>&amp;Image</text> + ... +</Menu> +</programlisting> + +<para +>В KDE, такие заголовки автоматически извлекаются и помещаются в <ulink url="kde-i18n-howto.html" +><literal +>.po</literal +></ulink +>-файлы, которые также содержат перевод этих заголовков на другие языки (оригинальным языком программы должен быть английский, а, например, русские сообщения должны помещаться в такие файлы - на земле больше людей, знающих английский). Не забудьте также вставить символ "&" (акселератор), в XML это будет "&amp;". </para> + +<para +>Давайте вернёмся к примеру. Меню <guimenu +>View</guimenu +> содержим несколько действий: <literal +>zoom50</literal +>, <literal +>zoom100</literal +>, <literal +>zoom200</literal +>, <literal +>zoomMaxpect</literal +> и <literal +>fullscreen</literal +>, объявленные в элементе <literal +><Action></literal +>. Отделитель на снимке соответствует элементу <literal +><Separator></literal +>. </para> + +<para +>Некоторые пункты меню не имеют соответствующих им записей в XML-файле. Это <emphasis +>стандартные действия</emphasis +>. Они создаются классом <ulink url="kdeapi:kdeui/KStdAction.html" +>KStdAction</ulink +>. При создании таких действий (к4ак в нашем C++ примере выше), они автоматически вставляются в определённой последовательности, и уже имеют значок и комбинацию клавиш. Эти действия описаны в <filename +>kdeui/ui_standards.rc</filename +> в исходниках kdelibs. </para> + +</simplesect> + + +<simplesect id="xmlgui-konqexample"> +<title +>Пример: Панели инструментов Konqueror</title> + +<para +>Следующий отрывок описывает панель адреса. </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 +>Здесь намного больше атрибутов, чем в меню: </para> + +<itemizedlist> + +<listitem +><para +><literal +>fullWidth</literal +>: Говорит XMLGUI, что панель имеет максимально доступную ширину. Если это равно "false", панель занимает столько, сколько необходимо, а на оставшемся месте ряда располагаются другие панели инструментов. </para +></listitem> + +<listitem +><para +><literal +>newline</literal +>: Если равно "true", панель всегда находится в начале ряда. </para +></listitem> + +<listitem +><para +><literal +>noEdit</literal +>: Обычно, пользователь может изменять панели инструментов через <menuchoice +><guimenu +>Настройки</guimenu +><guimenuitem +>Настроить панели инструментов...</guimenuitem +></menuchoice +>. Этот атрибут позволяет отменить это поведение. </para +></listitem> + +<listitem +><para +><literal +>iconText</literal +>: Говорит XMLGUI отображать значок и текст действия. Обычно, текст отображается только в всплывающей подсказке. Возможные значения этого атрибута - "icononly" (только значки), "textonly" (только текст), "icontextright" (текст справа от значка) "icontextbottom" (текст снизу от значка). </para +></listitem> + + +<listitem +><para +><literal +>hidden</literal +>: Если имеет значение "true", панель инструментов не видна по умолчанию. </para +></listitem> + + +<listitem +><para +><literal +>position</literal +>: По умолчанию - "top", что означает, что панель располагается рядом с меню (т.е. вверху окна). Для программ с большим количеством инструментария, например графических, имеет смысл установить этот атрибут в "left", "right" или "bottom". </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="xmlgui-dynamical"> +<title +>Динамические меню</title> + +<para +>Очевидно, XML может только содержать статическое описание пользовательского интерфейса, но часто нужно изменить меню во время выполнения. Например, меню <guimenu +>Адрес</guimenu +> в <application +>Konqueror</application +> содержит набор пунктов <guimenuitem +>Open with Foo</guimenuitem +>, отвечающих программам, способным открыть текущий файл (текущий MIME-тип). В XMLGUI функции динамической работы с меню реализованы с понятием <emphasis +>списков действий</emphasis +> (<emphasis +>action lists</emphasis +>). Он объявляется как один пункт в XML -файле, но состоит из несколькихдействий, подключаемых в меню во время выполнения. Приведённый выше пример реализован со следующим объявлением в XML-файле <application +>Konqueror</application +>: </para> + +<programlisting +><Menu name="file"> + <text>&amp;Location</text> + ... + <ActionList name="openwith"> + ... +</Menu> +</programlisting> + +<para +>Функция <function +>KXMLGUIClient::plugActionList()</function +> используется для добавления действий, а<function +>KXMLGuiClient::unplugActionList()</function +> удаляет все подключённые действия. Обновление: </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 +>В отличие от статических действий, созданные здесь <emphasis +>не</emphasis +> имеют коллекцию действий в как родителя, и вы должны явно их удалять. Для этого можно установить <literal +>openWithActions.setAutoDelete(true)</literal +> в примере выше. </para> + +</simplesect> + + +<simplesect id="xmlgui-contextmenus"> +<title +>Контекстные меню</title> + +<para +>Примеры, приведённые выше содержали только случаи, где создавались главное меню приложения и его панели инструментов. Их построение полностью скрыто от вас в функции <function +>createGUI()</function +>. В XML-файле можно также описывать и контекстные меню. Получить указатель на контекстное меню можно в клиентской 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 +>Метод <function +>KXMLGUIFactory::container()</function +>ищет контейнер в XML-файле. Его описание может быть таким: </para> + +<programlisting +>... +<Menu name="context_popup"> + <Action name="file_add"/> + <Action name="file_remove"/> +</Menu> +... +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="help"> +<title +>Интерактивная справка</title> + +<para +>Существует несколько уровней такой помощи: </para> + +<itemizedlist> + +<listitem +><para +>Всплывающие подсказки. Особенно важны для панелей инструментов, где вместо текста обычно находятся значки. </para +></listitem> + +<listitem +><para +>"Что это?" ("What's this?") обычно содержит более длинное описание элемента графического интерфейса. Её можно вызвать нажатием <keycombo +><keycap +>Shift</keycap +><keycap +>F1</keycap +></keycombo +> или щелчком на знаке вопроса в заголовке окна. При этом курсор превратится в знак вопроса и пользователю нужно будет щёлкнуть на элементе, по которому он желает получить справку </para +></listitem> + +<listitem +><para +>Недостаток такого подхода состоит в том, что пользователь не может сразу узнать, предоставляет ли элемент управления справку. И после нескольких попыток получения такой справки (когда при щелчке на элементе она не будет появляться), пользователь утратит интерес к этому занятию. </para> + +<para +>Одним из преимуществ является то, что такие справки могут содержать <ulink url="kdeapi:qt/QStyleSheet" +>форматирование</ulink +>. </para> + +<para +>Пример справки "Что это?": </para> + +<mediaobject> +<imageobject +><imagedata fileref="whatsthis.png"/></imageobject> +</mediaobject> + +</listitem> + +<listitem +><para +>На конец, каждая программа должны иметь руководство. Его обычно читают (если читают - прим. перев.) в<application +>KHelpCenter</application +> (вызываемый через меню<guimenu +>Справка</guimenu +>). Также, можно воспользоваться kioslave'ом konqueror'а help:/. Руководство обычно не должно повторять информации, содержащейся в справке другой формы (всплывающие подсказки и т.д.), в нём должен быть цельный обзор возможностей прогаммы и т.п. Руководства для программ KDE должны быть в формате <ulink url="http://i18n.kde.org" +>DocBook</ulink +>. Он основан на XML и, следовательно, является свободно конвертируемым - начиная от банального HTML и заканчивая PDF. </para +></listitem> + +</itemizedlist> + +<para +>С точки зрения программиста, Qt предоставляет простой API для интерактивной справки. Чтобы присвоить подсказку элементу управления, воспользуйтесь классом <ulink url="kdeapi:qt/QToolTip" +>QToolTip</ulink +>. </para> + +<programlisting +>QToolTip::add(w, i18n("This widget does something.")) +</programlisting> + +<para +>Если меню и панели инструментов созданы с помощью <ulink url="actionpattern.html" +>модели действий</ulink +>, текст подсказки передаётся в первом аргументе конструктора <ulink url="kdeapi:kdeui/KAction.html" +>KAction</ulink +>: </para> + +<programlisting +>action = new KAction(i18n("&Delete"), "editdelete", + SHIFT+Key_Delete, actionCollection(), "del") +</programlisting> + +<para +>Здесь также возможно присвоить показываемый в панели состояния текст: </para> + +<programlisting +>action->setStatusText(i18n("Deletes the marked file")) +</programlisting> + +<para +>API для "Что это?" аналогично. Для диалогов: </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 +>Для пунктов меню: </para> + +<programlisting +>action->setWhatsThis(i18n("Deletes the marked file")) +</programlisting> + +<para +>Запуск <application +>KHelpCenter</application +> доступен из класса <ulink url="kdeapi:kdecore/KApplication" +>KApplication</ulink +>. </para> + +<programlisting +>kapp->invokeHelp() +</programlisting> + +<para +>Отобразить первую страницу справки с её содержанием. Для вывода конкретной страницы руководства передайте<function +>invokeHelp()</function +> дополнительный аргумент - ссылку-"якорь" для перехода. </para> + +</sect1> + +</chapter> + + + +<chapter id="components"> +<title +>Компоненты и службы</title> + +<sect1 id="components-services"> +<title +>Службы KDE</title> + +<simplesect id="services-whatarekdeservices"> +<title +>Что такое службы KDE?</title> + +<para +>Понятие <emphasis +>служба</emphasis +> (<emphasis +>service</emphasis +>) - основа модульной архитектуры KDE. Нет строгой технической реализации, связанной с этим понятием - службами могут быть модули, (plugins) в форма совместно используемых библиотек, или это могут быть программы, управляемые посредством протокола <ulink url="dcop.html" +>DCOP</ulink +>. Т.е. заявление, что программа является <emphasis +>службой определённого типа</emphasis +>, говорит о доступности соответствующего API. В C++ тип службы можно представить в виде абстрактного класса, а саму службу - в виде реализации. </para> + +<para +>Преимущество такого отделения очевидно: программа, поддерживающая определённый тип службы может использовать любую службу этого типа. Она просто вызывает функции, имена которых закреплены в "абстрактном классе". За счёт такой унификации, службы можно подменять, изменять без каких-либо действий над программой, использующей их. </para> + +<para +>Некоторые примеры: </para> + +<itemizedlist> + +<listitem +><para +>Движок HTML, используемый в <application +>Konqueror</application +> - встраиваемый компонент, реализующий типа служб <literal +>KParts/ReadOnlyPart</literal +> и <literal +>Browser/View</literal +>. </para +></listitem> +<listitem +><para +>В <application +>KDevelop</application +> большая часть функций разделены по реализациям типа <literal +>KDevelop/Part</literal +>. При запуске программы, загружаются все (доступные) службы, расширяющие её функциональность. </para +></listitem> +<listitem +><para +>В режиме просмотра "В виде значков", <application +>Konqueror</application +> отображает - если это включено - миниатюрные представления изображений, HTML-страниц, PDF и текстовых файлов. Если вы хотите сделать такой миниатюрный просмотр файлов, редактируемых вашим приложением, имеющих некоторый MIME-тип, вы можете реализовать службу <classname +>ThumbCreator</classname +>. </para +></listitem> + +</itemizedlist> + +<para +>Служба характеризуется не только типом, который она реализует, а ещё некоторыми <emphasis +>свойствами</emphasis +> (<emphasis +>properties</emphasis +>). Например, ThumbCreator не только реализует класс C++ с типом <classname +>ThumbCreator</classname +>, он также имеет список MIME-типов, за которые он отвечает. Аналогично, компоненты (parts) KDevelop передают при загрузке основной программе язык, который они поддерживают. Для этого в KDE есть развитый CORBA-like <emphasis +>trader</emphasis +> со сложным языком запросов. </para> + +</simplesect> + + +<simplesect id="services-definingservicetypes"> +<title +>Определение типов служб</title> + +<para +>Новые типы служб добавляются установкой их описания в каталог <filename +>KDEDIR/share/servicetypes</filename +>. В automake framework, это можно сделать заготовкой <filename +>Makefile.am</filename +>: </para> + +<programlisting +>kde_servicetypesdir_DATA = kdeveloppart.desktop +EXTRA_DIST = $(kde_servicetypesdir_DATA) +</programlisting> + +<para +>Определение <filename +>kdeveloppart.desktop</filename +> для компонента <application +>KDevelop</application +>: </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 +>Кроме обычных записей, здесь есть объявление наличия свойств. Каждое определение свойства отвечает группе <literal +>[PropertyDef::name]</literal +> в файле настроек. В этой группе, <literal +>Type</literal +> объявляет тип свойства. Возможные типы - всё, что может храниться в <ulink url="kdeapi:qt/QVariant" +>QVariant</ulink +>. </para> + +</simplesect> + + +<simplesect id="services-defininglibraryservices"> +<title +>Объявление служб общих библиотек</title> + +<para +>Они хранятся в каталоге <filename +>KDEDIR/share/services</filename +>: </para> + +<programlisting +>kde_servicesdir_DATA = kdevdoxygen.desktop +EXTRA_DIST = $(kde_servicesdir_DATA) +</programlisting> + +<para +>Файл <filename +>kdevdoxygen.desktop</filename +> объявляет модуль <literal +>KDevDoxygen</literal +> с типом службы <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 +>Кроме обычных записей, здесь есть <literal +>X-KDE-Library</literal +>. В ней должно содержаться имя библиотеки libtool (без расширения <literal +>.la</literal +>). Она также устанавливает (префиксом <literal +>init_</literal +>) имя символьного идентификатора библиотеки, возвращающего object factory. В нашем случае, библиотека должна содержать следующую функцию: </para> + +<programlisting +>extern "C" { + void *init_libkdevdoxygen() + { + return new DoxygenFactory; + } +}; +</programlisting> + +<para +>Тип класса factory <classname +>DoxygenFactory</classname +> зависит от типа службы. В примере с модулем KDevelop, factory должен быть типа <classname +>KDevFactory</classname +> (наследник <classname +>KLibFactory</classname +>). Более общим примером является <ulink url="kdeapi:kparts/KParts::Factory" +>KParts::Factory</ulink +>, который производит объекты <ulink url="kdeapi:kparts/KParts::ReadOnlyPart" +>KParts::ReadOnlyPart</ulink +> или, в большинстве случаев, <ulink url="kdeapi:kdecore/KLibFactory" +>KLibFactory</ulink +>. </para> + +</simplesect> + + +<simplesect id="services-usinglibraryservices"> +<title +>Использование служб совместно используемых библиотек</title> + +<para +>In order to use a shared library service in an application, you need to obtain a <ulink url="kdeapi:kio/KService.html" +>KService</ulink +> object representing it. This is discussed in the <ulink url="mime.html" +>section about MIME types</ulink +> (and in a section about the trader to be written :-) </para> + +<para +>Получив объект <classname +>KService</classname +>, остаётся загрузить библиотеку и получить указатель на объект 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 +>Дальнейшие действия зависят от типа службы. Обычно объекты создаются методом <ulink url="kdeapi:kdecore/KLibFactory.html#ref3" +>KLibFactory::create()</ulink +>. Для KParts, вам нужно будет передать указатель на factory KParts::Factory и использовать его метод 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 +>Объявление служб DCOP</title> + +<para +>Служба DCOP обычно реализуется в виде программы, запускаемой по запросу. Затем она переходит в цикл событий и ожидает запросов на соединение DCOP. Программа может быть интерактивной, а может полностью выполняться как демон. Примером последнего служит <literal +>kio_uiserver</literal +>, реализующий взаимодействие с пользователем типа диалога выполнения KIO. Преимущество такой реализации заключается в том, что процесс выполнения нескольких загрузок может быть отображён в одном окне, даже если они запущены разными программами. </para> + +<para +>Служба DCOP объявляется указанием не библиотеки, как в прошлом случае, а имени приложения. Также, службы DCOP не указывают ServiceType, т.к. они обычно запускаются явным указанием их имени. Дополнительные свойства занимают две строки: </para> + +<para +><literal +>X-DCOP-ServiceType</literal +> определяет метод запуска. Значение <literal +>Unique</literal +> говорит о невозможности запуска нескольких экземпляров этой службы. Это значит, что если вы попытаетесь запуститьэту службу (например, через <ulink url="kdeapi:kdecore/KApplication.html#startServiceByName" +>KApplication::startServiceByName()</ulink +>, и KDE обнаружит, что такая служба уже зарегистрирована в, то будет использована уже запущенная копия службы. В этом случае она должна быть реализована как <ulink url="kdeapi:kdecore/KUniqueApplication.html" +>KUniqueApplication</ulink +>. </para> + +<para +>Значение <literal +>Multi</literal +> для <literal +>X-DCOP-ServiceType</literal +> говорит, что одновременно можно запускать несколько экземпляров службы, так что каждая попытка запустить её приведёт к новому запуску. Значение <literal +>None</literal +> говорит о необходимости немедленного запуска службы. </para> + +<para +><literal +>X-KDE-StartupNotify</literal +> обычно должно быть false. Иначе при запуске программы будет отображаться соответствующее уведомление. </para> + +<para +>Объявление <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 +>Использование служб DCOP</title> + +<para +>Служба DCOP запускается несколькими методами класса 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 +>Обратите внимание, что пример вызова DCOP использует явное приведение аргументов. Чаще вам придётся использовать заглушку (stub), созданную dcopidl2cpp, т.к. это намного проще и меньше подвержено ошибкам. </para> + +<para +>В пиведенном примере, служба была запущена по имени ("by name"), т.е. первым аргументом <function +>KApplication::startServiceByName()</function +> является имя, указываемое в записи <literal +>Name</literal +> файла .desktop. Как альтернативу, можно использовать <function +>KApplication::startServiceByDesktopName()</function +>, которому передаётся имя файла .desktop, например <literal +>"kio_uiserver.desktop"</literal +>. </para> + +<para +>Все эти вызовы берут список URL вторым аргументом. Третий аргумент - указатель на <classname +>QString</classname +>. Если произойдёт ошибка, в это строку будет занесено (локализованное) сообщение об ошибке. </para> + +</simplesect> + +</sect1> + + +<sect1 id="components-mime"> +<title +>MIME-типы</title> + +<simplesect id="mime-whataremimetypes"> +<title +>Что такое тип MIME?</title> + +<para +>MIME- используются для описания типа содержимого файлов или потоков данных. Изначально они были введены для отправки изображений или звуковых файлов по e-mail (MIME расшифровывается как "Multipurpose Internet Mail Extensions"). Позднее, эта система также была использована в веб-браузерах для определения как обрабатывать данные, посылаемые веб-сервером. Например, HTML-страница имеет тип MIME "text/html", файл Postscript - "application/postscript". В KDE, эта идея используется повсеместно: </para> + +<itemizedlist> + +<listitem +><para +>В режиме просмотра <application +>Konqueror</application +> "В виде значков", файлы представляются значками. Каждый MIME-тип имеет ассоциированный с ним значок. </para +></listitem> + +<listitem +><para +>При нажатии по файлу в окне <application +>Konqueror</application +>, либо он просматривается во встроенном представлении, либо открывается в отдельной программе, ассоциированной с ним. </para +></listitem> + +<listitem +><para +>При переносе файлов (drag-and-drop) из одного окна в другое, последнее может принимать только определённые типы данных. </para +></listitem> + +<listitem +><para +>Данные, хранящиеся в буфере обмена, также имеют MIME-тип. Традиционно, программисты "иксов" принимают только изображения и текст, но а Qt не существует ограничений на тип данных. </para +></listitem> + +</itemizedlist> + +<para +>С приведённых выше примеров видно, что работа с MIME - достаточно сложная задача. Сначала, нужно установить соответствие между маской файла и типом MIME. KDE позволяет определить тип MIME не только по имени файла, а и по его содержимому, для случаев когда имя файла недоступно, или оно без расширения. Далее, необходимо установить связи между MIME-типами и программами или библиотеками, позволяющими обрабатывать их. </para> + +<para +>Существует большое разнообразие API для установления типа MIME данных или файлов. В общем случае, вам придётся выбирать между скоростью и достоверностью. Вы можете определить тип файла только из его расширения. Например, файл с именем <filename +>foo.jpg</filename +> скорее всего имеет тип "image/jpeg". Если же файл не имеет расширения, его тип придётся определять по его содержимому. Естественно, это занимает больше времени, особенно для удалённых файлов. Такой метод основывается на файле <filename +>KDEDIR/share/mimelnk/magic</filename +> и следовательно тяжелее расширить. В большинстве случаев, для объявления типа MIME, достаточно установить файл <literal +>.desktop</literal +>, который будет обрабатываться (с приемлемой скоростью) библиотеками KDE. </para> + +</simplesect> + + +<simplesect id="mime-definingmimetypes"> +<title +>Объявление типов MIME</title> + +<para +>Давайте объявим тип <literal +>"application/x-foo"</literal +> для нашей новой программы <application +>foobar</application +>. Прежде всего, нужно написать файл <filename +>foo.desktop</filename +> и установить его в <filename +>KDEDIR/share/mimelnk/application</filename +>. Это можно сделать добавлением следующего текста в <filename +>Makefile.am</filename +>: </para> + +<programlisting +>mimedir = $(kde_mimedir)/application +mime_DATA = foo.desktop +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>Файл <filename +>foo.desktop</filename +> должен выглядеть так: </para> + +<programlisting +>[Desktop Entry] +Type=MimeType +MimeType=application/x-foo +Icon=fooicon +Patterns=*.foo; +DefaultApp=foobar +Comment=Foo Data File +Comment[ru]=Данные для Foo +</programlisting> + +<para +>Если это .desktop файл одного из пакетов KDE, запись <literal +>"Comment[ru]"</literal +> в нём не нужна, т.к. перевод комментариев производится другим образом (через .po-файлы, находящиеся в модуле CVS kde-i18n/ru/<пакет>/desktop_<имя>.po). <filename +>.desktop</filename +> указывает значок <filename +>fooicon.png</filename +>, представляющий файл программы, например в <application +>Konqueror</application +>. </para> + +<para +>В библиотеках KDE, такое объявление типа устанавливается в экземпляре класса <ulink url="kdeapi:kio/KMimeType.html" +>KMimeType</ulink +>: </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 +>Определение MIME-типа данных</title> + +<para +>Самый быстрый метод определения типа файла - <function +>KMimeType::findByURL()</function +>. Как видно из названия, он определяется по передонному URL. Для некоторых протоколов (типа http, man, info), этот механизм не используется. Например, сценарии CGI на web-серверах написанные на Perl часто имеют расширение <literal +>.pl</literal +>, т.е. тип <literal +>"text/x-perl"</literal +>. Тем не менее, сценарий передаёт клиенту обычный HTML. В таких случаях, <function +>KMimeType::findByURL()</function +> возвращает MIME -тип <literal +>"application/octet-stream"</literal +> (тоже самое - <function +>KMimeType::defaultMimeType()</function +>), что говорит о неудачной попытке определения типа. </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 +>(у этого метода на самом деле больше аргументов, но они недокументированы) </para> + +<para +>Определение типа файла по его содержимому реализуется классом <ulink url="kdeapi:kio/KMimeMagic.html" +>KMimeMagic</ulink +>: </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 +>Также, можно определять тип области памяти. Это, например, используется в <application +>Kate</application +> для определения режима подсветки: </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 +>KMimeMagic поддерживает только локальные файлы. Для удалённых файлов: </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 +>Это приводит к загрузке части файла через KIO и его проверке. Помните, что это занимает некоторое время и блокирует программу. Используйте это только если <function +>KMimeType::findByURL()</function +> вернуло <literal +>"application/octet-stream"</literal +>. </para> + +<para +>Чтобы избежать блокирования программы, можно явно запустить KIO-задание и соединить слот с одним из его сигналов: </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 +>Установка связи MIME-типа с приложением или службой</title> + +<para +>При установке приложения, или компоненты наподобие KPart , также устанавливается и файл <literal +>.desktop</literal +>, содержащий список MIME-типов, которые оно может обрабатывать. Получить список программ и служб, обрабатывающих данный MIME-тип, можно через класс <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 +><function +>KServiceTypeProfile::offers()</function +> возвращает список в определённом пользователем порядке. Изменить предпочитаемый порядок можно командой <command +>"keditfiletype text/html"</command +>. </para> + +<para +>В приведённом выше примере запрашивался список приложений, поддерживающих <literal +>text/html</literal +>. Это будут - среди прочих - редакторы HTML типа <application +>Quanta Plus</application +>. Вы можете изменить второй агумент <literal +>"Application"</literal +> на <literal +>"KParts::ReadOnlyPart"</literal +>. В этом случае вы получите список встраиваемых компонентов, поддерживающих HTML, например KHTML. </para> + +<para +>Чтобы получить приложение по умолчанию, воспользуйтесь этим кодом: </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 +>Для более сложных запросов существует CORBA-like <ulink url="kdeapi:kio/KTrader.html" +>trader</ulink +>. </para> + +<para +>Для запуска службы с URL, воспользуйтесь <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 +>Прочее</title> + +<para +>В этом разделе мы приведём список API, относящихся к предыдущему обсуждению. </para> + +<para +>Получить значок URL. </para> + +<programlisting +>KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c"); +QString icon = KMimeType::iconForURL(url); +</programlisting> + +<para +>Выполненые URL. </para> + +<programlisting +>KURL url("http://dot.kde.org"); +new KRun(url); +</programlisting> + +</simplesect> + +</sect1> + + +<sect1 id="nettransparency"> +<title +>Поддержка сети</title> + +<simplesect id="nettransparency-intro"> +<title +>Введение</title> + +<para +>Во время world wide web, программы должны иметь доступ к ресурсам сети - загружать файлы, передавать какие-либо данные. возможность получать доступ к файлам вне зависимости от их расположения называется <emphasis +>сетевая прозрачность</emphasis +> (<emphasis +>network transparency</emphasis +>). </para> + +<para +>В прошлом было несколько попыток реализации этого. Старая файловая система NFS - одна из таких попыток на уровне POSIX API. Она приемлемо работала в локальных, тесно связанных сетях, но оказалась немасштабируемой до современных технологий. Здесь важна <emphasis +>асинхронность</emphasis +>. Пока вы ждёте загрузки страницы в вашем веб-браузере, пользовательский интерфейс не должен блокироваться. Также, прорисовка страниц не должна начинаться только после полной загрузки, а выполняться по мере поступления данных. </para> + +<para +>В библиотеках KDE, сетевая прозрачность реализована в KIO API. Основная идея этой архитектуры - <emphasis +>задание</emphasis +> (<emphasis +>job</emphasis +>) ввода/вывода (IO - input/output). Задание может копировать, удалять, перемещать файлы и т.п. После запуска, задание работает в фоновом режиме и не блокирует приложение. Сообщение между заданием и приложением - например передача данных о степени выполнения - выполняется интегрировано с циклом событий Qt. </para> + +<para +>Фоновые операции выполняются с помощью <emphasis +>ioslaves</emphasis +>. Они запускаются как отдельный процесс соединяются через доменные сокеты UNIX. Таким образом не требуется, многопотоковость и сбой slave'а не приведёт к сбою приложений, использующих его. </para> + +<para +>Расположение файла определяется URL. В его начале пишется kioslave, обрабатывающий протокол, по которому доступен файл. Например, это может быть file, http, tar и т.д. Напримерфайл из архива tar, находящегося на http-сервере может иметь URL </para> + +<programlisting +>http://www-com.physik.hu-berlin.de/~bernd/article.tgz#tar:/paper.tex +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-usingkio"> +<title +>Использование KIO</title> + +<para +>В большинстве случаев, задания создаются вызовом функций в пространстве имён KIO. Эти функции берут один или два URL как аргумент, и другое. После окончания задания, посылается сигнал <literal +>result(KIO::Job*)</literal +> и задание удаляется: </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 +>В зависимости от типа задания, можно соединить также два других сигнала. </para> + +<para +>Краткий обзор доступных функций: </para> + +<variablelist> + +<varlistentry +><term +>KIO::mkdir(const KURL &url, int permission)</term> +<listitem +><para +>Создать каталог, возможно указание прав доступа. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rmdir(const KURL &url)</term> +<listitem +><para +>Удалить каталог </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::chmod(const KURL &url, int permissions)</term> +<listitem +><para +>Изменить права доступа файла. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::rename(const KURL &src, const KURL &dest, bool overwrite)</term> +<listitem +><para +>Переименовать файл. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::symlink(const QString &target, const KURL &dest, bool overwrite, bool showProgressInfo)</term> +<listitem +><para +>Создать символическую ссылку. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::stat(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Информация о файле - размер, время изменения, права доступа. Информацию можно получить из KIO::StatJob::statResult() после завершения задания. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::get(const KURL &url, bool reload, bool showProgressInfo)</term> +<listitem +><para +>Передать данные из URL. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::put(const KURL &url, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term> +<listitem +><para +>Передать данные в URL. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::http_post(const KURL &url, const QByteArray &data, bool showProgressInfo)</term> +<listitem +><para +>Переслать данные. Специально для HTTP. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::mimetype(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Определить тип MIME. Получить его можно из KIO::MimetypeJob::mimetype() после окончания задания. </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 +>Скопировать один файл </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 +>Переименовать (переместить) файл </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::file_delete(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Удалить файл. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listDir(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Содержание каталога. При каждом его изменении посылается сигнал KIO::ListJob::entries(). </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::listRecursive(const KURL &url, bool showProgressInfo)</term> +<listitem +><para +>Аналогично listDir(), но рекурсивно. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::copy(const KURL &src, const KURL &dest, bool showProgressInfo)</term> +<listitem +><para +>Скопировать файл или каталог (рекурсивно). </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::move(const KURL &src, const KURL &dest, bool showProgressInfo)</term> +<listitem +><para +>Переименовать файл или каталог. </para +></listitem> +</varlistentry> + +<varlistentry +><term +>KIO::del(const KURL &src, bool shred, bool showProgressInfo)</term> +<listitem +><para +>Удалить файл или каталог. </para +></listitem> +</varlistentry> + +</variablelist> + +</simplesect> + + +<simplesect id="nettransparency-direntries"> +<title +>Каталоги</title> + +<para +>KIO::stat() и KIO::listDir() возвращают свой результат в типе UDSEntry, UDSEntryList соотв. Последний определён как QValueList<UDSEntry>. UDS расшифровывается как "Universal directory service". Принцип заключается в том, запись о каталоге содержит только ту информацию, доступную ioslave. Например, http slave не предоставляет информацию о правах доступа и владельцах файла. UDSEntry является списком UDSAtom'ов. Каждый атом содержит определённую часть информации. Он состоит из типа, хранящегося в m_uds и либо целого в m_long, либо строки в m_str, в зависимости от типа. </para> + +<para +>Определены следующие типы: </para> + +<itemizedlist> + +<listitem +><para +>UDS_SIZE (integer) -Размер файла. </para +></listitem> + +<listitem +><para +>UDS_USER (string) - Владелец файла. </para +></listitem> + +<listitem +><para +>UDS_GROUP (string) - Группа файла. </para +></listitem> + +<listitem +><para +>UDS_NAME (string) - Имя файла. </para +></listitem> + +<listitem +><para +>UDS_ACCESS (integer) - Права доступа как в функции libc stat() в поле st_mode. </para +></listitem> + +<listitem +><para +>UDS_FILE_TYPE (integer) - Тип файла, например, как записывается функцией stat() в поле st_mode. Вы можете использовать обычные макросы libc наподобие S_ISDIR для тестирования этого значения. Помните, что данные, предоставляемые ioslave'ами соответствуютstat(), не lstat(), т.е., например, в случае символической ссылки будет возвращаться тип файла, на который ссылка указывает. </para +></listitem> + +<listitem +><para +>UDS_LINK_DEST (string) - В случае символической ссылки, имя файла, на который она ссылается. </para +></listitem> + +<listitem +><para +>UDS_MODIFICATION_TIME (integer) - Время (тип time_t) последнего изменения файла, как сохраняется функцией stat() в поле st_mtime. </para +></listitem> + +<listitem +><para +>UDS_ACCESS_TIME (integer) - Время последнего доступа, как записывается функцией stat() в поле st_atime. </para +></listitem> + +<listitem +><para +>UDS_CREATION_TIME (integer) - Время создания файла, как, например, записывается функцией stat() в поле st_ctime. </para +></listitem> + +<listitem +><para +>UDS_URL (string) - URL файла. </para +></listitem> + +<listitem +><para +>UDS_MIME_TYPE (string) - MIME-тип файла </para +></listitem> + +<listitem +><para +>UDS_GUESSED_MIME_TYPE (string) - MIME-тип файла, по предположению slave. В отличие от предыдущего, не всегда точный (т.к. в некоторых случаях точное определение типа требует больших затрат ресурсов). Например, класс KRun явно проверяет MIME-тип только если он не располагает точной информацией. </para +></listitem> + +</itemizedlist> + +<para +>Не смотря на всю гибкость хранения информации в <classname +>UDSEntry</classname +>, для программиста это всё же составляет некоторые трудности (задержки во времени реализации). Например, чтобы определить MIME-тип файла, вам нужно итерировать по всем атомам и проверить является ли <literal +>m_uds</literal +> <literal +>UDS_MIME_TYPE</literal +>. к счастью, существует более простой API: класс <classname +>KFileItem</classname +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-syncuse"> +<title +>Синхронное использование</title> + +<para +>Часто, асинхронное API KIO слишком сложное для использования, и асинхронность не всегда важна. Например, в программе, которая может работать только с одним документом в одно время, можно сделать немногое в время загрузки файла. Для таких простых случаев, вы можете воспользоваться функциями класса KIO::NetAccess. Например, чтобы скопировать файл: </para> + +<programlisting +>KURL source, target; +source = ...; +target = ... +KIO::NetAccess::copy(source, target); +</programlisting> + +<para +>Функция возвратится после выполнения задания. Будет показана информация о прогрессе, а программа всё равно будет получать события прорисовки. </para> + +<para +>Некоторый интерес также представляет комбинация функций <function +>removeTempFile()</function +> и <function +>download()</function +>. Последняя загружает файл по заданному URL и сохраняет его во временный файл с уникальным именем. Имя файла сохраняется во второй аргумент. <emphasis +>Если</emphasis +> URL ссылается на локальный файл, второй аргумент содержит локальное имя файла. Функция<function +>removeTempFile()</function +>удаляет файл если он получился в результате загрузки. Вот заготовка кода для загрузки файла не смотря на его положение: </para> + +<programlisting +>KURL url; +url = ...; +QString tempFile; +if (KIO::NetAccess::download(url, tempFile) { + // load the file with the name tempFile + // загрузить файл с именем tempFile + KIO::NetAccess::removeTempFile(tempFile); +} +</programlisting> + +</simplesect> + + +<simplesect id="nettransparency-metadata"> +<title +>Метаданные</title> + +<para +>Интерфейс к заданиям KIO достаточно абстрактный. При создании задания, вы можете добавить метаданные к нему. Каждый элемент метаданных состоит из пары ключ-значение. Например, чтобы указать HTTP-slave не использовать кэш при загрузке страницы: </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 +>Такой же механизм используется и в обратном направлении. Метод <function +>Job::queryMetaData()</function +> позволяет запрашивать данные. Например HTTP-slave может предоставить ключ<literal +>"modified"</literal +>, содержащий (в виде строки) дату последнего изменения страницы. Пример: </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 +>Очередь</title> + +<para +>Используя KIO API, вам не нужно разбираться в подробностях запуска IO slave'ов и связи с ними. Чаще всего нужно просто запустить задание и обрабатывать посылаемые им сигналы. </para> + +<para +>На самом деле, за занавесками всё намного сложнее. При создании задания оно помещается в очередь, когда приложение возвращается в главный цикл событий, KIO создаёт процессы slave для заданий в очереди. После завершения работы, задание не уничтожается, а находится в "подвешенном состоянии" около 3 минут - на случай если поступит запрос на новое задание с теми же протоколом и узлом. </para> + +<para +>Если slave'ы запускаются по мере поступления запросов (т.е. параллельно), эта схема называется <emphasis +>прямой</emphasis +>. Это не всегда приемлемо т.к. требует дополнительных затрат памяти. </para> + +<para +>Чтобы избежать этого, можно воспользоваться <emphasis +>расписанием</emphasis +> (<emphasis +>schedule</emphasis +>) заданий. При этом одновременно может выполняться только ограниченное число заданий (сейчас это 3). Следующие задания будут ставиться в очередь: </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 +>Третий вариант - <emphasis +>ориентация на соединения</emphasis +>. Например, для IMAP slave, не имеет смысла запускать несколько процессов для одного сервера. Поэтому нельзя запускать несколько заданий к одному серверу. Это можно сделать с помощью KIO::Scheduler: </para> + +<programlisting +>KURL baseUrl("imap://[email protected]"); +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 +>После запуска такого задания, гарантируется, что они выполнятся полностью. </para> + +</simplesect> + + +<simplesect id="nettransparency-definingslaves"> +<title +>Добавление ioslave</title> + +<para +>Далее мы обсудим процесс создания ioslave. По аналогии со службами, установка заключается в написании небольшого конфигурационного файла. Следующая заготовка Makefile.am устанавливает протокол ftp: </para> + +<programlisting +>protocoldir = $(kde_servicesdir) +protocol_DATA = ftp.protocol +EXTRA_DIST = $(mime_DATA) +</programlisting> + +<para +>Содержание 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 +>Запись <literal +>"protocol"</literal +> определяет протоколы, за которые отвечает slave. <literal +>"exec"</literal +> - имя библиотеки, реализующей slave. Призпуске задания, <command +>"kdeinit"</command +> загружает указанную билиотеку. </para> + +<para +>Строки "input" "output" не используются на данный момент. </para> + +<para +>Оставшиеся строки в файле <literal +>.protocol</literal +> определяют возможности slave'а. Последние обычно намного проще, чем KIO API. Например, чтобы получить рекурсивный листинг каталога, запускается задание для сканирования верхнего каталога, затем для каждого подкаталога запускается ещё одно, отдельное, задание. При этом существует ограничение на количество одновременно запущенных заданий. Аналогично, чтобы скопировать файл с протоколом, не поддерживающим это напрямую, (например<literal +>ftp:</literal +>), KIO читает файл и передаёт его по назначению. </para> + +<para +>Т.к. slave' загружаются в виде совместно используемых библиотек, но действуют отдельно, их структура исходных файлов немного отличается от структуры обычной библиотеки. Функция, вызываемая для запуска называется <function +>kdemain()</function +>. В ней обычно выполняются некоторые инициализации, а затем она входит в цикл событий: </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 +>Реализация ioslave</title> + +<para +>Slave'ы реализованы в виде подклассов<classname +>KIO::SlaveBase</classname +>. Следовательно, действия, перечисленные в<literal +>.protocol</literal +> отвечают определённым виртуальным функциям <classname +>KIO::SlaveBase</classname +>, которые должны реализовываться в slave'е, а именно: </para> + +<variablelist> + +<varlistentry +><term +>reading - читает данные из URL</term> +<listitem +><para +>void get(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>writing - записывает данные в URL и создаёт файл если его не существует.</term> +<listitem +><para +>void put(const KURL &url, int permissions, bool overwrite, bool resume)</para +></listitem +></varlistentry> + +<varlistentry +><term +>moving - переименовывает файл.</term> +<listitem +><para +>void rename(const KURL &src, const KURL &dest, bool overwrite)</para +></listitem +></varlistentry> + +<varlistentry +><term +>deleting - удаляет файл или каталог.</term> +<listitem +><para +>void del(const KURL &url, bool isFile)</para +></listitem +></varlistentry> + +<varlistentry +><term +>listing - содержание каталога.</term> +<listitem +><para +>void listDir(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>makedir - создаёт каталог.</term> +<listitem +><para +>void mkdir(const KURL &url, int permissions)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>Также, существуют виртуальные функции, которые не нужно заносить в файл <literal +>.protocol</literal +> - KIO автоматически может определить поддерживаются они или нет. </para> + +<variablelist> + +<varlistentry +><term +>Сведения о файле, аналогично stat() из C.</term> +<listitem +><para +>void stat(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Изменяет права доступа файла.</term> +<listitem +><para +>void chmod(const KURL &url, int permissions)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Определяет MIME-тип файла.</term> +<listitem +><para +>void mimetype(const KURL &url)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Копирует файл.</term> +<listitem +><para +>copy(const KURL &url, const KURL &dest, int permissions, bool overwrite)</para +></listitem +></varlistentry> + +<varlistentry +><term +>Создаёт символическую ссылку.</term> +<listitem +><para +>void symlink(const QString &target, const KURL &dest, bool overwrite)</para +></listitem +></varlistentry> + +</variablelist> + +<para +>Все реализации должны завершаться одним из двух вызовов - <literal +>finished()</literal +> или <literal +>error()</literal +> (с кодом ошибки в первом аргументе и строкой объяснения в втором). Коды ошибок перечислены в enum <type +>KIO::Error</type +>. Второй аргумент - обычно URL. Это используется например в<function +>KIO::Job::showErrorDialog()</function +>. </para> + +<para +>Для slave'ов, реализующих сетевые протоколы, нужно реализовать функцию <function +>SlaveBase::setHost()</function +>. Она вызывается для передачи имени узла, порта, имени пользователя и пароля. Вообще, метаданные, предоставляемые приложением, можно получить с помощью <function +>SlaveBase::metaData()</function +>. Наличие их можно определить функцией <function +>SlaveBase::hasMetaData()</function +>. </para> + +</simplesect> + + +<simplesect id="nettransparency-communication"> +<title +>Обратная связь с приложением</title> + + + +<itemizedlist> + +<listitem +><para +><function +>get()</function +> посылает блоки данных. Это сделано с помощью функции <function +>data()</function +>, аргументом которой является <classname +>QByteArray</classname +>. Если вы посылаете большой файл, вызовите <function +>data()</function +> с меньшими блоками. Функция <function +>finished()</function +> вызывается по завершению передачи. </para +></listitem> + +<listitem +><para +><function +>listDir()</function +> выдаёт сведения о содержимом каталога. Для этого вызовите <function +>listEntries()</function +> с аргументом типа<classname +>KIO::UDSEntryList</classname +>. Подобно<function +>data()</function +>, вы можете сделать это несколько раз. В конце вызовите <function +>listEntry()</function +> с вторым аргументом равным true. Вы также можете вызвать<function +>totalSize()</function +> для передачи количества элементов каталога. </para +></listitem> + +<listitem +><para +><function +>stat()</function +> выдаёт сведения о файле, например его размер, MIME-тип и т.д. Они упаковываются в один элемент типа <classname +>KIO::UDSEntry</classname +>, обсуждаемый ранее. Используйте <function +>statEntry()</function +> для передачи такого элемента приложению. </para +></listitem> + +<listitem +><para +><function +>mimetype()</function +> вызывает <function +>mimeType()</function +> с аргументом типа string. </para +></listitem> + +<listitem +><para +><function +>get()</function +> и <function +>copy()</function +> могут предоставлять информацию о процессе выполнения с помощью методов <function +>totalSize()</function +>, <function +>processedSize()</function +>, <function +>speed()</function +>. Общий и выполненный размеры передаются в байтах, скорость - в байтах в секунду. </para +></listitem> + +<listitem +><para +>Вы можете посылать произвольные пары ключ-значение с помощью <function +>setMetaData()</function +>. </para +></listitem> + +</itemizedlist> + +</simplesect> + + +<simplesect id="nettransparency-interacting"> +<title +>Взаимодействие с пользователем</title> + +<para +>Иногда slave должен взаимодействовать с пользователем. Это может быть в виде информационных сообщений, диалогов авторизации и подтверждения замены файла. </para> + +<itemizedlist> + +<listitem +><para +><function +>infoMessage()</function +> - информационное сообщение, такое как "Retrieving data from <host>" http slave'а, обычно отображаемое в панели состояния. На стороне приложения, этот метод отвечает сигналу <function +>KIO::Job::infoMessage()</function +>. </para +></listitem> + +<listitem +><para +><function +>warning()</function +> - предупреждение в окне сообщений с <function +>KMessageBox::information()</function +>. </para +></listitem> + +<listitem +><para +><function +>messageBox()</function +> - расширенная версия предыдущего. Здесь можно устанавливать свои кнопки, текст заголовка. Для подробностей обратитесь к определению enum <type +>SlaveBase::MessageBoxType</type +>. </para +></listitem> + +<listitem +><para +><function +>openPassDlg()</function +> - Открыть диалог для ввода имени пользователя и пароля. </para +></listitem> + +</itemizedlist> + +</simplesect> + +</sect1> + +</chapter> + + + +<appendix id="misc"> +<title +>Лицензии</title> + +&underFDL; +&underGPL; + +</appendix> + +</book> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/Makefile.am b/tde-i18n-ru/docs/kdevelop/kdevelop/Makefile.am new file mode 100644 index 00000000000..e8ff7c7b1b8 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = ru +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/Makefile.in b/tde-i18n-ru/docs/kdevelop/kdevelop/Makefile.in new file mode 100644 index 00000000000..3bfddbfd9f4 --- /dev/null +++ b/tde-i18n-ru/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 = ru +#>- 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=unixdev.docbook kdevelop-install.docbook app-files.docbook file-browsers.docbook index.docbook applicationwizard.docbook getting-started.docbook plugin-tools.docbook project-management.docbook kdevelop-scripting.docbook cvs.docbook setup.docbook credits.docbook documentation.docbook commands.docbook app-uimodes-examples.docbook index.cache.bz2 app-menu.docbook survey-manual.docbook editing.docbook app-misc-info.docbook app-changelog.docbook nutshell.docbook project-advanced.docbook adv-build-management.docbook Makefile.in class-browsers.docbook kdevelop-survey.docbook debugger.docbook Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook kdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook kdevelop-survey.docbook kdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/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 app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook kdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook kdevelop-survey.docbook kdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + done + +uninstall-nls: + for base in app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook kdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook kdevelop-survey.docbook kdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in app-uimodes-examples.docbook editing.docbook commands.docbook documentation.docbook file-browsers.docbook kdevelop-install.docbook debugger.docbook applicationwizard.docbook index.docbook app-files.docbook app-menu.docbook project-management.docbook cvs.docbook adv-build-management.docbook credits.docbook kdevelop-survey.docbook kdevelop-scripting.docbook unixdev.docbook survey-manual.docbook nutshell.docbook project-advanced.docbook plugin-tools.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook app-misc-info.docbook setup.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/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-ru/docs/kdevelop/kdevelop/adv-build-management.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/adv-build-management.docbook new file mode 100644 index 00000000000..359267e043c --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/adv-build-management.docbook @@ -0,0 +1,172 @@ +<chapter id="adv-build-management"> +<title +>Расширенное использование менеджера проектов</title> +<indexterm zone="adv-build-management" +><primary +>&automake;</primary +></indexterm> + +<sect1 id="buildconfigurations"> +<title +>Несколько конфигураций сборки</title> +<indexterm zone="buildconfigurations" +><primary +>конфигурации сборки</primary +><secondary +>несколько</secondary +></indexterm> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- buildconfigurations --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="crosscompiling"> +<title +>Кросс-платформенное компилирование</title> +<indexterm zone="crosscompiling" +><primary +>кросс-платформенное компилирование</primary +></indexterm> +<indexterm zone="crosscompiling" +><primary +>сборка, компиляция</primary +><secondary +>кросс-платформенное</secondary +></indexterm> +<indexterm zone="crosscompiling" +><primary +><option +>--host</option +></primary +></indexterm> + +<para +>Если у вас есть кросс-компиляторы, вы можете компилировать программы под процессоры и операционные системы, отличные от текущей. Коллекция компиляторов &GNU; GCC может также быть собрана с поддержкой кросс-компиляции. Для подробностей см. <ulink url="info://gcc/Cross-Compiler" +>info-страницы GCC</ulink +>. Некоторые дистрибутивы &Linux; также предоставляют уже собранные кросс-платформенные версии компиляторов. </para> + +<para +>Выполнить кросс-компиляцию пакетов, основанных на <application +>automake</application +>, можно указанием ключа <option +>--host</option +> в команде запуска сценария configure и установкой переменных окружения <envar +>CC</envar +> и <envar +>CXX</envar +>. В &kdevelop; есть возможность создания нескольких конфигураций сборки. Для подробностей см. <xref linkend="buildconfigurations"/>. После того, как вы создали новую конфигурацию сборки через диалог <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +>, добавьте ключ </para> + +<screen +><option +>--host=</option +><replaceable +>платформа</replaceable +></screen> + +<para +>в опции configure. <replaceable +>Платформа</replaceable +> указывается в виде </para> + +<programlisting +>процессор-поставщик-ОС</programlisting> +<para +>или</para> +<programlisting +>процессор-поставщик-ядро-ОС</programlisting> + +<para +>Кроем, того вы можете использовать краткую форму, например <wordasword +>i386-linux</wordasword +> или <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; — это вариант библиотеки &Qt;, который не использует X Window, а прорисовывает графику напрямую на framebuffer системы &Linux;. Это полезно для встраиваемых систем с ограничениями по использованию памяти. &API; этой библиотеки полностью совместимо с библиотекой для X11. </para> + +<para +>Разработка приложения для &qte; в &kdevelop; не очень отличается от разработки под &Qt; для X11. На самом деле, вы даже можете использовать одну кодовую базу для обоих версий. Если вы используете менеджер autoproject, вы можете переключиться на версию embedded передачей ключа <option +>--enable-embedded</option +> скрипту configure. Это можно сделать в диалоге <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +> в разделе <guilabel +>Параметры configure</guilabel +>. Ключом <option +>--with-qt-dir=DIR</option +> можно указать каталог, в котором установлен &qte;. </para> + +<para +>После конфигурации и сборки вашего приложения с этими ключами, оно будет использовать библиотеку <filename +>libqpe.so</filename +>. Его нельзя будет запустить совместно с X11. Чтобы протестировать его, запустите его из программы <application +>qvfb</application +> (&Qt; Virtual Frame Buffer). </para> + +<screen +><command +>app <option +>-qws</option +> <option +>-display QVFb:0</option +></command +></screen> + +<para +>В можете создать несколько сборочных конфигураций, как описано выше. </para> + +<para +>Приложения для &qte; обычно выполняются как отдельные команды на устройстве, для которого они сделаны. Trolltech также поддерживает Qtopia, коллекцию приложений для PIM, обзора web, и других направлений, работающих вместе. Это стандартное окружение, например, на КПК Sharp Zaurus. Вы можете писать приложения, интегрированные в это окружение, используя Qtopia SDK. Это достигается созданием основного класса вашего приложения подклассом <classname +>QPEApplication</classname +> и сборкой с подключением библиотеки <filename +>libqpe.so</filename +>. Если вы разрабатываете ваше приложение используя менеджер autoproject, вам нужно добавить ключ <option +>--enable-qtopia</option +> в опции configure. </para> + +</sect1 +> <!-- qtembedded --> + +</chapter +> <!-- adv-build-management --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/app-changelog.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/app-changelog.docbook new file mode 100644 index 00000000000..4d0fd6868d3 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/app-changelog.docbook @@ -0,0 +1,85 @@ +<appendix id="app-changelog"> +<title +>История изменений</title> +<sect1 id="changes"> +<title +>Список изменений, внесённых в настоящий документ</title> + +<itemizedlist> + <listitem> + <para +>3 января 2003 Bernd Gehrmann, Caleb Tennis <itemizedlist> + <listitem> + <para +>начальная разметка руководства</para> + </listitem> + <listitem> + <para +>добавлены черновые наброски многих глав</para> + </listitem> + </itemizedlist> + </para> + </listitem> + + + <listitem> + <para +>1 августа 2004 Bernd Pol, Ian Wadham <itemizedlist> + <listitem> + <para +>руководство слегка реорганизовано</para> + </listitem> + <listitem> + <para +>дописаны некоторые пропущенные главы</para> + </listitem> + </itemizedlist> + </para> + </listitem> + + <listitem> + <para +>2 мая 2005 Volker Paul — Много изменений, в том числе: <itemizedlist> + <listitem> + <para +>руководство разбито по принцип «один файл на главу»</para> + </listitem> + <listitem> + <para +>добавлена справка по командам меню (описание ещё не закончено)</para> + </listitem> + <listitem> + <para +>пример работы с AppWizard в getting-started.docbook</para> + </listitem> + <listitem> + <para +>реорганизованы главы согласно руководству Konqueror</para> + </listitem> + <listitem> + <para +>перенесены в приложения: «Установка», «Разработка под Unix», «Вкратце — cоветы и подсказки»</para> + </listitem> + <listitem> + <para +>переписано приложение по модулям, включая модуль генератора списка listplugins.sh</para> + </listitem> + </itemizedlist> + </para> + <para +>всё ещё далеко до финала, но это небольшой шаг вперёд.</para> + </listitem> + + <listitem> + <para +>20 мая 2006 Bernd Pol — заполнено ещё несколько мест, находящихся «в процессе написания»:</para> + </listitem> + +</itemizedlist> + +</sect1 +> <!-- changes --> +</appendix +> <!-- app-changelog --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/app-files.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/app-files.docbook new file mode 100644 index 00000000000..39fa2c37e13 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/app-files.docbook @@ -0,0 +1,1598 @@ +<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 +>Конфигурационные файлы, используемые &kdevelop;</title> + +<para +>&kdevelop; использует целое множество файлов для хранения разнообразных настроек Их можно разделить на две группы: </para> +<simplelist> + <member +><link linkend="app-files-default" +>Конфигурация &kdevelop; по умолчанию</link +>. </member> + <member +><link linkend="app-files-user" +>Пользовательские конфигурации</link +> — модифицированные файлы первой группы. </member> +</simplelist> + +<sect1 id="app-files-default"> +<title +>Основная конфигурация &kdevelop;</title> + +<para +>Во время установки &kdevelop; в подпапки <filename class="directory" +>$<envar +>KDEDIR</envar +></filename +> (обычно это одна <filename class="directory" +>/opt/kde</filename +> или <filename class="directory" +>/usr/local/kde</filename +>, см. <link linkend="kdevelop-install" +>Установка &kdevelop;</link +>) записываюися файлы с начальной конфигурацией. </para> + +<sect2 id="app-files-default-config"> +<title +>Конфигурация &kdevelop; по умолчанию</title> + +<para +>Параметры, связанные непосредственно с &kdevelop;, хранятся в одном файле, который находится в папке <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/config/</filename +>: </para> +<variablelist> + <varlistentry> + <term +><filename +>kdeveloprc</filename +></term> + <listitem +><para +>Файл содержит основные параметры &kdevelop;. Он будет скопирован в <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config</filename +> для каждого пользователя, запустившего &kdevelop; в первый раз. </para +></listitem> + </varlistentry> +</variablelist> + +</sect2 +> <!-- app-files-default-config --> + +<sect2 id="app-files-default-apps"> +<title +>Стандартные значения, связанные с приложением</title> + +<para +>Большая часть функциональности &kdevelop; реализуется через модули KPart (см. обзор в приложении <link linkend="plugin-tools" +>Модули</link +>). Каждый такой компонент имеет собственный набор конфигурационных файлов, начальная версия которых хранится в подпапках <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/</filename +>. </para> + +<para +>Соответствующие им подпапки начинаются с <filename +>kdev</filename +>. Большинство из них предназначены только для внутреннего использования. Их можно организовать в несколько групп: <simplelist> + <member +><link linkend="app-files-default-apps-stdalone" +>Самостоятельные приложения</link +></member> + <member +><link linkend="app-files-default-apps-task" +>Проблемно-ориентированные модули</link +></member> + <member +><link linkend="app-files-default-apps-project" +>Модули работы с проектами</link +></member> + <member +><link linkend="app-files-default-apps-lang" +>Модули поддержки языков</link +></member> +</simplelist> +</para> + +<itemizedlist> + <listitem id="app-files-default-apps-stdalone" +><itemizedlist> + <title +>Самостоятельные приложения</title> + <listitem> + <para +><filename class="directory" +>kdevelop/</filename +> — содержит конфигурацию &kdevelop; &IDE;.</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>licenses/</filename +> — содержит тексты лицензий.</para +></listitem> + <listitem +><para +><filename class="directory" +>pics/</filename +> — содержит заставки &kdevelop;, &kdevelop; Assistant и &kdevelop; Designer.</para +></listitem> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — стандартные настройки профиля модулей. На время написания в папке находится только один файл <filename +>tiny</filename +>, определяющий минимальный набор активных модулей &kdevelop;.</para +></listitem> + <listitem +><para +><filename +>eventsrc</filename +> — некоторые сообщения, переведенные нв другие языки.</para +></listitem> + <listitem +><para +><filename +>kdevelopui.rc</filename +> — базовое меню и кнопки панелей инструментов, используемые в &kdevelop;.</para +></listitem> + <listitem +><para +><filename +>kdevhtml_partui.rc</filename +> — пункт <guimenuitem +>Печать...</guimenuitem +> в меню <guimenu +>Файл</guimenu +>, <guimenuitem +>Копировать</guimenuitem +> в меню <guimenu +>Правка</guimenu +> и кнопки перехода на основной панели инструментов когда модулем <guilabel +>Документация</guilabel +> открыт файл &HTML;.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevassistant/</filename +> — меню и панели инструментов просмотрщика документации.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdesigner/</filename +> и <filename class="directory" +>kdevdesignerpart/</filename +> — меню и панели инструментов для редактора форм.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-task"> + <title +>Проблемно-ориентированные модули</title> + <listitem id="app-files-default-abbrev"> + <para +><filename class="directory" +>kdevabbrev/</filename +> — модуль сокращений:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — определения сокращений, используемых командой <guilabel +>Завершить текст</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — определения шаблонов, используемых командой <guilabel +>Автозамена</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — вставляет пункты <guimenuitem +>Завершить текст</guimenuitem +> и <guimenuitem +>Автозамена</guimenuitem +> в меню <guimenu +>Правка</guimenu +>.</para +></listitem> +</itemizedlist> + </listitem> + <listitem id="app-files-default-appwizard"> + <para +><filename class="directory" +>kdevappwizard/</filename +> — файлы, используемые Мастером приложений:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>importfiles/</filename +> — файлы проектов <filename +>.kdevelop</filename +>, используемых при создании новый проектов.</para +></listitem> + <listitem +><para +><filename class="directory" +>imports/</filename +> — шаблоны фавйлов <filename +>.desktop</filename +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>template-common/</filename +> — другие файлы, включаемые в дистрибутив проектов.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — конфигурационные файлы, содержащие данные, которые включаются в каталог нового проекта.</para +></listitem> + <listitem +><para +><filename +>*.png</filename +> — изображения, используемые в Мастере приложений.</para +></listitem> + <listitem +><para +><filename +>*.tar.gz</filename +> — архивы с исходными файлами, которые добавляются в папку создаваемого проекта.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevastyle/</filename +> — пункт <guimenuitem +>Переформатировать код</guimenuitem +> вы меню <guimenu +>Правка</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — основные элементы меню <guimenu +>Сборка</guimenu +> и панели инструментов <guilabel +>Сборка (&kdevelop;)</guilabel +>.</para +></listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview/</filename +> — файлы, используемые модулем <guilabel +>работы с классами</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>pics/</filename +> — значки, используемые в дереве <guilabel +>классов</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevclassview.tc</filename +> — пункт <guimenuitem +>Диаграмма наследования</guimenuitem +> в меню <guimenu +>Проект</guimenu +>, а также выпадающий список перехода по классам на основной панели инструментов.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevcloser/</filename +> — пункты, отвечающие за закрытие, в меню<guimenu +>Окно</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevctags/</filename +> — пункт <guimenuitem +>CTags</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcvsservice/</filename +> — значок, используемый на вкладке <guilabel +>CvsService</guilabel +> и для маленького сценария, добавляющего файл в хранилище &cvs;.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdebugger/</filename +> — основная часть меню <guimenu +>Отладка</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdiff/</filename +> — пункт <guimenuitem +>Окно просмотра различий</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevdistpart/</filename +> — пункт <guimenuitem +>Публикация и распространение</guimenuitem +> в меню <guimenu +>Проект</guimenu +>.</para +></listitem> + <listitem id="app-files-default-kdevdoc"> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — файлы, используемые модулем <guilabel +>Документация</guilabel +>:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>en/</filename +> и <filename class="directory" +>pics/</filename +> — файлы, используемые модулем поиска <application +>htdig</application +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>tocs/</filename +> — стандартные файлы описания документации &kdevelop; (для подробностей см. <link linkend="toc-file-structure" +>Структура &kdevelop; TOC</link +>).</para +></listitem> + <listitem +><para +><filename +>kdevpart_documentation.rc</filename +> — пункты поиска в меню <guimenu +>Справка</guimenu +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevdoxygen/</filename +> — пункты меню для работы с генератором API-документации <guilabel +>Doxygen</guilabel +>.</para +></listitem> + <listitem id="app-files-default-filecreate"> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — содержит файлы, используемые <guilabel +>мастером новых файлов:</guilabel +> <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — шаблоны исходных файлов различных типов.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — пункт <guimenuitem +>Создать</guimenuitem +> в меню <guimenu +>Файл</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — описания поддерживаемых типов файлов для служебного окна <guilabel +>Новый файл</guilabel +>.</para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfilter/</filename +> — пункты<guimenuitem +>Выполнить команду...</guimenuitem +> и <guimenuitem +>Фильтровать выделение через команду...</guimenuitem +> в меню<guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevfullscreen/</filename +> — пункт <guimenuitem +>Полный экран</guimenuitem +> в меню <guimenu +>Вид</guimenu +> и соответствующий значок на панели инструментов.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgrepview/</filename +> — пункт <guimenuitem +>Найти в файлах...</guimenuitem +> в меню<guimenu +>Правка</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhistory/</filename +> — пункты <guimenuitem +>Назад</guimenuitem +> и <guimenuitem +>Вперёд</guimenuitem +> в меню <guimenu +>Вид</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavadebugger/</filename +> — меню <guimenu +>Отладка Java</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevoutputviews/</filename +> — пункты <guimenuitem +>Следующая ошибка</guimenuitem +> и <guimenuitem +>Предыдущая ошибка</guimenuitem +> в меню <guimenu +>Вид</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpartexplorer/</filename +> — пункт <guimenuitem +> +>Диспетчер компонентов</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevquickopen/</filename +> — пункт <guimenuitem +>Быстрое открытие файла...</guimenuitem +> в меню <guimenu +>Файл</guimenu +> и пункты <guimenuitem +>Быстрое открытие класса....</guimenuitem +> и <guimenuitem +>Быстрое открытие метода...</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevregexptest/</filename +> — пункт <guimenuitem +>Проверить регулярное выражение...</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevreplace/</filename +> — пункт <guimenuitem +>Поиск-Выбор-Замена...</guimenuitem +> в меню <guimenu +>Правка</guimenu +>.</para +></listitem> + <listitem id="app-files-default-tips" +><para +><filename class="directory" +>kdevtipofday/</filename +> — отвечает за пункт <guimenuitem +>Совет дня</guimenuitem +> в меню <guimenu +>Справка</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtools/</filename +> — различные пункты меню, созданные в <guimenu +>Меню инструментов</guimenu +> и <guilabel +>Внешние инструменты</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevvalgrind/</filename +> — пункты <guimenuitem +>Проверка утечек памяти с помощью Valgrind</guimenuitem +> и <guimenuitem +>Профилировать в KCachegrind</guimenuitem +> в меню <guimenu +>Отладка</guimenu +>.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-project"> + <title +>Компоненты, отвечающие за создание/сборку проектов</title> + <listitem +><para +><filename class="directory" +>kdevadaproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevantproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> для создания проектов Ant.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevautoproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов, основывающихся на. &GNU; Tools &automake;. Также — <guimenuitem +>Добавить перевод...</guimenuitem +> и <guimenuitem +>Конфигурация сборки</guimenuitem +> в меню <guimenu +>Проект</guimenu +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevcustomproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов, использующих статические Makefile.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevgenericproject/</filename +> — определения меню для экспериментального универсального генератора проектов. На текущий момент (3.1.0) — не используется.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhaskellproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов на языке Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов на языке Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevtrollproject/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за создание проектов, использующих &Qt; QMake.</para +></listitem> + </itemizedlist +></listitem> + + <listitem +><itemizedlist id="app-files-default-apps-lang"> + <title +>Компоненты, отвечающие за поддержку языков</title> + <listitem +><para +><filename class="directory" +>kdevadasupport/</filename +> — пункты меню <guimenu +>Сервис</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за работу с проектами Ada.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevbashsupport/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за разработку Bash-сценариев.</para +></listitem> + <listitem id="app-files-default-apps-lang-cpp"> + <para +><filename class="directory" +>kdevcppsupport/</filename +> — файлы, используемые Мастером приложений для создания приложений C++:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>newclass/</filename +> — шаблоны заголовочных и исходных файлов.</para +></listitem> + <listitem +><para +><filename class="directory" +>subclassing/</filename +> — шаблоны декларации/определения классов в исходны файлах.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates</filename +> — заготовки шаблонов, которые будут использоваться в Мастере новых файлов для данного проекта. </para +></listitem> + <listitem +><para +><filename +>configuration</filename +> — пустой шаблон для добавления макросов.</para +></listitem> + <listitem +><para +><filename +>kdevcppsupport.rc</filename +> — пункты <guimenuitem +>Дополнить текст</guimenuitem +> и <guimenuitem +>Генерировать член класса</guimenuitem +> в меню <guimenu +>Правка</guimenu +>, <guimenuitem +>Переключить заголовочный/исходный файл</guimenuitem +> в меню <guimenu +>Вид</guimenu +>, <guimenuitem +>Новый класс</guimenuitem +> в меню <guimenu +>Проект</guimenu +> и на основной панели инструментов.</para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para +><filename class="directory" +>kdevfortransupport/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за работу с проектами на языке Fortran.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevhaskellsupport/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов, отвечающие за работу с проектами на языке Haskell.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevjavasupport/</filename +> — пользовательский интерфейс для разработки &Java;-приложений.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpascalsupport/</filename +> — пользовательский интерфейс для разработки приложений на языке Pascal.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevperlsupport/</filename +> — пункты меню <guimenu +>Проект</guimenu +> и <guimenu +>Справка</guimenu +> для разработки сценариев на языке Perl.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevphpsupport/</filename +> — пользовательский интерфейс и файлы для определения функций для разработки на языке PHP.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevpythonsupport/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и <guimenu +>Справка</guimenu +> и соответствующие кнопки на панели инструментов для разработки сценариев на языке Python.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevrubysupport/</filename +> — пункты меню <guimenu +>Сборка</guimenu +> и соответствующие кнопки на панели инструментов для разработки сценариев на языке Ruby.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevscriptproject/</filename +> — пользовательский интерфейс для работы со специальными проектами. На данный момент (3.1.0) — не используется.</para +></listitem> + <listitem +><para +><filename class="directory" +>kdevsqlsupport/</filename +> — пользовательский интерфейс для работы с SQL-проектами. На данный момент (3.1.0) — не используется.</para +></listitem> + </itemizedlist +></listitem> + +</itemizedlist> + +</sect2 +> <!-- app-files-default-apps --> + +</sect1 +> <!-- app-files-default --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-user"> +<title +>Пользовательская конфигурация</title> + +<para +>Вся информация о параметрах, определяемых пользователем, хранится в двух подкаталогах <filename class="directory" +>$<envar +>KDEHOME</envar +></filename +>: <simplelist> + <member +><link linkend="app-files-user-apps" +>Конфигурация приложения</link +> хранится в <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +></member> + <member +><link linkend="app-files-user-config" +>Конфигурация ресурсов</link +> - в <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</member> +</simplelist> +</para> + +<sect2 id="app-files-user-apps"> +<title +>Конфигурация приложения</title> + +<para +>Все изменения <link linkend="app-files-default" +>конфигурации &kdevelop; по умолчанию</link +>, внесенные пользователем, а также все пользовательские параметры, которые не хранятся в <link linkend="app-files-user-config" +>Конфигурации ресурсов</link +>, находяся в подкаталогах <filename +>kdev...</filename +> <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/apps/</filename +>. </para> +<para +>Большинство таких конфигурационных файлов используются модулями &kdevelop; для вывода своих пунктов меню и кнопок на панелях инструментов. Таким образом, они предсталвяют интерес только если с пользовательским интерфейсом что-то не так. </para> +<note +><para +>При первом запуске &kdevelop; скопирует все файлы из <filename class="directory" +>$<envar +>KDEDIR</envar +>/apps/</filename +> в <filename class="directory" +>$<envar +>KDEHOME</envar +>/apps/</filename +> и будет вносить изменения только в локальные (для текущего пользователя) их копии. </para +></note> + +<itemizedlist> + <listitem> + <para +><filename class="directory" +>kdevabbrev/</filename +> — модуль сокращений:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>sources/</filename +> — на текущий момент пустая; &kdevelop; использует <link linkend="app-files-default-abbrev" +>файлы определения сокращений по умолчанию</link +>. Они используются командой <guilabel +>Завершить текст</guilabel +>.</para +></listitem> + <listitem +><para +><filename class="directory" +>templates/</filename +> — изменённые пользователем определения шаблонов, используемых командой <guilabel +>Автозамена</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevabbrev.rc</filename +> — вставляет пункты <guimenuitem +>Завершить текст</guimenuitem +> и <guimenuitem +>Автозамена</guimenuitem +> в меню <guimenu +>Правка</guimenu +>.</para +></listitem> + </itemizedlist +> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevappwizard/</filename +> — пункты <guimenuitem +>Новый проект...</guimenuitem +> и <guimenuitem +>Импортировать существующий проект...</guimenuitem +> меню <guimenu +>Проект</guimenu +>. Мастер приложений будет использовать <link linkend="app-files-default-appwizard" +>параметры конфигурации по умолчанию</link +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevastyle/</filename +> — вставляет пункт <guimenuitem +>Переформатировать код</guimenuitem +> в меню <guimenu +>Правка</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevautoproject/</filename +> — меню и панель инструментов <guimenu +>Сборка</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevclassview/</filename +> — пункты <guimenuitem +>Диаграмма наследования</guimenuitem +> меню <guimenu +>Проект</guimenu +>, а также выпадающий список навигатора по классам на основной панели инструментов.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcloser/</filename +> — пункт <guimenuitem +>Закрыть выделенные окна...</guimenuitem +> меню <guimenu +>Окно</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevcppsupport/</filename +> — содержит конфигурацию, используемую Мастером приложений для генерирования проектов на C++. Основная же часть настроек берётся из <link linkend="app-files-default-apps-lang-cpp" +>папки конфигурации по умолчанию</link +>.</para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>newclass/</filename +> — шаблоны заголовков и исходных файлов.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>pcs/</filename +> — файлы базы данных, используемых &kdevelop; для генерирования файла Persistent Code Store (<filename +>.pcs</filename +>) проекта на C++.</para> + </listitem> + <listitem> + <para +><filename +>kdevcppsupport.rc</filename +> — пункты <guimenuitem +>Дополнить текст</guimenuitem +> и <guimenuitem +>Генерировать член класса</guimenuitem +> в меню <guimenu +>Правка</guimenu +>, <guimenuitem +>Переключить заголовочный/исходный файл</guimenuitem +> в меню <guimenu +>Вид</guimenu +>, <guimenuitem +>Новый класс</guimenuitem +> в меню <guimenu +>Проект</guimenu +> и на основной панели инструментов.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevctags/</filename +> — пункт <guimenuitem +>CTags</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdebugger/</filename +> — основная часть меню <guimenu +>Отладка</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdiff/</filename +> — пункт <guimenuitem +>Окно просмотра различий</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdocumentation/</filename +> — содержит файлы, используемые модулем<guilabel +>документации</guilabel +> в дополнение к <link linkend="app-files-default-kdevdoc" +>файлам конфигурации по умолчанию</link +>.</para> + <para +>Подкаталоги <filename class="directory" +>kdevdocumentation/</filename +> преимущественно содержат информацию о регистрации. Сами файлы настройки хранятся в файлах <link linkend="app-files-user-config-doc" +><quote +><filename +>doc...pluginrc</filename +></quote +></link +> в каталоге <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +>.</para> + <itemizedlist> + <listitem> + <para +><filename class="directory" +>bookmarks/</filename +> — отвечает за вкладку <guilabel +>Закладки</guilabel +> модуля<guilabel +>документации</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>index/</filename +> — кэш для ускорения поиска через вкладку <guilabel +>Индекс</guilabel +> модуля <guilabel +>документации</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>search/</filename +> — файлы, используемые средством поиска <application +>htdig</application +>, обрабатывающем запросы со вкладки <guilabel +>Поиск</guilabel +> модуля <guilabel +>документации</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename +>kdevpart_documentation.rc</filename +> — пункты поиска в меню <guimenu +>Справка</guimenu +>.</para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevdoxygen/</filename +> — пункты меню для работы с генератором API-документации <guilabel +>Doxygen</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevelop/</filename +> — некоторые параметры, используемые для базовой настройки &kdevelop;:</para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>profiles/</filename +> — профиль модулей (сначала там есть только профиль <filename +>FullIDE</filename +>, определяющий полный набор активных модулей).</para +></listitem> + <listitem +><para +><filename +>kdevelopui.rc</filename +> — базовое меню и кнопки панелей инструментов, используемые в &kdevelop;.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilecreate/</filename +> — содержит файлы, используемые <guilabel +>мастером новых файлов:</guilabel +></para> + <itemizedlist> + <listitem +><para +><filename class="directory" +>file-templates/</filename +> — текст, помещаемый в создаваемые исходные файлы для каждого из их типов. Другие шаблоны можно найти в папке с <link linkend="app-files-default-filecreate" +>конфигурацией по умолчанию</link +>.</para +></listitem> + <listitem +><para +><filename +>kdevpart_filecreate.rc</filename +> — пункт <guimenuitem +>Создать</guimenuitem +> в меню <guimenu +>Файл</guimenu +>.</para +></listitem> + <listitem +><para +><filename +>template-info.xml</filename +> — описания поддерживаемых типов файлов для служебного окна <guilabel +>Новый файл</guilabel +>.</para +></listitem> + </itemizedlist> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfilter/</filename +> — пункты<guimenuitem +>Выполнить команду...</guimenuitem +> и <guimenuitem +>Фильтровать выделение через команду...</guimenuitem +> в меню<guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevfullscreen/</filename +> — пункт <guimenuitem +>Полный экран</guimenuitem +> в меню <guimenu +>Вид</guimenu +> и соответствующий значок на панели инструментов.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevgrepview/</filename +> — пункт <guimenuitem +>Найти в файлах...</guimenuitem +> в меню<guimenu +>Правка</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevoutputviews/</filename +> — пункты <guimenuitem +>Следующая ошибка</guimenuitem +> и <guimenuitem +>Предыдущая ошибка</guimenuitem +> в меню <guimenu +>Вид</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevpartexplorer/</filename +> — пункт <guimenuitem +> +>Диспетчер компонентов</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevquickopen/</filename +> — пункт <guimenuitem +>Быстрое открытие файла...</guimenuitem +> в меню <guimenu +>Файл</guimenu +> и пункты <guimenuitem +>Быстрое открытие класса....</guimenuitem +> и <guimenuitem +>Быстрое открытие метода...</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevregexptest/</filename +> — пункт <guimenuitem +>Проверить регулярное выражение...</guimenuitem +> в меню <guimenu +>Сервис</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevreplace/</filename +> — пункт <guimenuitem +>Поиск-Выбор-Замена...</guimenuitem +> в меню <guimenu +>Правка</guimenu +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtipofday/</filename +> — пункт <guimenuitem +>Совет дня</guimenuitem +> в меню <guimenu +>Справка</guimenu +>. HTML-файл советами находится в папке с <link linkend="app-files-default-filecreate" +>конфигурацией по умолчанию</link +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevtools/</filename +> — различные пункты меню, созданные в <guimenu +>Меню инструментов</guimenu +> и <guilabel +>Внешние инструменты</guilabel +>.</para> + </listitem> + <listitem> + <para +><filename class="directory" +>kdevvalgrind/</filename +> — пункты <guimenuitem +>Проверка утечек памяти с помощью Valgrind</guimenuitem +> и <guimenuitem +>Профилировать в KCachegrind</guimenuitem +> в меню <guimenu +>Отладка</guimenu +>.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-apps --> + +<sect2 id="app-files-user-config"> +<title +>Конфигурация ресурсов</title> + +<para +>В папке <filename class="directory" +>$<envar +>KDEHOME</envar +>/share/config/</filename +> находится две группы файлов, различаемых по символам в начале и конце их имён: <simplelist> + <member +><quote +><filename +>doc...pluginrc</filename +></quote +> - <link linkend="app-files-user-config-doc" +>файлы, используемые модулем документации.</link +></member> + <member +><quote +><filename +>kdev...rc</filename +></quote +> - <link linkend="app-files-user-config-kdev" +>файлы, используемые &kdevelop; и его модулями</link +>.</member> +</simplelist> +</para> + +<itemizedlist id="app-files-user-config-kdev"> +<title +>Конфигурационные файлы, используемые &kdevelop;</title> + <listitem> + <para +><filename +>kdevabbrevrc</filename +> — текущая конфигурация модуля <guilabel +>автозамены</guilabel +>.</para> + <note +><para +>Здесь определяется только будет использоваться автозамена, или нет. Определения правил автозамены будут помещаться в <filename +>$<envar +>KDEHOME</envar +>/share/apps/kdevabbrev/templates/templates</filename +>.</para +></note> + </listitem> + <listitem> + <para +><filename +>kdevassistantrc</filename +> — конфигурация автономного просмотрщика документации &kdevelop; Assistant.</para> + <note +><para +>Большинство общих настроек разделяются с файлом настроек &kdevelop; IDE - <filename +>kdeveloprc</filename +>.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevassistantuimode4rc</filename +> — конфигурация многодокументных режимов (позиции панелей инструментов, служебных окон и т.д.) автономного просмотрщика документации &kdevelop; Assistant.</para +></listitem> + <listitem> + <para +><filename +>kdevclassviewrc</filename +> — параметры <guilabel +>режима просмотра</guilabel +> вкладки панели классов.</para> + <note +><para +>Эти параметры глобальны, но модуль <guilabel +>просмотр классов</guilabel +> можно отключить в отдельном проекте.</para +></note> + </listitem> + <listitem +><para +><filename +>kdevcppsupportrc</filename +> — некоторые параметры, используемые для работы с CPP-файлами. В частности, здесь вы найдёте настройки <guilabel +>генератора классов C++</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevdocumentationrc</filename +> — параметры модуля <guilabel +>документации</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdeveloprc</filename +> — содержит глобальные настройки, используемые &kdevelop; IDE и &kdevelop; Assistant.</para +></listitem> + <listitem +><para +><filename +>kdevelopuimode4rc</filename +> — текущие настройки многодокументного режима &kdevelop; IDE.</para +></listitem> + <listitem +><para +><filename +>kdevfileselectorrc</filename +> — параметры модуля <guilabel +>выбора файлов</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevfileviewrc</filename +> — параметры цветового оформления имён файлов для модуля <guilabel +>интеграции с CVS</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevfilterrc</filename +> — параметры модуля <guilabel +>фильтрации через конвейер интерпретатора</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevgrepviewrc</filename +> — параметры модуля <guilabel +>grep</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevsnippetrc</filename +> — параметры модуля <guilabel +>заготовок кода</guilabel +>.</para +></listitem> + <listitem +><para +><filename +>kdevtoolsrc</filename +> — параметры модуля <guilabel +>расширения меню Сервис</guilabel +>.</para +></listitem> +</itemizedlist> + +<itemizedlist id="app-files-user-config-doc"> +<title +>Конфигурационные файлы, используемые модулем документации</title> + <listitem +><para +><filename +>docchmpluginrc</filename +> — информация о файлах &Microsoft; CHM.</para +></listitem> + <listitem +><para +><filename +>doccustompluginrc</filename +> — хранит информацию про файлы документации в нестандартном формате, определённые на вкладке <guilabel +>Коллекция документации</guilabel +> диалога настроек программы.</para +></listitem> + <listitem +><para +><filename +>docdevhelppluginrc</filename +> — хранит информацию про файлы документации в формате GNOME 2 DevHelp, определяемые на вкладке <guilabel +>Коллекция документации DevHelp</guilabel +> диалога настроек программы.</para +></listitem> + <listitem +><para +><filename +>docdoxygenpluginrc</filename +> — хранит информацию про файлы API-документации, сгенерированной Doxygen, определяемые на вкладке <guilabel +>Коллекция документации Doxygen</guilabel +> диалога настроек программы.</para +></listitem> + <listitem +><para +><filename +>dockdevtocpluginrc</filename +> — хранит информацию про файлы-индексы документации в формате KDevelopTOC, определяемые на вкладке <guilabel +>KDevelopTOC Documentation Collection</guilabel +> диалога настроек программы.</para +></listitem> + <listitem +><para +><filename +>docqtpluginrc</filename +> — хранит информацию про файлы документации QT.</para +></listitem> +</itemizedlist> + +</sect2 +> <!-- app-files-user-config --> + +</sect1 +> <!-- app-files-user --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="app-files-project"> +<title +>Параметры проектов</title> + +<para +>Большая часть параметров проекта хранится в файле <filename +><имя-проекта>.kdevelop</filename +>, а также <filename +><имя-проекта>.kdevses</filename +>: </para> +<simplelist> + <member +><filename +><имя-проекта>.kdevelop</filename +> — общая конфигурация проекта.</member> + <member +><filename +><имя-проекта>.kdevses</filename +> — сведения для восстановления параметров прошлого сеанса работы с проектом.</member> +</simplelist> +<para +>Оба файла имеют &XML;-формат. </para> + +<sect2> +<title +>Постоянное хранилище кода</title> + +<para +>Третий файл конфигурации проекта - <filename +><имя-проекта>.kdevelop.pcs</filename +>. Это двоичный файл, хранящий кеш внутреннего анализатора, позволяющий ускорить процесс загрузки. Также, такие файлы хранят ифнормацию, используемую для инструмента <guilabel +>авто-дополнения кода</guilabel +>. </para> + +<note +><para +>На вкладке <guilabel +>Авто-дополнение кода</guilabel +> страницы <guilabel +>Поддержка C++</guilabel +> параметров проекта можно установить дополнительные <filename +>.pcs</filename +>-файлы. Информация о них хранится в <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-ru/docs/kdevelop/kdevelop/app-menu.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/app-menu.docbook new file mode 100644 index 00000000000..44b188de869 --- /dev/null +++ b/tde-i18n-ru/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 +>Обзор меню и панелей инструментов</title> + +<para +>(... в процессе написания ...) </para> + +<sect1 id="app-menus-menu"> +<title +>Меню</title> + +<para +>(... в процессе написания ...) </para> + +<sect2 id="app-menus-menu-common"> +<title +>Общие меню</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- app-menus-menu-common --> + +<sect2 id="app-menus-menu-project"> +<title +>Меню, связанные с проектами</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- app-menus-menu-project --> + +<sect2 id="app-menus-menu-specific"> +<title +>Меню модулей</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- app-menus-menu-specific --> + +</sect1 +> <!-- app-menus-menu --> + +<sect1 id="app-menus-tool"> +<title +>Панели инструментов</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- app-menus-tool --> + +</appendix +> <!-- app-menus --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/app-misc-info.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/app-misc-info.docbook new file mode 100644 index 00000000000..fb057e16c6c --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/app-misc-info.docbook @@ -0,0 +1,28 @@ +<appendix id="app-misc-info"> +<title +>Дополнительная информация</title> +<sect1 id="gettinginformation"> +<title +>Получение информации</title> +<para +>(... в процессе написания ...) </para> +</sect1 +> <!-- gettinginformation --> + +<sect1 id="app-reporting-bugs"> +<title +>Отчёты об ошибках</title> +<para +>(... в процессе написания ...) </para> +</sect1 +> <!-- app-reporting-bugs --> + +<sect1 id="app-licensing"> +<title +>Лицензирование</title> +&underFDL; &underGPL; </sect1 +> <!-- app-licensing --> +</appendix +> <!-- app-misc-info --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/app-uimodes-examples.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/app-uimodes-examples.docbook new file mode 100644 index 00000000000..a4756d70cde --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/app-uimodes-examples.docbook @@ -0,0 +1,180 @@ +<appendix id="app-uimodes-examples"> +<title +>&kdevelop; в разных режимах интерфейса</title> + +<sect1 id="ideal-desc"> +<title +>Режим IDEAl</title> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-ideal-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Снимок экрана</phrase +></textobject> + <caption +><para +>&kdevelop; в режиме IDEAl</para +></caption> + </mediaobject> +</screenshot> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-ideal-mode-0.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Снимок экрана</phrase +></textobject> + <caption +><para +>&kdevelop; в режиме IDEAl с закрытыми вкладками</para +></caption> + </mediaobject> +</screenshot> + +<para +>Этот снимок экрана демонстрирует удобство режима IDEAl, когда доступно максимально большое рабочее пространство. Все инструменты доступны через соответствующие вкладки. </para> +<para +>Возможно, вам потребуется некоторое время чтобы привыкнуть к значкам панели вкладок. Наведите курсор мыши на один из значков и через секунду появится подсказка. На снимке экрана отображена подсказка к вкладке <quote +>Менеджера Automake</quote +>. </para> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +</sect1 +> <!-- ideal-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="mdi-desc"> +<title +>Дочерние окна</title> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-mdi-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Снимок экрана</phrase +></textobject> + <caption +><para +>&kdevelop; в режиме <quote +>Дочерние окна</quote +></para +></caption> + </mediaobject> +</screenshot> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +</sect1 +> <!-- mdi-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="tabbed-desc"> +<title +>Вкладки</title> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-tabbed-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Снимок экрана</phrase +></textobject> + <caption +><para +>&kdevelop; в режиме <quote +>Вкладки</quote +></para +></caption> + </mediaobject> +</screenshot> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +</sect1 +> <!-- tabbed-desc --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="toplevel-desc"> +<title +>Отдельные окна</title> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevelop-toplevel-mode.png" format="PNG"/> + </imageobject> + <textobject +><phrase +>Снимок экрана</phrase +></textobject> + <caption +><para +>&kdevelop; в режиме <quote +>Отдельные окна</quote +></para +></caption> + </mediaobject> +</screenshot> + +<para +><link linkend="uimodes-survey" +>Вернуться к обзору режимов интерфейса</link +>. </para> + +</sect1 +> <!-- toplevel-desc --> + +</appendix +> <!-- app-uimodes-examples --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/applicationwizard.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/applicationwizard.docbook new file mode 100644 index 00000000000..b9beb4239fe --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/applicationwizard.docbook @@ -0,0 +1,1320 @@ +<chapter id="applicationwizard"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Начало работы — создание проекта</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 +>Создание проекта</primary +></indexterm> + +<para +>В &kdevelop; разработка программного обеспечения организована в рамках <emphasis +>проектов</emphasis +>. Проект содержит всё, что относится к данному задаче программирования: файлы исходного кода, файлы данных, средства управления, в том числе система сборки, доступ ко всем компонентам и к любым дополнительным инструментам. Словом всё, что нужно для получения реально работающей программы. </para> +<para +>Такая организация позволяет легко переключаться между независимыми задачами. Это очень удобно, если вы работаете над несколькими приложениями одновременно, что бывает очень часто. Откройте проект в &kdevelop; и вы сразу сможете продолжить работу над ним с того места, где остановились в прошлый раз. </para> + +<sect1 id="new-projects"> +<title +>Новые проекты</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 +>проект</primary> + <secondary +>новый</secondary +></indexterm> + +<para +>При создании нового проекта нужно выполнить множество формальных процедур: указать структуру папок проекта, создать базовые заголовочные файлы и файлы реализации, осуществить первоначальную настройку сборочной системы и так далее. </para> +<para +>&kdevelop; обеспечивает простой способ создания нового проекта — <emphasis +>Мастер создания нового проекта</emphasis +>. Его можно запустить из меню <menuchoice +><guimenu +>Проект</guimenu +><guimenuitem +>Создать проект</guimenuitem +></menuchoice +>. </para> +<para +>Мастер проекта значительно упрощает и автоматизирует создание нового проекта: </para> +<orderedlist> + <listitem +><para +>На первом этапе вы можете использовать один из предлагаемых шаблонов проектов. </para +></listitem> + <listitem +><para +>Там же необходимо указать некоторую <link linkend="new-projects-start-general" +> общую информацию</link +> по проекту: названия приложения, его размещения и так далее. </para +></listitem> + <listitem +><para +>На следующем шаге решите, будете ли вы использовать <link linkend="new-projects-start-cvs" +>систему контроля версий</link +>, такую, как например, CVS, и, если будете, укажите необходимые данные. </para +></listitem> + <listitem +><para +>Выберите шаблоны для <link linkend="new-projects-start-templates" +>заголовочных файлов и файлов реализации</link +> (если есть). </para +></listitem> + <listitem +><para +>Теперь осталось <link linkend="new-projects-start-build" +>сгенерировать начальные файлы</link +>, структуру папок, начальные заголовочные файлы, файлы реализации и служебные файлы для управления проектом, например каркас для make. </para +></listitem> +</orderedlist> +<para +>И это всё! Теперь у вас есть база для начала продуктивной работы. </para> +<para +>А теперь рассмотрим это более подробно... </para> + +<sect2 id="new-projects-start"> +<title +>Начальные шаги</title> + +<indexterm zone="new-projects-start"> + <primary +>диалог</primary> + <secondary +>Новый проект</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>проект</primary> + <secondary +>Новый проект</secondary> + <tertiary +>диалог</tertiary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>проект</primary> + <secondary +>шаблоны</secondary +></indexterm> +<indexterm zone="new-projects-start"> + <primary +>шаблоны</primary> + <secondary +>проект</secondary +></indexterm> + +<para +>Чтобы создать новый проект, выберите пункт <guimenuitem +>Создать проект</guimenuitem +> из меню <guimenu +>Проект</guimenu +>: </para> + +<screenshot id="screenshot-newprojectwizard"> + <mediaobject> + <imageobject> + <imagedata fileref="create-new-project.png" format="PNG"/> + </imageobject> + <caption +><para +>Начало создания проекта </para +></caption> + </mediaobject> +</screenshot> + +<para +>Диалог разделён на две части. В верхней вы можете выбрать язык программирования, который будет использоваться для написания программы, нижняя служит для ввода некоторой общей информации. </para> + +<sect3 id="new-projects-start-type"> +<title +>Выбор языка программирования и типа приложения</title> + +<indexterm zone="new-projects-start-type"> + <primary +>проект</primary> + <secondary +>тип приложения</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>проект</primary> + <secondary +>язык программирования</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>проект</primary> + <secondary +>язык</secondary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>язык</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>язык программирования</primary +></indexterm> +<indexterm zone="new-projects-start-type"> + <primary +>приложение</primary> + <secondary +>тип</secondary +></indexterm> + +<para +>Слева вверху находится список доступных языков программирования, например: </para> + +<itemizedlist> + <listitem +><para +>C++ <indexterm> + <primary +>C++</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C <indexterm> + <primary +>C</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>C++ <indexterm> + <primary +>C++</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>База данных (проекты на SQL) <indexterm> + <primary +>SQL</primary> + <secondary +>новый проект</secondary +></indexterm> + <indexterm> + <primary +>База данных</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Fortran <indexterm> + <primary +>Fortran</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Haskell <indexterm> + <primary +>Haskell</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Java <indexterm> + <primary +>Java</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>PHP <indexterm> + <primary +>PHP</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Pascal <indexterm> + <primary +>Pascal</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Perl <indexterm> + <primary +>Perl</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Python <indexterm> + <primary +>Python</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Ruby <indexterm> + <primary +>Ruby</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Оболочка (скрипты на Bash) <indexterm> + <primary +>Bash</primary> + <secondary +>новый проект</secondary +></indexterm> + <indexterm> + <primary +>оболочка</primary> + <secondary +>новый проект</secondary +></indexterm> + </para +></listitem> +</itemizedlist> + +<para +>Эти папки не содержат собственно средств языка, в них располагаются только <emphasis +>шаблоны</emphasis +> новых проектов, то есть отправная точка для начала разработки на том или другом языке. Если вы раскроете все папки, то увидите множество отдельных шаблонов в зависимости от типа поставленной задачи и сферы применения. </para> +<para +>При выборе шаблона в правой части окна показывается его <emphasis +>краткое описание</emphasis +> и <emphasis +>снимок экрана</emphasis +> главного окна приложения, основанного на выбранном шаблоне. </para> +<para +>Выберите шаблон, наиболее точно отвечающий вашим целям. Затем введите общую информацию, как описано ниже. </para> + +<formalpara> +<title +>Выбор системы управления проектом</title> +<para +>Каждый шаблон привязан к определённой <link linkend="makesystems" +>системе управления проектом</link +>. </para> +</formalpara> + +</sect3 +> <!-- new-projects-start-type --> + +<sect3 id="new-projects-start-general"> +<title +>Указание общей информации</title> + +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>свойства</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>свойства</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>приложение</primary> + <secondary +>имя</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>имя</primary> + <secondary +>приложение</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>папка</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>папка</primary> + <secondary +>проект</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>Расположение</primary> + <secondary +>новый проект</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>автор</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>электронная почта</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>автор</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>электронная почта</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>main.cpp</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>main.cpp</primary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>проект</primary> + <secondary +>лицензия</secondary +></indexterm> +<indexterm zone="new-projects-start-general"> + <primary +>лицензия</primary +></indexterm> + +<para +>В нижнем разделе <guilabel +>Свойства</guilabel +> диалога <guilabel +>Новый проект</guilabel +> можно указать его <guilabel +>свойства</guilabel +> — данные для построения структуры проекта. </para> +<formalpara> +<title +>Имя приложения</title> +<para +>Введите его в верхнее поле <guilabel +>свойств</guilabel +> с соответствующим названием. В нашем примере это <quote +>MyApp</quote +>. </para> +</formalpara> +<para +>Обратите внимание, что в имени разрешается использовать только такие символы: <itemizedlist> + <listitem +><para +>английские буквы в нижнем и верхнем регистрах</para +></listitem> + <listitem +><para +>цифры</para +></listitem> + <listitem +><para +>символ подчёркивания</para +></listitem> +</itemizedlist> +</para> +<para +>Эти ограничения установлены в связи с тем, что указанное имя будет использовано для <emphasis +>именования некоторых классов</emphasis +> в создаваемом проекте. Поэтому ограничения на имя приложения отражают ограничения на именование переменных в языках программирования. </para> +<formalpara> +<title +>Конечное расположение</title> +<para +>Также имя приложения будет использовано при формировании <guilabel +>конечного расположения</guilabel +> создаваемого проекта. </para> +</formalpara> +<para +>Имя приложения переводится в нижний регистр и добавляется к указанному расположению. </para> +<para +>Если сформированный по имени приложения путь уже существует, кнопка <guibutton +>Далее ></guibutton +> будет неактивна (серого цвета) и мастер известит вас об этом ещё и сообщением. </para> + +<formalpara> +<title +>Конечное расположение</title> +<para +>Есть два способа выбрать другой каталог для вашего приложения — указать другое имя или изменить расположение проектов. </para> +</formalpara> +<para +>Второй вариант можно осуществить во втором поле <guilabel +>свойств</guilabel +> с названием <guilabel +>Расположение</guilabel +>. Здесь вы должны ввести <emphasis +>путь к каталогу</emphasis +>, в котором будет создан подкаталог с именем проекта (в котором, в свою очередь, будут созданы другие подкаталоги разработки). Полный путь к проекту будет показан в поле <guilabel +>Конечное расположение</guilabel +>. </para> +<para +>При открытии диалога поле <guilabel +>Расположение</guilabel +> заполняется автоматически. Значение для него берётся из поля <guilabel +>Каталог проектов по умолчанию:</guilabel +> в <link linkend="setup-general" +>главном разделе диалога настройки KDevelop</link +>. В нашем случае в качестве основного пути для новых проектов используется каталог <filename class="directory" +>/home/devel/projects/</filename +>. </para> +<para +>Убедитесь что каталог проекта, указанный в поле <guilabel +>Конечное расположение</guilabel +> не существует в вашей файловой системе. </para> +<!--TODO add tab description Project Options --> +<note +><para +>Однако путь, указанный в поле <guilabel +>Расположение</guilabel +> должен существовать. Если это не так, мастер создания проекта сообщит об этом добавлением <quote +>(неверно)</quote +> в строку <guilabel +>Конечное расположение</guilabel +>. </para +></note> + +<screenshot id="screenshot-createnewprojectoptions"> + <mediaobject> + <imageobject> + <imagedata fileref="createnewprojectoptions.png" format="PNG"/> + </imageobject> + <caption +><para +>Настройка CVS для создаваемого проекта </para +></caption> + </mediaobject> +</screenshot> + +<formalpara> +<title +>Параметры проекта</title> +<para +>Данные, которые показываются на втором шаге, не являются критичными для проекта. Просто укажите ваше имя (то есть имя автора программы, к которому можно будет обращаться по поводу её работы и развития) в поле <guilabel +>Автор</guilabel +> и правильный адрес электронной почты в поле <guilabel +>Электронная почта</guilabel +> чтобы пользователи программы могли поддерживать с вами связь. </para> +</formalpara> + +<note> +<orderedlist> + <listitem +><para +>Мастер постарается заполнить их значениями, взятыми из соответствующих разделов Центра управления KDE. </para +></listitem> + <listitem +><para +>Эта информация будет встроена в шаблоны программных файлов. Например, для программ &kde; C++ вы сможете найти её в начале файла <filename +>main.cpp</filename +>. </para +></listitem> + <listitem +><para +>Из всех полей, <emphasis +>необязательным</emphasis +> является <guilabel +>Электронная почта</guilabel +>, так как не все разработчики могут иметь доступ в Интернет. </para +></listitem> +</orderedlist> +</note> + +<formalpara> +<title +>Версия и лицензия</title> +<para +>Введите номер версии, с которого нужно начать, и лицензию, в соответствии с которой вы хотите распространять ваше приложение. </para> +</formalpara> + +<para +>Если вы выбрали тип приложения (например, C или C++), к которому существуют шаблоны программных файлов, на следующих этапах вы можете увидеть уведомление о лицензии в (см. раздел «<link linkend="new-projects-start-templates" +>Шаблоны программных файлов</link +>»). </para> +<para +>Если вы выбрали <quote +>другую</quote +> <guilabel +>лицензию</guilabel +>, вам нужно будет ввести её текст самостоятельно. </para> + +<note +><para +>Информация о версии и используемой лицензии также будет встроена в шаблоны программных файлов, в форме, удобной для изменения. </para +></note> + +<para +>Нажмите кнопку <guibutton +>Далее ></guibutton +>. </para> +</sect3 +> <!-- new-projects-start-general --> + +</sect2 +> <!-- new-projects-start --> + +<sect2 id="new-projects-start-cvs"> +<title +>Система управления версиями</title> + +<indexterm zone="new-projects-start-cvs"> + <primary +>CVS</primary> + <secondary +>новый проект</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>проект</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>база данных</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>версия</primary> + <secondary +>база данных</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs"> + <primary +>версия</primary> + <secondary +>CVS</secondary +></indexterm> + +<para +>Здесь вы можете выбрать <guilabel +>систему контроля версий</guilabel +>. </para> + +<note +><para +>Здесь всё зависит от проекта, подробности о &CVS; вы можете найти в главе <link linkend="cvs" +>Использование &CVS;</link +>. </para +></note> + +<formalpara> +<title +>Система контроля версий не нужна</title> +<para +>По умолчанию <guilabel +>Система контроля версий</guilabel +> для проекта <guilabel +>Не используется</guilabel +>. Если вы не хотите использовать эту функцию, просто нажмите <guibutton +>Далее ></guibutton +>. </para> +</formalpara> + +<formalpara> +<title +>Использование &CVS;</title> +<para +>В нашем примере мы используем <quote +>&CVS;</quote +>. Если вы выберете эту систему контроля версий, будут показаны поля, которые нужно заполнить. </para> +</formalpara> + +<screenshot id="screenshot-newproject-cvs"> + <mediaobject> + <imageobject> + <imagedata fileref="create-new-project-cvs.png" format="PNG"/> + </imageobject> + <caption +><para +>Настройка CVS для создаваемого проекта </para +></caption> + </mediaobject> +</screenshot> + +<para +>Система контроля версий, такая как &CVS; (<quote +>Concurrent Versions System</quote +>, система конкурирующих версий) записывает копии файлов проекта в некоторое подобие базы данных. В &CVS; вы можете передать файлы (<quote +>commit</quote +>) в репозиторий или загрузить их обратно (<quote +>checkout</quote +>или <quote +>update</quote +>). Особенностью системы контроля версий является структурный метод хранения файлов, который всегда позволяет вернуться к более раннему состоянию разработки, если вы допустили неисправимые ошибки. &CVS; также позволяет сотрудничать нескольким разработчикам в большом проекте (как &kdevelop;), не вмешиваясь в работу друг друга. </para> + +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>репозиторий</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>репозиторий</primary> + <secondary +>CVS</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>локальный</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>CVS</primary> + <secondary +>удалённый</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-root"> + <primary +>локальный репозиторий CVS</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 +>Локальный репозиторий &CVS;</title> +<para +>&CVS; ведёт собственную базу данных версий файлов, которая хранится в так называемом <emphasis +>корне &CVS;</emphasis +>. Вам нужно будет указать путь к корню &CVS;, если вы хотите использовать эту систему управления версиями. </para> +</formalpara> + +<para +><emphasis +>Расположение локального &CVS;.</emphasis +> Если вы разрабатываете программу самостоятельно, использование &CVS; локально пригодится как удобная система резервного копирования. Обычно она располагается в вашем домашнем каталоге под именем <filename +>cvsroot</filename +>: </para> +<para +><userinput +><filename class="directory" +>/home/devel/cvsroot</filename +></userinput +> (где <filename +>devel</filename +> — имя пользователя в системе) </para> + +<note +><para +>Это краткая форма — на самом деле, перед ней должна быть приставка <computeroutput +>:local:</computeroutput +>. Использование краткой формы разрешено только если она начинается со слэша (<computeroutput +>/</computeroutput +>). То есть полный адрес корня локального &CVS; будет выглядеть так: <filename class="directory" +>:local:/home/devel/cvsroot</filename +>. </para +></note> + +<para +>Введите путь к корню &CVS;. </para> +<para +><emphasis +>Создание локального корня &CVS;.</emphasis +> Если локальный корень &CVS; не существует, &kdevelop; может изменить это с помощью команды &CVS;. Для этого нажмите кнопку <guibutton +>Создать локальный репозиторий</guibutton +>. </para> +<note +><para +>&kdevelop; только <emphasis +>передаёт команды</emphasis +> системе &CVS; на создание репозитория, не делая ничего самостоятельно. К счастью, &CVS; продуман достаточно хорошо, и, перед созданием нового репозитория &CVS; в указанном вами каталоге, проверяет наличие в нём уже существующего корня &CVS; в нём. </para +></note> + +<para +><emphasis +>Удалённый &CVS;.</emphasis +>Возможно вы захотите расположить репозиторий на удалённом сервере, особенно если над проектом работает несколько разработчиков. Тогда введите <acronym +>URL</acronym +> репозитория &CVS; в поле <guilabel +>Репозиторий</guilabel +>. Например, чтобы подключиться к серверу &CVS; &kde;: </para> +<para +><userinput +><filename class="directory" +>:pserver:<replaceable +>mylogin</replaceable +>@cvs.kde.org:/home/kde</filename +></userinput +>, где <replaceable +>mylogin</replaceable +> соответствует имени регистрации вашей учётной записи &CVS; в репозитории &kde;. </para> + +<indexterm zone="new-projects-start-cvs-remote"> + <primary +>удалённый репозиторий</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 +>Виды удалённых серверов &CVS;</title> +<para +>Есть два типа удалённых серверов &CVS;: это <emphasis +>pserver</emphasis +>, использующий авторизацию без шифрования, и <emphasis +>ext</emphasis +>, в котором доступно шифрование <acronym +>rsh</acronym +> или <acronym +>ssh</acronym +>. Они различаются по приставке в <acronym +>URL</acronym +>: </para> +</formalpara> +<para> +<filename +>:pserver:</filename> +</para> +<para +>для <quote +>password protected server</quote +> (сервера, защищённого паролем) без шифрования и </para> +<para> +<filename +>:ext:</filename> +</para> +<para +>для сервера, поддерживающего шифрование <acronym +>rsh</acronym +> или <acronym +>ssh</acronym +>. Например: </para> +<para> +<userinput +><filename class="directory" +>:ext:<replaceable +>mylogin</replaceable +>@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename +></userinput> +</para> +<para +>позволит получить доступ к исходному коду <application +>Cervisia</application +>, программы работы с &CVS;, на сервере SourceForge. </para> +<para +>Если вы хотите получить доступ к серверу &CVS; с шифрованием <acronym +>rsh</acronym +> или <acronym +>ssh</acronym +>, укажите протокол шифрования. Для этого необходимо установить значение переменной среды окружения <envar +>CVS_RSH</envar +> как <userinput +>rsh</userinput +> или <userinput +>ssh</userinput +>. </para> + +<note +><para +>Если вы собираетесь использовать шифрование для &CVS;, прочитайте главу <link linkend="cvs" +>Использование &CVS;</link +>. </para +></note> + +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>CVS</primary> + <secondary +>репозиторий</secondary +></indexterm> +<indexterm zone="new-projects-start-cvs-repository"> + <primary +>репозиторий</primary> + <secondary +>CVS</secondary +></indexterm> + +<formalpara id="new-projects-start-cvs-repository"> +<title +>Репозиторий &CVS;</title> +<para +>Теперь нужно указать где следует сохранять файлы проекта в &CVS;. Это место называется <emphasis +>репозиторием</emphasis +>. </para> +</formalpara> +<para +>В принципе, вы можете выбрать любое имя для репозитория &CVS;, учитывая лишь ограничения на имена файлов, но большинство разработчиков просто указывают название программы. Репозиторий с указанным вами именем будет создан в корне &CVS;. </para> +<para +>Укажите имя репозитория, которое вы хотите использовать, вместе с корнем CVS в поле <guilabel +>Репозиторий</guilabel +> диалога <guilabel +>Новый проект</guilabel +> в разделе <guilabel +>Система управления версиями</guilabel +>. </para> + +<warning +><para +><emphasis +>Обратите внимание, на то, что нельзя использовать уже существующий репозиторий!</emphasis +> Система &CVS; не предупреждает о дублирующихся файлах, поэтому вы можете их потерять. </para +></warning> + +<formalpara> +<title +>Оставшиеся поля</title> +<para +>Осталось совсем немного. Остальные поля заполнены за вас автоматически: </para> +</formalpara> +<para +>Поле <guilabel +>Метка производителя</guilabel +> используется только для совместимости. Вы можете оставить значение по умолчанию. </para> +<para +>Поле <guilabel +>Комментарий</guilabel +> содержит комментарий, который будет добавлен к первой версии файлов в хранилище &CVS;. </para> +<para +>Поле <guilabel +>Метка выпуска</guilabel +> содержит метку &CVS; первоначального состояния проекта. С помощью <emphasis +>метки</emphasis +> вы всегда сможете вернуться к состоянию разработки на данный момент. Подробная информация находится в главе <link linkend="cvs" +>Использование &CVS;</link +>. </para> +<para +>По умолчанию предлагается метка <quote +>start</quote +>. </para> + +<note> +<para +>Если какая-либо информация введена неправильно, это не выяснится на этапе создания проекта. Поэтому следите за <guilabel +>сообщениями</guilabel +>во время работы с репозиторием из основного окна программы. Если произошли ошибки &CVS;, вы увидите что-то на подобие этого: </para> + +<screen +><computeroutput> +* cd '/home/devel/test' && cvs -d '/home/devel/mycvsroot' \ + import -m 'new project' '' 'vendor' 'start' &&\ + 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 +>Если это произошло, инициализируйте &CVS; самостоятельно или удалите каталог проекта и начните процесс создания проекта сначала. </para> +</note> + +<para +>После ввода всех данных &CVS; нажмите <guibutton +>Далее ></guibutton +>. </para> + +<note +><para +>Чтобы исправить ошибку на предыдущем шаге, нажмите кнопку <guibutton +>< Назад</guibutton +>. </para +></note> + +</sect2 +> <!-- new-projects-start-cvs --> + +<sect2 id="new-projects-start-templates"> +<title +>Шаблоны программных файлов</title> + +<para +>На следующих шагах мастера вы сможете установить общую информацию о вашем проекте, которая будет включаться во все его файлы. </para> +<para +>Вам будут предложены отдельные шаблоны заголовочных файлов и файлов реализации для проектов на C и C++. Для некоторых других языков есть только шаблоны файлов исходного кода. Для остальных языков программирования всё ещё нет готовых шаблонов. </para> +<para +>Если для проекта есть возможность использования шаблонов, в начале файлов проекта с исходным кодом будет добавлен комментарий о лицензии, например для программ на C++ он будет выглядеть так: </para> + +<screen +><computeroutput +><literal> +/*************************************************************************** + * Copyright (C) 2003 by Your Name * + * [email protected] * + * * + * 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 +>Другие шаблоны будут иметь подобную информацию в соответствующим языку формате. </para> +<para +>Шаблоны файлов исходного кода будут также содержать информацию на основе данных, указанных ранее в мастере <guilabel +>создания проектов</guilabel +>, а именно содержимом полей <guilabel +>Автор</guilabel +>, <guilabel +>Электронная почта</guilabel +> и <guilabel +>Лицензия</guilabel +>. </para> + +<sect3 id="new-projects-start-templates-edit"> +<title +>Изменение шаблонов</title> + +<indexterm zone="new-projects-start-templates-edit"> + <primary +>шаблоны</primary> + <secondary +>проект</secondary> + <tertiary +>изменение</tertiary +></indexterm> +<indexterm zone="new-projects-start-templates-edit"> + <primary +>проект</primary> + <secondary +>шаблоны</secondary> + <tertiary +>изменение</tertiary +></indexterm> + +<para +>Шаблоны, которые вы редактируете в диалоге <guilabel +>Новый проект</guilabel +> будут использованы при создании нового заголовочного файла или файла реализации в проекте. В начале каждого файла будет расположена некоторая информация, зависящая от шаблона. </para> +<para +>Вы не ограничены вставкой обычного текста, &kdevelop; распознаёт несколько переменных, которые будут заменены на содержимое заданных полей. Это может быть информация об <guilabel +>авторе</guilabel +>, <guilabel +>электронной почте</guilabel +> или <guilabel +>лицензии</guilabel +>. </para> + +<variablelist> +<varlistentry> +<term +>Включение информации для &doxygen;</term> +<listitem> +<para +>Если, к примеру, вы хотите чтобы документация по &API;, генерируемая программой &doxygen;, содержала также дополнительное краткое описание файла, включите в шаблон такой код: </para> +<screen +><computeroutput> +/** + * \file $MODULE$.cpp + * \brief (здесь нужно поставить краткое описание файла). + **/ +</computeroutput +></screen> +<para +>Каждый раз, когда вы будете создавать новый файл исходного кода, &kdevelop; заменит <varname +>$MODULE$</varname +> именем создаваемого файла. Например, если вы создали новый класс C++ с именем <classname +>ASimpleTest</classname +>, в начале файла <filename +>asimpletest.cpp</filename +> будет такой текст: </para> +<screen +><computeroutput> +/** + * \file asimpletest.cpp + * \brief (здесь нужно поставить краткое описание файла). + **/ +</computeroutput +></screen> +<para +>И теперь останется ввести краткое описание файла после слова <quote +>\brief</quote +>, не оставляя служебного, каждый раз одинакового, кода. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Файл с лицензией</term> +<listitem> +<para +>Также вы можете включить информацию о лицензии. Для этого используется переменная <varname +>$LICENSEFILE$</varname +>: </para> + +<screen +><computeroutput> +// Файл $LICENSEFILE$ содержит полный текст лицензии. +</computeroutput +></screen> +<para +>Мастер приложений заменит <varname +>$LICENSEFILE$</varname +> на имя файла, содержащего лицензию, например: </para> +<screen +><computeroutput> +// Файл COPYING содержит полный текст лицензии. +</computeroutput +></screen> +<para +>для лицензии <acronym +>GPL</acronym +>, или </para> +<screen +><computeroutput> +// Файл LICENSE.BSD содержит полный текст лицензии. +</computeroutput +></screen> +<para +>если вы решили распространять свою программу под лицензией <acronym +>BSD</acronym +>. </para> +<para +>&kdevelop; поддерживает большое количество переменных. Подробно это изложено в разделе <link linkend="newfiles-edittemplates" +>Изменение шаблонов</link +> главы <link linkend="editing" +>Средства редактирования</link +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<note +><para +>Шаблоны, которые вы установили здесь, будут задействованы после создания проекта. Информация, выбранная вами, будет находится в начале каждого созданного в рамках проекта файла исходного кода. Вы можете изменить текст шаблонов вручную после создания проекта. </para +></note> + +</sect3 +> <!-- new-projects-start-templates-edit --> +</sect2 +> <!-- new-projects-start-templates --> + +<sect2 id="new-projects-start-build"> +<title +>Построение начальных файлов проекта</title> + +<indexterm zone="new-projects-start-build"> + <primary +>проект</primary> + <secondary +>новый</secondary> + <tertiary +>построение</tertiary +></indexterm> +<indexterm zone="new-projects-start-build"> + <primary +>проект</primary> + <secondary +>начальное построение</secondary +></indexterm> + +<para +>Теперь почти всё сделано. На последнем шаге кнопка <guibutton +>Далее ></guibutton +> сменяется на <guibutton +>Готово</guibutton +>. </para> +<para +><emphasis +>Подумайте дважды перед её нажатием!</emphasis +> Вы пока ещё имеете возможность вернуться <guibutton +>< Назад</guibutton +> и изменить введённые данные. Если вы используете &CVS; локально, проверьте ещё раз имя <emphasis +>репозитория</emphasis +> (указанного подкаталога не должно существовать). </para> +<para +>Чтобы отменить создание проекта, нажмите соответствующую кнопку, иначе нажмите <guibutton +>Готово</guibutton +>, при этом в окне <guilabel +>Сообщения</guilabel +> будут выводится подробные действия, выполняемые мастером создания проекта. </para> +<para +>Если вы выбрали использование &CVS;, после создания дерева каталогов проекта, будет запущена программа &CVS;, очищающая предыдущее содержимое окна <guilabel +>сообщений</guilabel +> и выводящая собственные сообщения. </para> + +<note +><para +>В большинстве случаев после завершения создания &kdevelop; автоматически откроет важные файлы проекта (это зависит от выбранного шаблона проекта). </para +></note> + +<para +>Не забудьте проверить предлагаемые по умолчанию значения. Например, вы можете изменить комментарии, добавляемые в начало файлов исходного кода. Шаблоны файлов находятся в подкаталоге <filename class="directory" +>templates</filename +> базового каталога вашего проекта. </para> +<para +>Мы рекомендуем вас перед тем, как набивать собственный код, <emphasis +>собрать новый проект</emphasis +>. В большинстве случаев при этом не должно возникнуть никаких проблем. Чтобы начать всё сначала, удалите каталог проекта и его хранилище в корне &CVS; (если таковой имеется) и начните создание нового проекта заново. </para> + +<warning id="defaultbuild-warning" +> <!-- ### remove this when "default" works again --> + + <indexterm zone="defaultbuild-warning"> + <primary +>сборочная конфигурация по умолчанию</primary> + <secondary +>предупреждение</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>конфигурации сборки</primary> + <secondary +>предупреждение сборки по умолчанию</secondary +></indexterm> + <indexterm zone="defaultbuild-warning"> + <primary +>предупреждение</primary> + <secondary +>конфигурация сборки по умолчанию</secondary +></indexterm> + + <para +>Перед сборкой вашего проекта в первый раз, откройте <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Конфигурация сборки</guimenuitem +></menuchoice +>. Там будет три профиля сборки: <guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +> и <guimenuitem +>debug</guimenuitem +>. </para> + <para +>Из-за некоторых ограничений в autoconf/automake, не используйте конфигурацию <guimenuitem +>default</guimenuitem +>. это приведёт к повреждению внутренней структуры каталогов, и вы не сможете использовать конфигурации <guimenuitem +>optimized</guimenuitem +> и <guimenuitem +>debug</guimenuitem +>. </para> + <para +>Если тип приложения, которое вы выбрали, предлагает только <guimenuitem +>default</guimenuitem +>, естественно, используйте его. </para> +</warning> + +</sect2 +> <!-- new-projects-start-build --> + +</sect1 +> <!-- new-projects --> + +<sect1 id="projects-configure"> +<title +>Настройка проектов</title> + +<para +>(.. в процессе написания ..)</para> + +</sect1> + +</chapter +> <!-- applicationwizard --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/class-browsers.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/class-browsers.docbook new file mode 100644 index 00000000000..ad79baa388f --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/class-browsers.docbook @@ -0,0 +1,85 @@ +<chapter id="class-browsers"> +<title +>Обзор классов</title> +<indexterm zone="class-browsers" +><primary +>обзор классов</primary +></indexterm> + +<para +>При разработке объектно-ориентированного приложения ваше внимание концентрируется не на исходных файлах, а на классах и их отношениях. Чтобы помочь вам перемещаться по определённым классам и идентификаторам, &kdevelop; предоставляет различные представления классов, наглядно представляющие структуру классов разными способами. </para> + +<sect1 id="classview"> +<title +>Обзор классов</title> + +<para +>В левой части рабочей области расположен список классов, переменных и функций вашего проекта. Они представляются в виде дерева. При щелчке на классе, отдельной его веткой отобразится список всех его методов и атрибутов. </para> + +<figure id="screenshot-classview" float="1"> +<title +>Снимок экрана с обзором классов</title> +<mediaobject> +<imageobject +><imagedata fileref="classview.png"/></imageobject> +</mediaobject> +</figure> + +<para +>Обзор классов может работать в двух режимах. По умолчанию, все идентификаторы сгруппированы по <quote +>классам</quote +>, <quote +>структурам</quote +>, <quote +>функциям</quote +>, <quote +>переменным</quote +> и <quote +>пространствам имён</quote +>. В контекстном меню вы можете выбрать <guimenuitem +>сортировку по пространствам имён</guimenuitem +>. В этом режиме отображается иерархия пространств имён и идентификаторы сгруппированы в соответствии пространству имён, в котором они определены. Это может быть более полезным в проектах, широко использующих пространства имён. </para> + +<para +>Через контекстное меню вы также можете изменить метод отображения имён классов, чтобы они отображались с пространством имён, в котором они определены. Это поможет различить вам одноимённые классы из разных пространств. Если вы в обычном режиме задержите мышь на имени класса, в подсказке будет отображено полное имя класса. </para> + +<para +>Щелчок на классе или методе приведёт к переходу к его определению. Вы также можете перейти к декларации метода через контекстное меню. В том же меню пункты <guimenuitem +>Добавить метод...</guimenuitem +> и <guimenuitem +>Добавить атрибут...</guimenuitem +> приводят к открытию диалогов, где вы сможете создать новые методы и переменные (с пустой реализацией), в соответствующем классе. </para> + +</sect1 +> <!-- classview --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classtools"> +<title +>Инструментарий классов</title> + +<para +>Диалог классов открывается по правому щелчку по классу на панели обзора классов и выбору пункта <guimenuitem +>Классовый инструментарий...</guimenuitem +>. </para> + +</sect1 +> <!-- classtools --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="classhierarchy"> +<title +>Иерархия классов</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- classhierarchy --> + +</chapter +> <!-- class-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/commands.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/commands.docbook new file mode 100644 index 00000000000..a86e175721d --- /dev/null +++ b/tde-i18n-ru/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 +>Сергей</firstname +><surname +>Бобыкин</surname +><affiliation +><address +><email +>[email protected]</email +></address +></affiliation +><contrib +>Перевод на русский язык</contrib +></othercredit +> + </authorgroup> + + <date +>03 апреля 2005</date> +</chapterinfo> + +<title +>Справочник команд</title> + +<note +><para +>Комбинации клавиш, показанные в данной главе используются по умолчанию. Их можно изменить. </para +></note> + + + +<sect1 id="menubar"> +<title +>Меню</title +> <para +>Некоторые пункты присутствуют в меню только в том случае, если связанные с ними действия имеют смысл. Особенно это относится к пунктам, связанным с функциональностью <link linkend="plugin-tools" +>модулей</link +>. Они доступны только тогда, когда модуль включен.</para> + + + + + + +<!-- ======================= F I L E ============================= --> + +<sect2 id="menu-file"> +<title +>Меню <guimenu +>Файл</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Создать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт новый файл. Пользователю предлагается выбрать каталог (каталог по умолчанию — текущий каталог исходных текстов проекта) и ввести название файла. Тип файла можно выбрать из списка. Также пользователь может указать включать ли файл в проект. После этого диспетчер Automake спросит, к какой цели сборки добавить файл. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +></shortcut +> <guimenu +>Файл</guimenu +><guimenuitem +>Открыть...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает существующий файл.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Последние файлы</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает подменю с последними открытыми файлами. Если выбрать в нём пункт, будет открыт соответствующий файл. </para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Быстрое открытие файла</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает список файлов в каталоге исходных текстов текущего проекта. Пользователь может открыть любой из них, выбрав в списке или введя название. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Сохранить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Сохраняет текущий файл.</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Сохранить как...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Вызывает диалог <guilabel +>Сохранить как...</guilabel +> для сохранения копии файла под другим именем.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Файл</guimenu +> <guimenuitem +>Сохранить все</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Сохраняет все открытые файлы.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycap +>F5</keycap +></shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Обновить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Перезагружает содержимое текущего файла для показа изменений, сделанных другими программами. Обычно такие изменения обнаруживаются автоматически, и пользователю будет предложено решить: обновлять файл или нет.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Файл</guimenu +> <guimenuitem +>Вернуть все</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Отменяет все изменения в открытых файлах. Предлагает сохранить изменения, чтобы отмена могла быть сделана для каждого изменённого файла. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>P</keycap +></keycombo +></shortcut +> <guimenu +>Файл</guimenu +><guimenuitem +>Печать...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Распечатывает содержимое файла.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Файл</guimenu +> <guimenuitem +>Экспорт в HTML</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Экспортирует содержимое файла с подсветкой в виде страницы HTML. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Закрыть</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает текущий файл. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Файл</guimenu +> <guimenuitem +>Закрыть все</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает все открытые файлы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Файл</guimenu +> <guimenuitem +>Закрыть все другие</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает все файлы кроме текущего. Эта команда очень полезна, когда открыто много файлов, а нужно сконцентрироваться на текущем. Без неё пришлось бы закрывать все файлы и открывать текущий заново. </para> +<para +>Аналогичная команда есть в меню «Окно». </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +> </shortcut +> <guimenu +>Файл</guimenu +> <guimenuitem +>Выход</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает KDevelop.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +<!-- ======================= E D I T ============================= --> + + +<sect2 id="menu-edit"> +<title +>Меню <guimenu +>Правка</guimenu +></title> + + +<variablelist> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Z</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Отменить действие</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Отменяет последнее действие. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl; &Shift;<keycap +>Z</keycap +></keycombo +></shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Повторить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Повторяет отменённое действие. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>X</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Вырезать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Вырезает выделенный текст. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Копировать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Копирует выделенный текст. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>V</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Вставить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Вставляет содержимое буфера обмена. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +> &Ctrl;<keycap +>A</keycap +></keycombo +></shortcut +> <guimenu +>Правка</guimenu +><guimenuitem +>Выделить весь текст</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выделяет весь текст. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl; &Shift;<keycap +>A</keycap +></keycombo +></shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Отменить выделение</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Отменить выделение текста. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>B</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Вертикальное выделение</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включает режим выделения прямоугольного блока. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Insert</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Режим замены</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включает режим замены вместо вставки. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет поиск по тексту. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F3</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Продолжить поиск</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Продолжить поиск следующего вхождения. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F3</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Найти предыдущее</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Продолжить поиск предыдущего вхождения. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Заменить...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет поиск с заменой. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Перейти на строку...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Перемещает курсор на указанную строку. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Найти в файлах...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет поиск по разным файлам. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>R</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Поиск-выбор-замена</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет операцию «поиск-выбор-замена». </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Переформатировать код</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переформатирует исходный текст. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Завершить текст</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Завершает текст. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>L</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Автозамена</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет замену сокращения на полную версию. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Space</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Дополнить текст</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Дополняет введённую строку текста. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F2</keycap +></keycombo +> </shortcut +> <guimenu +>Правка</guimenu +> <guimenuitem +>Генерировать член класса</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт новый член класса. </para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + +<!-- ======================= V I E W ============================= --> + + +<sect2 id="menu-view"> + +<title +>Меню <guimenu +>Вид</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Назад</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переход назад. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Вперёд</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переход вперёд. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>/</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Переключиться...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Быстрое переключение на другой файл. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Показать редактор</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает редактор кода и передаёт ему фокус ввода. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Следующая ошибка</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переход к следующей ошибке. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F4</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Предыдущая ошибка</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переход к предыдущей ошибке. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +></shortcut +> <guimenu +>Вид</guimenu +><guimenuitem +>Полноэкранный режим</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включает полноэкранный режим. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F12</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Переключить заголовочный файл и файл реализации</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет переключение между заголовочным файлом и файлом реализации. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Боковые панели</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Боковые панели. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Фиксация</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Фиксация боковых панелей. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Переключиться в командную строку</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Переключение в строку ввода команд обработки текста. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Сеанс</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Меню работы с сеансами </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F10</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Динамический перенос строк</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включение режима динамического переноса строк. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Маркеры динамического переноса строк</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показ маркеров динамического переноса строк. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Показать/скрыть маркеры статического переноса строк</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает маркеры статического переноса строк. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F6</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Показать/скрыть полоcу закладок</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает полосу закладок. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F11</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Показать/скрыть номера строк</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает номера строк. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Показать/скрыть закладки на полосе прокрутки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает закладки на полосе прокрутки. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F9</keycap +></keycombo +> </shortcut +> <guimenu +>Вид</guimenu +> <guimenuitem +>Показать/скрыть полосу сворачивания блоков</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает полосу сворачивания блоков кода. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Сворачивание блоков кода</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Меню работы с блоками кода. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Кодировка...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает кодировку текста. </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= P R O J E C T ============================= --> + + +<sect2 id="menu-project"> +<title +>Меню <guimenu +>Проект</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Создать проект...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт новый проект. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Открыть проект...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает существующий проект. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Последние проекты</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает один из последних проектов. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Текущий язык</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает текущий язык проекта. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Импортировать существующий проект...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет импорт существующего проекта. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Создать класс...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт новый класс. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Диаграмма наследования</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает диаграмму наследования. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Добавить перевод...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт файл перевода для указанного языка. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Конфигурация сборки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Конфигурация сборки. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Публикация и распространение</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Публикация и распространение проекта. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Параметры проекта. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Закрыть проект</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает проект. </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= B U I L D ============================= --> + + +<sect2 id="menu-build"> +<title +>Меню <guimenu +>Проект</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F8</keycap +></keycombo +> </shortcut +> <guimenu +>Сборка</guimenu +> <guimenuitem +>Собрать проект</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет сборку проекта. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>F7</keycap +></keycombo +> </shortcut +> <guimenu +>Сборка</guimenu +> <guimenuitem +>Собрать активную цель</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Собирает активную цель. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Скомпилировать файл</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Компилирует файл. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Запустить configure</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Запускает скрипт «configure». </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Запустить automake и родственные программы</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Запускает automake и родственные программы </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Установить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает собранную программу. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Установить (с правами root)</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает собранную программу с правами root. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Очистить проект</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Очищает проект. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Очистить дистрибутив</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Очищает дистрибутив. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F9</keycap +></keycombo +> </shortcut +> <guimenu +>Сборка</guimenu +> <guimenuitem +>Создать и объединить сообщения</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт и объединяет сообщения для перевода. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Выполнить программу</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Запускает программу на выполнение. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Собрать документацию по API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Создаёт документацию по API приложения. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Очистить документацию по API</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Очищает документацию по API приложения. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +><keycap +>Escape</keycap +></keycombo +> </shortcut +> <guimenu +>Сборка</guimenu +> <guimenuitem +>Остановить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Останавливает сборку или выполнение программы. </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + +<!-- ======================= D E B U G ============================= --> + + +<sect2 id="menu-debug"> +<title +>Меню <guimenu +>Проект</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запуск</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Запускает программу в отладчике. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Остановить</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Останавливает сборку или выполнение программы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Прервать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Прерывает отладку программы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запустить до текущей строки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет программу до строки, на которой находится курсор. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Перейти к следующей строке</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет выражение текущей строки без захода в подпрограммы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Перейти к следующей инструкции</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет текущую инструкцию целиком. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Пройти к следующей строке</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет выражение текущей строки с заходом в подпрограммы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Пройти к следующей инструкции</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет текущую инструкцию пошагово. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Выйти</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выйти из подпрограммы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Установить/снять точку останова</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает/снимает точку останова. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Представления</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Средства просмотра отладочной информации. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Исследовать файл дампа памяти...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Загружает аварийный дамп памяти программы для анализа. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Подключиться к процессу</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Подключает отладчик к выполняемому процессу. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Проверка утечек памяти с помощью Valgrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполнение проверки утечек памяти с помощью Valgrind. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Профилировать в KCachegrind</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет профилирование программы с помощью KCachegrind. </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + + + + +<!-- ======================= B O O K M A R K S ============================= --> + + + +<sect2 id="menu-bookmarks"> +<title +>Меню <guimenu +>Закладки</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>B</keycap +></keycombo +> </shortcut +> <guimenu +>Закладки</guimenu +> <guimenuitem +>Поставить закладку</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Добавляет текущую строку в закладки.</para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Закладки</guimenu +> <guimenuitem +>Удалить все закладки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Удаляет все закладки.</para +></listitem> +</varlistentry> +</variablelist> + +</sect2> + + + + +<!-- ======================= W I N D O W ============================= --> + + +<sect2 id="menu-window"> +<title +>Меню <guimenu +>Окно</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;<keycap +>W</keycap +></keycombo +></shortcut +> <guimenu +>Окно</guimenu +> <guimenuitem +>Закрыть выбранные окна...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает выбранные окна.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>F4</keycap +></keycombo +></shortcut +> <guimenu +>Окно</guimenu +> <guimenuitem +>Закрыть</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает текущее окно.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Окно</guimenu +> <guimenuitem +>Закрыть все</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает все окна.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Окно</guimenu +> <guimenuitem +>Закрыть все другие</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Закрывает все окна кроме текущего.</para +></listitem> +</varlistentry> + + +</variablelist> + +</sect2> + + + + + + +<!-- ======================= T O O L S ============================= --> + + +<sect2 id="menu-tools"> +<title +>Меню <guimenu +>Сервис</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Режим только для чтения</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включает режим «только для чтения» для текущего файла. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Тип файла</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает тип файла. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Подсветка</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает режим подсветки синтаксиса. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Конец строки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Устанавливает тип конца строки. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Проверка орфографии...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Проверяет орфографию теста. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Вставить отступ</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Вставляет отступ (сдвигает текст вправо). </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Снять отступ</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Снимает отступ (сдвигает текст влево). </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Привести в порядок отступы</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Приводит в порядок все отступы в тексте. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Tab</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Выравнивание</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет выравнивание. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Закомментировать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Делает текст комментарием </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Раскомментировать</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Удаляет символы комментария. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Верхний регистр</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Делает все символы выделенного текста прописными. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Нижний регистр</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Делает все символы выделенного текста строчными. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>U</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Как в предложениях</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Делает первый символ выделенного текста прописным, остальные строчными. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>J</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Объединить строки</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Объединяет соседние строки в одну. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Перенос строк в документе</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Включает режим автоматического переноса слов на новую строку, если длина текущей превышает установленную. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Окно просмотра различий...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает окно для просмотра результатов сравнения двух текстовых файлов. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Выполнить команду...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет внешнюю программу. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Фильтровать выделение через команду...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Фильтрует выделение через внешнюю программу, используя модуль "<link linkend="KDevFilter" +>Фильтр</link +>". </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Проверить регулярное выражение...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Проверяет регулярное выражение. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Диспетчер компонентов</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Просмотр компонентов KDE. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>C</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Быстрое открытие класса...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Обеспечивает быстрый доступ к классу. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>M</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Быстрое открытие метода...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Обеспечивает быстрый доступ к методу. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>P</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Предпросмотр вывода Doxygen</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает результаты выполнения программы Doxygen. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;&Shift;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Сервис</guimenu +> <guimenuitem +>Документировать текущую функцию</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет документирование текущей функции. </para +></listitem> +</varlistentry> + + + +</variablelist> + +</sect2> + + + + +<!-- ======================= S E T T I N G S ============================= --> + + +<sect2 id="menu-settings"> +<title +>Меню <guimenu +>Настройка</guimenu +></title> + + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>M</keycap +></keycombo +></shortcut +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Показать/скрыть меню</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает/скрывает меню.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Панели инструментов</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает подменю, где можно выбрать, какие панели инструментов показывать или скрыть.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Показывать строку состояния</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывать или скрыть строку состояния.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +><guimenuitem +>Комбинации клавиш...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Настройка привязок комбинаций клавиш к действиям. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Панели инструментов...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Настройка панели инструментов. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Уведомления...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Настройка уведомлений программы. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +><guimenuitem +>Настроить редактор...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Настройка текстового редактора. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Настройка параметров среды разработки. </para +></listitem> +</varlistentry> + + + + +</variablelist> + +</sect2> + + +<!-- ======================= H E L P ============================= --> + + +<sect2 id="menu-help"> +<title +>Меню <guimenu +>Справка</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Руководство пользователя KDevelop</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Открывает руководство пользователя KDevelop (этот документ).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Shift;<keycap +>F1</keycap +></keycombo +></shortcut +> <guimenu +>Справка</guimenu +> <guimenuitem +>Что это?</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Рисует знак вопроса рядом с указателем мыши, нажатием левой кнопки мыши на элементе окна (например, на кнопке <guiicon +>Остановить</guiicon +>) показывается краткое объяснение его назначения. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Подсказка дня</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает полезный совет по работе со средой. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>I</keycap +></keycombo +> </shortcut +> <guimenu +>Справка</guimenu +> <guimenuitem +>Искать по индексу документации...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет поиск по индексу документации. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Alt;&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Справка</guimenu +> <guimenuitem +>Найти в документации...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Выполняет поиск в документации. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Руководство Man...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает страницу справочной системы man. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Руководство Info...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает раздел справочной системы info. </para +></listitem> +</varlistentry> + + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Сообщить об ошибке...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Позволяет сообщить об ошибках работы среды её разработчикам.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>О программе KDevelop...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает краткую информацию о версии KDevelop, её авторах и лицензионном соглашении.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>О KDE...</guimenuitem +> </menuchoice +></term> +<listitem +><para +>Показывает краткую информацию о версии &kde;.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + + + +</sect1> + + + + +</chapter> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/credits.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/credits.docbook new file mode 100644 index 00000000000..edcdcfacee3 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/credits.docbook @@ -0,0 +1,48 @@ +<chapter id="credits"> +<title +>Благодарности</title> + +<sect1 id="credits-contributions"> +<title +>Авторы и переводчики</title> + +<para> +<itemizedlist> + <listitem +><para +>Первое издание этого руководства подготовлено Берндом Гехрманном (Bernd Gehrmann) <email +>[email protected]</email +> и Калебом Теннисом (Caleb Tennis) <email +>[email protected]</email +>. </para +></listitem> + <listitem +><para +>Главы <link linkend="automake-manager-summary" +>Краткое описание &automanag;</link +> и <link linkend="automake-manager-operation" +>Использование менеджера Automake</link +> написаны Йеном Вадхамом (Ian Wadham), <email +>[email protected]</email +>. </para +></listitem +><listitem +><para +>Перевод руководства на русский язык осуществил Николай Шафоростов, <email +>[email protected]</email +>, домашняя страничка — <ulink url="http://program.net.ua" +></ulink +>. Замечания и дополнения приветствуются. </para +></listitem> +</itemizedlist> +</para> + +</sect1 +> <!-- credits-contributions --> + +<!--CREDITS_FOR_TRANSLATORS--> + +</chapter +> <!-- credits --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/cvs.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/cvs.docbook new file mode 100644 index 00000000000..e4c2985ab8b --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/cvs.docbook @@ -0,0 +1,133 @@ +<chapter id="cvs"> +<title +>Использование &CVS;</title> +<indexterm zone="cvs" +><primary +>CVS</primary +></indexterm> +<indexterm zone="cvs" +><primary +>контроль версий</primary +></indexterm> + +<sect1 id="cvs-basics"> +<title +>Основы &CVS;</title> + +<para +>&CVS; — это система контроля версий, используемая большинством проектов с открытым исходным кодом, в т.ч. и &kde;. Она хранит весь исходный код в одном месте, называемом <emphasis +>репозиторием</emphasis +> (хранилищем). С помощью такого хранилища каждый может получить снимок исходного кода на определённый момент времени (и не обязательно на текущий). В отличии от других систем контроля версий, при работе над файлом разработчику не нужно его <emphasis +>блокировать</emphasis +>, что расширяет возможности параллельной разработки. </para> + +<para +>После выполнения задачи разработчик <emphasis +>загружает</emphasis +> (<emphasis +>commit</emphasis +>) изменённые файлы в хранилище (со списком изменений). &CVS; может объединять изменения в одном файле, сделанные несколькими людьми. Конечно, может случиться так, что разработчики работали над одной и той же частью файла, что приведёт к конфликту (на практике такое случается редко и является результатом недостаточного обсуждения процесса разработки). В таком случае &CVS; отказывается принять конфликтный файл и разработчику придётся устранять конфликт самостоятельно. </para> + +<para +>&CVS; может намного больше, например, вести несколько веток (branch) разработки (например &kde; 3.1.4 и &kde; 3.2 были разными ветками дерева разработки &kde;), перемещать изменения из одной ветки в другую, выводить различия между разными версиями файла, выводить историю изменений файла и т.д. </para> + +<para +>&CVS; реализован как система клиент-сервер. Со стороны пользователя связь с хранилищем идёт через консольную программу &cvs;. Однако доступно также большое количество графических интерфейсов к ней, например &cervisia; (<ulink url="http://cervisia.sf.net" +></ulink +>) или <application +>TkCVS</application +> (<ulink url="http://tkcvs.sf.net" +></ulink +>). В &kdevelop; напрямую доступна лишь небольшая часть функциональности &cvs;, необходимая для каждодневной работы. </para> + +<para +>Вам потребуется знание основ использования &CVS;, в частности, вы должны знать как загружать (checkout) проект из хранилища. Мы рекомендуем прочитать книгу <ulink url="http://cvsbook.red-bean.com/cvsbook.html" +>Open Source Development With CVS</ulink +>, написанную Карлом Фогелем (Karl Fogel), распространяемую бесплатно (кроме нетехнических глав). Кроме того, вы можете прочитать о &CVS; по-русски на сайте <ulink url="http://www.linux.org.ru/books/GNU/cvs_ru/" +>linux.org.ru</ulink +> </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-commands"> +<title +>Команды &CVS; в &kdevelop;</title> + +<para +>В обзоре файлов доступны такие пункты контекстного меню: </para> + +<variablelist> +<varlistentry> +<term +>Добавить в хранилище</term> +<listitem> +<para +>Подготавливает отмеченные файлы к передаче их в хранилище. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Удалить из хранилища</term> +<listitem> +<para +>Подготавливает отмеченный файл к удалению из хранилища. При этом файл также удаляется на локальной файловой системе. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Обновить</term> +<listitem> +<para +>Выполняет команду <command +>cvs update</command +> для объединения изменений, сделанных другими пользователями. Если вы вызываете эту команду для каталога, обновление происходит рекурсивно, если только вы не отключили это в конфигурационном файле <filename +>.cvsrc</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Передать на сервер</term> +<listitem> +<para +>Выполняет команду <command +>cvs commit</command +> для передачи изменений, сделанных вами в хранилище. Помните, что перед этим необходимо выполнить обновление. Иначе, если другой пользователь уже передал свои изменения до этого, может возникнуть конфликт. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Все эти команды запускаются как подпроцесс &kdevelop; без дополнительных ключей или переменных окружения. Это создаёт проблемы, например, когда вы работаете через соединение &ssh;, и вам нужно ввести пароль. Это необходимо, например, при работе с <filename +>sourceforge.net</filename +>. Работа над этой проблемой описана в FAQ &CVS;/SSH, который можно найти в разделе документации проекта SourceForge. </para> + +</sect1 +> <!-- cvs-basics --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="cvs-behind"> +<title +>За кулисами</title> + +<sect2 id="cvs-behind-workdir"> +<title +>Что &CVS; записывает в рабочем каталоге</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- cvs-behind-workdir --> + +</sect1 +> <!-- cvs-behind --> + +</chapter +> <!-- cvs --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/debugger.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/debugger.docbook new file mode 100644 index 00000000000..a2cf29f8a9c --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/debugger.docbook @@ -0,0 +1,329 @@ +<chapter id="debugger"> +<title +>Интерфейс отладчика</title> +<indexterm zone="debugger" +><primary +>отладчик</primary +></indexterm> + +<para +>Для C и C++ &kdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически это реализовано как внешний интерфейс для отладчика &GNU; <application +>gdb</application +> через каналы (pipe). Отладчик можно запустить несколькими способами: </para> + +<itemizedlist> +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +><guimenuitem +>Запуск</guimenuitem +></menuchoice +>, после чего в отладчик загрузится главная программа вашего проекта. </para> +</listitem> + +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запуск другого</guimenuitem +> <guimenuitem +>Загрузить файл core</guimenuitem +></menuchoice +> загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. <application +>ulimit(1)</application +>). Эта отладка полезна для анализа сбоев программы. </para> +</listitem> + +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запуск другого</guimenuitem +> <guimenuitem +>Присоединить к процессу</guimenuitem +></menuchoice +> отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов. </para> +</listitem> + +<listitem> +<para +>Помните, что отладка возможна только если программа была скомпилирована с информацией для отладки. Это можно установить в диалоге <guibutton +>Параметры компилятора</guibutton +>. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе. </para> +</listitem> +</itemizedlist> + +<para +>Отладчик предлагает несколько видов информации о процессе: </para> + +<para +>При попытке запуска отладки проекта без отладочной информации вы получите сообщение <computeroutput +>Нет исходного кода...</computeroutput +> в строке состояния. При установке точки останова, она будет показана в панели точек останова как <computeroutput +>В ожидании (добавление)</computeroutput +> (см. ниже). </para> + +<variablelist> +<varlistentry> +<term +>Переменные</term> +<listitem> +<indexterm zone="debugger" +><primary +>наблюдать переменные</primary +></indexterm> +<para +>Окно содержит список значений всех локальных переменных на текущей точке выполнения. </para> + +<para +>Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки <guibutton +>Добавить</guibutton +>, либо нажатием клавиши <keycap +>Enter</keycap +> на выбранном пункте <guilabel +>Наблюдение</guilabel +>. Удалить их можно через контекстное меню. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Фреймовый стек</term> +<listitem> +<indexterm zone="debugger" +><primary +>фреймовый стек</primary +></indexterm> +<para +>(... в процессе написания ...) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Точки останова</term> +<listitem> +<indexterm zone="debugger" +><primary +>точки останова</primary +></indexterm> +<para +>Данная панель позволяет просматривать и управлять точками останова. Для непосредственной отладки используется <application +>GDB</application +>, так что для полного понимания всех возможностей отладки &kdevelop; необходимо базовое представление о принципе работы <ulink url="http://www.gnu.org/software/gdb" +>GDB</ulink +>. </para> + +<para +>Исходный код, содержащий определение точек останова, находится в файле <filename +>kdevelop/languages/cpp/debugger/breakpoint.h</filename +>. </para> + +<para +>На левом краю панели имеются кнопки со следующими функциями:</para> + +<itemizedlist> +<listitem +><para +>Добавление пустой точки останова</para +></listitem> +<listitem +><para +>Изменение выбранной точки останова</para +></listitem> + <listitem +><para +>Удаление выбранной точки останова</para +></listitem> +<listitem +><para +>Удаление всех точек останова</para +></listitem> +</itemizedlist> + +<para +>Основная часть панели - таблица с 7 столбцами. Каждой строке таблицы соответствует одна точка останова. Столбцы:</para> + +<orderedlist> +<listitem +><para +>Переключатель для выбора точек</para +></listitem> +<listitem +><para +>Тип: Ошибка, Файл:строка, Точка наблюдения, Адрес или Метод</para +></listitem> +<listitem +><para +>Статус:</para> +<itemizedlist> + <listitem +><para +>Разрешена</para +></listitem> + <listitem +><para +>Запрещена: если точка останова запрещена, при отладке она пропускается.</para +></listitem> + <listitem +><para +>В ожидании (добавление): показывается при отсутствии отладочной информации. Из info-страницы GDB: <blockquote +><para +>Если указанное расположение точки останова найти не удалось, это может быть из-за того, что библиотека, в которой оно находится, ещё не загружена. В этом случае можно создать особую точку останова (<quote +>pending breakpoint</quote +>), действие которой откладывается до хагрухки необходимой библиотеки.</para +> </blockquote +> </para +></listitem> +</itemizedlist> +</listitem> +<listitem +><para +>В ожидании (очистка)</para +></listitem> +<listitem +><para +>В ожидании (изменение)</para +></listitem> +<listitem +><para +>Расположение в формате файл:строка</para +></listitem> +<listitem +><para +>Условие</para +></listitem> +<listitem +><para +>Счётчик игнорирования: если число <varname +>N</varname +> больше нуля, то в первые <varname +>N</varname +> раз при достижении точки останова выполнение программы остановленр не будет.</para +></listitem> +<listitem +><para +>Попадания: количество достижений точки останова.</para +></listitem> +</orderedlist> + + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Дизассемблирование</term> +<listitem> +<indexterm zone="debugger" +><primary +>дизассемблирование</primary +></indexterm> +<para +>(... в процессе написания ...)</para> + +</listitem> +</varlistentry> +</variablelist> + + +<sect1 id="settingbreakpoints"> +<title +>Установка точек останова</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- settingbreakpoints --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id ="debuggeroptions"> +<title +>Параметры</title> + +<variablelist> +<varlistentry> +<term +>Отобразить обработанные имена</term> +<listitem> +<indexterm zone="debugger" +><primary +>обработка имён</primary +></indexterm> +<indexterm zone="debugger" +><primary +>mangle</primary +><secondary +>имя</secondary +></indexterm> + +<para +>В программе, написанной на C++, имена функций изменяются (<quote +>mangled</quote +>), то есть к начальному имени функции добавляется информация о типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &GNU; C++. </para> + +<para +>В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Попробуйте установку точек останова по загрузке библиотеки</term> +<listitem> +<indexterm zone="debugger" +><primary +>"ленивые" точки останова</primary +></indexterm> +<indexterm zone="debugger" +><primary +>точки останова</primary +><secondary +>lazy</secondary +></indexterm> + +<para +>Отладчик <application +>gdb</application +> не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc <function +>dlopen(3)</function +>). Возможность установки точек останова в библиотеках предоставляет &kdevelop;. Таким образом, точки останова ставятся в своеобразную очередь и передаются <application +>gdb</application +> только после загрузки необходимой библиотеки. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Включить плавающую панель</term> +<listitem> +<indexterm zone="debugger" +><primary +>панель инструментов отладчика</primary +></indexterm> +<indexterm zone="debugger" +><primary +>панель инструментов</primary +><secondary +>отладчик</secondary +></indexterm> + +<para +>(... в процессе написания ...) </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1 +> <!-- debuggeroptions --> + +</chapter +> <!-- debugger --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/documentation.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/documentation.docbook new file mode 100644 index 00000000000..9c6dd8e9593 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/documentation.docbook @@ -0,0 +1,73 @@ +<chapter id="documentation"> +<title +>Документирование</title> + +<para +>К несчастью, написание документации часто бывает сложнее написания кода. Но продуманно организованная и понятно написанная, она оказывает значительную помощь в разработке, позволяющую не обращаться лишний раз за советом на форумы, или, что ещё лучше, к автору. </para> + +<para +>Документирование имеет несколько граней. Это <itemizedlist> + <listitem +><para +><emphasis +>внутренняя документация проекта</emphasis +>, состоящая в основном из <itemizedlist> + <listitem +><para +><emphasis +>комментариев</emphasis +> в исходных файлах </para +></listitem> + <listitem +><para +><emphasis +>внутренняя &API;-документация</emphasis +>, генерируемая специальными инструментами, такими как &doxygen; </para +></listitem> + </itemizedlist> + </para +></listitem> + <listitem +><para +><emphasis +>внешняя документация проекта</emphasis +> <itemizedlist> + <listitem +><para +><emphasis +>внешняя &API;-документация</emphasis +>, например по функциям библиотек (&kde;, &Qt; и т.д.) </para +></listitem> + <listitem +><para +>другая документация (по языкам программирования, статьи HOWTO, общая системная информация) </para +></listitem> + </itemizedlist> + </para +></listitem> +</itemizedlist> +</para> +<para +>Вся указанная документация должна быть удобна и легко доступна, когда она понадобится. &kdevelop; предлагает гибкое решение для этого. </para> + +<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen --> + +<sect1 id="docbrowser"> +<title +>Обзор документации</title> + + +<figure id="screenshot-doctreeview" float="1"> +<title +>Снимок экрана структуры документации</title> +<mediaobject> +<imageobject +><imagedata fileref="doctreeview.png"/></imageobject> +</mediaobject> +</figure> + +</sect1 +> <!-- docbrowser --> + +</chapter +> <!-- documentation --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/editing.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/editing.docbook new file mode 100644 index 00000000000..61119041fb5 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/editing.docbook @@ -0,0 +1,606 @@ +<chapter id="editing"> +<title +>Средства редактирования</title> + +<sect1 id="editing-snippets"> +<title +>Заготовки кода</title> + +<itemizedlist> + <title +>Обзор возможностей</title> + <listitem +><para +>SnippetPart добавляет новое отображение справа </para +></listitem> + <listitem +><para +>Добавление, изменение и удаление заготовок доступно через контекстное меню </para +></listitem> + <listitem +><para +>Двойной щелчок по заготовке вставит её в текущую позицию курсора </para +></listitem> + <listitem +><para +>Содержание заготовок отображается в подсказках </para +></listitem> + <listitem +><para +>Заготовки кода хранятся в домашнем каталоге пользователя, поэтому каждый пользователь может иметь свой набор заготовок. </para +></listitem> + <listitem +><para +>Они могут содержать переменные в виде $<varname +>VARNAME</varname +>$. Перед использованием заготовок с переменными будет предложено ввести их значение </para +></listitem> +</itemizedlist> +</sect1 +> <!-- editing-snippets --> + +<sect1 id="keyboardmapping"> +<title +>Комбинации клавиш</title> +<indexterm zone="keyboardmapping" +><primary +>комбинации клавиш</primary +></indexterm> + +<para +>Далее следует список стандартных комбинаций клавиш редактора. </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Стрелка влево </keycap +></para +></entry> +<entry +><para +>Переместиться на один символ влево </para +></entry +></row> + +<row +><entry +><para +><keycap +>Стрелка вправо </keycap +></para +></entry> +<entry +><para +>Переместиться на один символ вправо </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Стрелка влево </keycap +></keycombo +></para +></entry> +<entry +><para +>Переместиться на одно слово влево </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Стрелка вправо </keycap +></keycombo +></para +></entry> +<entry +><para +>Переместиться на одно слово вправо </para +></entry +></row> + +<row +><entry +><para +><keycap +>Стрелка вверх </keycap +></para +></entry> +<entry +><para +>Переместиться на одну строку вверх </para +></entry +></row> + +<row +><entry +><para +><keycap +>Стрелка вниз </keycap +></para +></entry> +<entry +><para +>Переместиться на одну строку вниз </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Up </keycap +></para +></entry> +<entry +><para +>Переместиться на одну страницу вверх </para +></entry +></row> + +<row +><entry +><para +><keycap +>Page Down </keycap +></para +></entry> +<entry +><para +>Переместиться на одну страницу вниз </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Переместиться в начало файла </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> Page Down </keycap +></keycombo +></para +></entry> +<entry +><para +>Переместиться в конец файла </para +></entry +></row> + +<row +><entry +><para +><keycap +>Home </keycap +></para +></entry> +<entry +><para +>Переместиться в начало строки </para +></entry +></row> + +<row +><entry +><para +><keycap +>End </keycap +></para +></entry> +<entry +><para +>Переместиться в конец строки </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>Если к приведённым выше комбинациям клавиш добавить &Shift;, при перемещении курсора будет также выделяться текст, через который курсор проходит при перемещении. </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry +><para +><keycap +>Backspace </keycap +></para +></entry> +<entry +><para +>Удалить один символ слева </para +></entry +></row> + +<row +><entry +><para +><keycap +>Delete </keycap +></para +></entry> +<entry +><para +>Удалить один символ справа (под курсором) </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl; <keycap +> C </keycap +></keycombo +></para +></entry> +<entry +><para +>Копировать выделенный текст в буфер обмена </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> V </keycap +></keycombo +></para +></entry> +<entry +><para +>Вставить выделенный текст из буфера обмена </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> X </keycap +></keycombo +></para +></entry> +<entry +><para +>Копировать выделенный текст в буфер обмена и затем удалить его </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Отменить последнее действие </para +></entry +></row> + +<row +><entry +><para +><keycombo +>&Shift;&Ctrl;<keycap +> Z </keycap +></keycombo +></para +></entry> +<entry +><para +>Повторить последнее отменённое действие </para +></entry +></row> + +</tbody> +</tgroup> +</informaltable> + +</sect1 +> <!-- keyboardmapping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="editing-reporter"> +<title +>Отчёт об ошибках</title> + +<para +>(... в процессе написания ...) </para> +</sect1 +> <!-- editing-reporter --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="searchinggrepping"> +<title +>Поиск в текущем документе и файлах</title> +<indexterm zone="searchinggrepping" +><primary +>поиск</primary +></indexterm> +<indexterm zone="searchinggrepping" +><primary +>нахождение</primary +></indexterm> + +<sect2 id="searching"> +<title +>Поиск текста</title> + +<para +><keycombo +>&Ctrl;<keycap +>F</keycap +></keycombo +> — найти, <keycombo +>&Ctrl;<keycap +>R</keycap +></keycombo +> — найти и заменить </para> + +</sect2 +> <!-- searching --> + + +<sect2 id="isearch"> +<title +>ISearch</title> +<indexterm zone="isearch" +><primary +>поиск по мере набора</primary +></indexterm> +<indexterm zone="isearch" +><primary +>поиск по мере набора</primary +></indexterm> +<indexterm zone="isearch" +><primary +>поиск</primary +><secondary +>по мере набора</secondary +></indexterm> + +<para +>Традиционный поиск через <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти</guimenuitem +></menuchoice +> требует указания искомого отрывка текста полностью. Однако значительно быстрее искать текст по мере набора (инкрементально): нажмите кнопку <guilabel +>ISearch</guilabel +> на панели инструментов и начинайте вводить искомый текст. По мере того, как вы будете вводить новые буквы, каждый раз будет выполняться поиск набираемого слова. Обычно искомое место в документе находится уже после ввода 3-4 букв. </para> + +</sect2 +> <!-- isearch --> + + +<sect2 id="grep"> +<title +>Grep</title> +<indexterm zone="grep" +><primary +>поиск</primary +><secondary +>в файлах</secondary +></indexterm> + +<para +>Оба описанных выше поиска ограничены текущим файлом. Для поиска сразу в нескольких файлах, воспользуйтесь пунктом <guimenuitem +>Поиск в файлах...</guimenuitem +> меню <guimenu +>Правка</guimenu +>. При этом будет вызван графический интерфейс к команде &grep;(1). </para> + +<para +>Здесь вы можете выбрать маску файлов, в которых будет производиться поиск, и другие средства по уменьшению количества сканируемых файлов. Кроме того, в этом диалоге вы можете указать каталог для поиска. Если вы включите флажок <guibutton +>Рекурсивно</guibutton +>, поиск продолжится и во всех вложенных каталогах. </para> + +<para +>Обычно условие поиска представляет собой регулярное выражение с синтаксисом стандарта POSIX. Например, вы можете использовать условие <literal +>"\<K.*"</literal +> если хотите найти все слова, начинающиеся с буквы K. Следующие символы являются служебными: </para> + +<informaltable> +<tgroup cols="2"> +<tbody> + +<row +><entry> + <literal +>.</literal> +</entry +><entry +>Любой символ </entry +></row> +<row +><entry> + <literal +>^</literal> +</entry +><entry +>Начало строки </entry +></row> +<row +><entry> + <literal +>$</literal> +</entry +><entry +>Конец строки </entry +></row> +<row +><entry> + <literal +>\<</literal> +</entry +><entry +>Начало слова </entry +></row> +<row +><entry> + <literal +>\></literal> +</entry +><entry +>Конец слова </entry +></row> +<row +><entry> + <literal +>?</literal> +</entry +><entry +>Предшествующий элемент может совпадать меньше, чем один раз </entry +></row> +<row +><entry> + <literal +>*</literal> +</entry +><entry +>Предшествующий элемент отсутствует или присутствует один или несколько раз </entry +></row> +<row +><entry> + <literal +>+</literal> +</entry +><entry +>Предшествующий элемент присутствует один или более раз </entry +></row> +<row +><entry> + <literal +>{n}</literal> +</entry +><entry +>Предшествующий элемент отсутствует или присутствует один или несколько раз </entry +></row> +<row +><entry> + <literal +>{n,}</literal> +</entry +><entry +>Предшествующий элемент присутствует один или более раз </entry +></row> +<row +><entry> + <literal +>{,n}</literal> +</entry +><entry +>Предшествующий элемент может совпадать меньше, чем один раз </entry +></row> +<row +><entry> + <literal +>{n,m}</literal> +</entry +><entry +>Предшествующий элемент присутствует больше <literal +>n</literal +> но меньше <literal +>m</literal +> раз </entry +></row> + +</tbody> +</tgroup> +</informaltable> + +<para +>Обратное отношение к подвыражениям в скобках также доступно через нотацию <literal +>\n</literal +>. </para> + +<para +>Для программирующих на C++ есть специфические шаблоны. Например, для поиска всех вызовов всех элементарных функций определённого объекта. </para> + +<para +>После запуска поиска, но будет производится внешним, асинхронным процессом. Все найденные элементы будут отображены в виде <guilabel +>Grep</guilabel +>. Чтобы перейти к просмотру файла, щёлкните на нём. Помните, что файлы сортируются по их физическому расположению. Если найденный файл уже открыт в редакторе (и изменён), могут быть несоответствия в номерах строки. Для предотвращения этого сохраняйте все файлы перед поиском. </para> + +</sect2 +> <!-- grep --> + +</sect1 +> <!-- searchinggrepping --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="code-completion"> +<title +>Завершение кода</title> + +<para +>(... в процессе написания ...) </para> +</sect1 +> <!-- code-completion --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="newfiles"> +<title +>Создание новых файлов и классов</title> + +<para +>(... в процессе написания ...) </para> + +<sect2 id="newfiles-edittemplates"> +<title +>Изменение шаблонов</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- newfiles-edittemplates --> + +</sect1 +> <!-- newfiles --> + +</chapter +> <!-- editing --> +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/file-browsers.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/file-browsers.docbook new file mode 100644 index 00000000000..27fa00513d6 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/file-browsers.docbook @@ -0,0 +1,65 @@ +<chapter id="file-browsers"> +<title +>Обзор файлов</title> + +<para +>В левой части главного окна &kdevelop; могут отображаться разнообразные списки и структуры файлов: </para> + +<variablelist> +<varlistentry> +<term +>Дерево файлов</term> +<listitem> +<para +>Наглядное отображение иерархии файлов проекта. При щелчке на файле он будет открыт в редакторе. Не-текстовые файлы открываются в приложениях, сопоставленных с их MIME-типом. </para> + +<para +>Дерево файлов обновляется при каждом изменении файловой системы (в пределах каталога проекта). Например, если вы создадите новый файл или каталог (программой отличной от &kdevelop;), это отразится на списке. На операционных системах, отличных от &Linux;, или на файловой системе NFS, каталоги обновляются через некоторые промежутки времени. </para> + +<para +>Файлы, не представляющие интереса, не отображаются. Однако в диалоговом окне <guimenuitem +>Параметры проекта</guimenuitem +>-<guibutton +>Дерево файлов</guibutton +> вы можете изменить это указанием своих масок файлов для фильтрования (разделяя их запятыми). </para> + +<para +>Более того, вы можете ограничить отображаемые файлы только принадлежащими к текущему проекту. Для этого воспользуйтесь контекстным меню корневого элемента дерева файлов. </para> + +<figure id="screenshot-filetree" float="1"> +<title +>Снимок экрана дерева файлов</title> +<mediaobject> +<imageobject +><imagedata fileref="filetree.png"/></imageobject> +<textobject +><phrase +>Снимок экрана дерева файлов</phrase +></textobject> +</mediaobject> +</figure> + +</listitem> +</varlistentry> +<varlistentry> +<term +>Файловые категории</term> +<listitem> +<para +>Здесь отображаются файлы проекта, сгруппированные по расширению. При щелчке на файле он будет открыт в редакторе. </para> + +<para +>Категории файлов, отображаемые в <guibutton +>Дереве файлов</guibutton +>, можно настроить в <guimenuitem +>настройках проекта</guimenuitem +>. Сканируя каталог, &kdevelop; ищет категорию, к которой подходит текущий файл, а найдя такую, поиск останавливается. Т.е. в конце списка должны быть категории с наиболее общими масками, а в начале — с более специфическими. Например, звёздочка должны быть в конце. </para> + +</listitem> +</varlistentry> +</variablelist> + +</chapter +> <!-- file-browsers --> + +<!-- ====================================================================== --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/getting-started.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/getting-started.docbook new file mode 100644 index 00000000000..47126006af2 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/getting-started.docbook @@ -0,0 +1,3994 @@ + +<!-- +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 +>Сергей</firstname +><surname +>Бобыкин</surname +> <affiliation +><address +><email +>[email protected]</email +></address +></affiliation +><contrib +>Перевод на русский язык</contrib +></othercredit +> +</authorgroup> +</chapterinfo> + +<title +>Начало работы с &kdevelop;.</title> + +<para +>Теперь, когда вы только установили среду разработки &kdevelop;, как вы собираетесь её применять? Это сложное приложение, освоить его непросто, особенно, если вы ещё не использовали такой тип интегрированных сред разработки.</para> + +<para +>Мы попробуем помочь вам в этом на примере создания простого приложения на C++ для KDE. Для этого мы рассмотрим следующие темы:</para> + +<simplelist> +<member +><link linkend="gettingstarted-overview" +>Знакомство с элементами пользовательского интерфейса.</link +></member> +<member +><link linkend="gettingstarted-configure" +>Начальная настройка.</link +></member> +<member +><link linkend="gettingstarted-new" +>Создание нового проекта.</link> +</member> +<member +><link linkend="gettingstarted-edit" +>Работа с документами.</link +></member> +<member +><link linkend="gettingstarted-compile" +>Компиляция проекта.</link +></member> +<member +><link linkend="gettingstarted-extend" +>Добавление в проект классов.</link +></member> +<member +><link linkend="gettingstarted-debug" +>Отладка проекта.</link +></member> +<member +><link linkend="gettingstarted-doc" +>Основные инструменты сборки программ и пользовательской документации.</link +></member> +<member +><link linkend="gettingstarted-keys" +>Последнее, но не менее важное, комбинации клавиш</link +></member> +</simplelist> + +<para +>Перед тем, как начать, нужно прояснить один важный момент.</para> + +<formalpara> +<title +>Предназначение программы.</title> +<para +>Как уже говорилось, &kdevelop; — это <emphasis +>интегрированная среда разработки</emphasis +>. Это означает, что &kdevelop; сама по себе является не средством разработки, но графической оболочкой для упрощения доступа к различным инструментам, многие из которых требуют сложных команд, запускаемых из текстовой консоли.</para> +</formalpara> + +<para +>Хотя &kdevelop; упрощает многие задачи программирования, значительная часть сложности этих инструментов ещё лежит на плечах разработчика. Для полного понимания &kdevelop;, вам необходимо понимать, как они работают.</para> + +<para +>Поэтому мы не можем научить вас разрабатывать программное обеспечение, но познакомим с тем, каким образом &kdevelop; упрощает процесс создания программ. Если вы хотите узнать больше о назначении интегрированных сред разработки, возможно вас заинтересует глава «<link linkend="unixdev" +>Разработка ПО в &UNIX;</link +>», особенно раздел «<link linkend="unixdev-ide" +>Концепции и средства интегрирования</link +>».</para> + +<note> +<para +>Излагая материал, мы предполагаем, что &kdevelop; у вас запускается в режиме <guilabel +>Упрощённый IDEAl</guilabel +>. В других режимах интерфейса, некоторые элементы могут располагаться в других местах и вести себя немного иначе. Если вы не знаете в каком режиме интерфейса работает среда, выберите <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> <guimenuitem +>Интерфейс пользователя</guimenuitem +></menuchoice +> и посмотрите.</para> +</note> + +<sect1 id="gettingstarted-overview"> +<title +>Первое знакомство с &kdevelop;</title> + +<para +>Эта глава посвящена тому, что вы увидите, когда впервые запустите &kdevelop;. В ней вы узнаете:</para> + +<simplelist> +<member +><link linkend="gettingstarted-overview-basic" +>описание интерфейса программы;</link +></member> +<member +><link linkend="gettingstarted-overview-help" +>как получить справку;</link +></member> +<member +><link linkend="gettingstarted-overview-menu" +>структуру меню;</link +></member> +<member +><link linkend="gettingstarted-overview-tools" +>предназначение боковых панелей.</link +></member> +</simplelist> + +<sect2 id="gettingstarted-overview-basic"> +<title +>Описание интерфейса программы</title> + +<para +>При первом запуске &kdevelop;, вы увидите окно, похожее на это:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="empty-ide.png" format="PNG"/> +</imageobject> +<caption> +<para +>Начальное расположение элементов в окне &kdevelop;.</para> +<para +>В реальности окно будет больше, но элементы в нём будут точно такими же.</para> +</caption> +</mediaobject> +</screenshot> + +<formalpara> +<title +>Рабочая область и боковые панели</title> +<para +>В начале среда работает, в так называемом режиме интерфейса <link linkend="uimodes-survey" +>IDEAl</link +>. Рабочее пространство слева, снизу и справа окружено рядами кнопок, которые действуют наподобие вкладок. Если вы нажмёте на одну из них, откроется <emphasis +>боковая панель</emphasis +> для выполнения определённой задачи.</para> +</formalpara> + +<formalpara> +<title +>Меню и панели инструментов</title> +<para +>Вверху окна находится обычная панель меню, под которой следуют несколько панелей инструментов. Некоторые из них изначально пустые. Они будут заполнены после открытия проекта.</para> +</formalpara> + +<formalpara> +<title +>Строка состояния</title> +<para +>Внизу находится строка состояния. Она показывает краткую информацию.</para> +</formalpara> +</sect2> + +<sect2 id="gettingstarted-overview-help"> +<title +>Как получить справку</title> + +<para +>Помимо меню <guimenu +>Справка</guimenu +>, отвечающее на конкретные вопросы, можно использовать строку состояния и два вида всплывающих подсказок, предоставляющих краткую справку.</para> + +<formalpara> +<title +>Как узнать назначение пункта меню.</title> +<para +>При наведении курсора на пункт меню, в строке состояния выводится краткое пояснение к нему. В большинстве случаев это просто название, но для некоторых пунктов — описание команды.</para> +</formalpara> + +<formalpara> +<title +>Как узнать название элемента интерфейса</title> +<para +>Многие элементы имеют всплывающую подсказку, которая будет показываться, если задержать указатель мыши над элементом на несколько секунд. Это полезно для быстрой ориентации на панели инструментов или вкладках боковых панелей в режиме IDEAl, когда на кнопках показываются только значки.</para> +</formalpara> + +<formalpara> +<title +>Как узнать назначение элемента интерфейса</title> +<para +>Для многих элементов среды доступна дополнительная информация через расширенную подсказку. Выберите команду меню <menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Что это?</guimenuitem +></menuchoice +> или нажмите комбинацию клавиш <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +>. Рядом с указателем мыши появится знак вопроса. Выберите интересующий элемент и полу́чите дополнительную информацию о нём, если она имеется. Этим способом также можно выбирать любые меню и их пункты (и активные, и неактивные).</para> +</formalpara> +</sect2> + +<sect2 id="gettingstarted-overview-menu"> +<title +>Структура меню</title> + +<para +>Панель меню содержит десять элементов. После открытия проекта, большинство из них имеет полный набор пунктов, но для некоторых требуется открыть хотя бы один документ в окне редактора. Они предоставляют следующие типы операций.</para> + +<note> +<para +>Это только предварительный обзор. Детальное описание находится в <link linkend="commands" +>справочнике команд</link +>.</para> +</note> + +<variablelist> +<varlistentry> +<term +><guimenu +>Файл</guimenu +></term> +<listitem> +<formalpara> +<title +>Обычные действия</title> +<para +>Создание, открытие, сохранение, печать и закрытие файлов, а также выход из программы.</para> +</formalpara> + +<formalpara> +<title +>Вернуть все</title> +<para +>Отмена последних, ещё не сохранённых изменений загрузкой содержания файла с диска. Операция выполняется для всех редактируемых файлов, не только для файлов проекта.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Правка</guimenu +></term> +<listitem> +<para +>Это меню содержит действия для работы с документом.</para> + +<formalpara> +<title +>Обычные действия</title> +<para +>Отмена и повтор, работа с буфером обмена, варианты выделения текстовых фрагментов.</para> +</formalpara> + +<formalpara> +<title +>Поиск и замена</title> +<para +>Существует два очень мощных средства поиска: <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти в файлах...</guimenuitem +></menuchoice +> и <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Поиск-выбор-замена...</guimenuitem +></menuchoice +>. Они позволяют выполнять поиск и замену не только в пределах текущего документа, но и глобально.</para> +</formalpara> + +<formalpara> +<title +>Комплексные операции</title> +<para +>Переформатирование документа, несколько видов дополнения набираемого текста.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Вид</guimenu +></term> +<listitem> +<para +>Среди прочих данное меню содержит следующие операции:</para> + +<formalpara> +<title +>История просмотра</title> +<para +>Перемещение по открытым документам.</para> +</formalpara> + +<formalpara> +<title +>Отслеживание ошибок</title> +<para +>Перемещение по строкам, в которых обнаружены ошибки во время последней компиляции или сборки.</para> +</formalpara> + +<formalpara> +<title +>Управление редактором</title> +<para +>В случае использования компонента &kate; (встроенный текстовый редактор) будут доступны:</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +>управление переносом строк в окне документа;</para> +</listitem> +<listitem> +<para +>показ или скрытие полосы закладок, номеров строк, закладок на полосе прокрутки;</para> +</listitem> +<listitem> +<para +>управление показом сворачиваемых блоков исходного кода.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Проект</guimenu +></term> +<listitem> +<para +>Вся работа в &kdevelop; основана на <emphasis +>проектах</emphasis +>, которые собирают воедино файлы исходного кода, файлы управления сборкой и другую информацию. Данное меню содержит команды управления проектом. В частности:</para> + +<formalpara> +<title +>Открытие</title> +<para +>Создание, открытие и импорт из других сред.</para> +</formalpara> + +<formalpara> +<title +>Параметры</title> +<para +>Установка параметров.</para> +</formalpara> + +<formalpara> +<title +>Управление классами</title> +<para +>Добавление новых классов и управление иерархией наследования.</para> +</formalpara> + +<formalpara> +<title +>Подготовка к распространению</title> +<para +>Сборка дистрибутивных пакетов для распространения в Интернете.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Сборка</guimenu +></term> +<listitem> +<para +>Команды компиляции и документирования проекта:</para> + +<formalpara> +<title +>Компиляция, сборка, выполнение</title> +<para +>Компилирование и сборка всего проекта или его части, запуск разрабатываемой программы.</para> +</formalpara> + +<formalpara> +<title +>Подготовка к сборке</title> +<para +>Набор операций этой группы зависит от используемой в проекте сборочной системы. Например, в случае automake это могут быть команды для выполнения <filename +>Makefile.cvs</filename +> и скрипта <filename +>configure</filename +>.</para> +</formalpara> + +<formalpara> +<title +>Установка приложения</title> +<para +>Установка приложения в локальные и системные (доступные только для root) каталоги.</para> +</formalpara> + +<formalpara> +<title +>Документация по API</title> +<para +>Сборка или удаление документации по API на базе Doxygen.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Отладка</guimenu +></term> +<listitem> +<para +>Для использования этого меню приложение нужно скомпилировать с отладочной информацией (это можно сделать через команду меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +>). Меню содержит следующие операции:</para> + +<formalpara> +<title +>Обычные операции по отладке</title> +<para +>Первая часть меню представляет собой вариант графического интерфейса к GDB &GNU;. Она включает в себя запуск и останов приложения в отладчике, несколько вариантов пошагового выполнения.</para> +</formalpara> + +<formalpara> +<title +>Точки останова</title> +<para +>Устанавливать точки останова в исходном коде приложения можно несколькими способами. Один из них — команда <guimenuitem +>Установить/снять точку останова</guimenuitem +>.</para> +</formalpara> + +<formalpara> +<title +>Комплексные операции по отладке</title> +<para +>Остальные пункты меню представляют более сложные средства исследования программы. Чтобы узнать подробности, воспользуйтесь комбинацией клавиш <keycombo +><keycap +>&Shift;</keycap +><keycap +>F1</keycap +></keycombo +>.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Скрипты</guimenu +></term> +<listitem> +<para +>Из этого меню вы можете вызывать различные скрипты для выполнения рутинных операций обработки текста в текущем окне редактора. Набор доступных команд зависит от выбранного скрипта. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Окно</guimenu +></term> +<listitem> +<para +>Довольно обычное меню. Содержит команды перехода между открытыми окнами, индивидуального и группового закрытия окон.</para> + +<para +>В зависимости от модуля расширения редактора, который вы используете, также могут присутствовать и другие команды. Так, используемый по умолчанию модуль редактора Kate позволяет разделять окно редактора по горизонтали или вертикали.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Сервис</guimenu +></term> +<listitem> +<para +>Среда обладает широкими возможностями по настройке. Можно выбрать любимый текстовый редактор и инструменты (внешние или в виде модулей), расширяющие функциональность среды. Бо́льшая часть этих возможностей собрана в данном меню.</para> + +<formalpara> +<title +>Комплексное редактирование</title> +<para +>Верхняя часть меню содержит команды текущего модуля редактора. Его можно выбрать с помощью команды меню <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> <guilabel +>Редактор</guilabel +></menuchoice +>.</para> +</formalpara> + +<formalpara> +<title +>Работа с веб-страницами</title> +<para +>Если текущее окно содержит страницу HTML (например, файл документации), меню будет содержать команды навигации по веб-страницам.</para> +</formalpara> + +<formalpara> +<title +>Другие команды</title> +<para +>Обычно меню содержит много других команд. Это зависит от имеющихся инструментов. Используйте комбинацию клавиш <keycombo +><keycap +>&Shift;</keycap +> <keycap +>F1</keycap +></keycombo +> для получения дополнительной информации об их назначении.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Настройка</guimenu +></term> +<listitem> +<para +>Данное меню позволяет показывать или скрывать меню, панели инструментов и строку состояния. А также настраивать комбинации клавиш, панели инструментов, уведомления, редактор и общее поведение среды.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenu +>Справка</guimenu +></term> +<listitem> +<para +>В этом меню можно открыть руководство пользователя KDevelop, искать термины в различных файлах документации, открывать страницы man (традиционный формат документации для UNIX) и страницы info (формат документации проекта GNU). Более того, здесь можно отправить отчёт об ошибках и получить информацию о версии программы и её авторах.</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="gettingstarted-overview-tools"> +<title +>Назначение боковых панелей</title> + +<para +>В режиме пользовательского интерфейса IDEAl рабочая область окружена тремя рядами кнопок так называемых <emphasis +>вкладок боковых панелей</emphasis +>. Они обеспечивают доступ к <emphasis +>боковым панелям</emphasis +>, которые решают основные задачи по разработке программ. Каждый из трёх рядов имеет своё назначение.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Левый ряд</title> +<para +>Доступ к инструментам навигации и выделения.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Нижний ряд</title> +<para +>Окна сообщений различных инструментов.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Правый ряд</title> +<para +>Доступ к документации и инструментам сборки.</para> +</formalpara> +</listitem> +</itemizedlist> + +<para +>Число вкладок боковых панелей изменится после открытия проекта. Тогда будет доступно больше инструментов. Фактическое число боковых панелей зависит от доступных программе <link linkend="plugin-tools" +>инструментов</link +>. Подробно об этом рассказано в главе «<link linkend="setup" +>Настройка &kdevelop;</link +>».</para> + +<para +>На данный момент, когда не открыт ни один проект и загружены модули по умолчанию, вы должны видеть следующие боковые панели. Нажатие на вкладке открывает соответствующую боковую панель.</para> + +<variablelist> +<varlistentry> +<term +>Перемещение и выделение</term> +<listitem> +<formalpara> +<title +>Файлы</title> +<para +>Панель для перемещения по дереву каталогов и выбора файлов для работы, как в &konqueror;. Нажатие левой кнопки мыши на файле открывает его в окне редактора. Нажатие правой кнопкой мыши в области выбора файлов открывает контекстное меню с командами перемещения и управления файлом.</para> +</formalpara> + +<formalpara> +<title +>Окна</title> +<para +>Список окон с файлами, открытых в данный момент. Нажатие левой кнопкой мыши на окне в списке активирует окно в рабочей области. Используйте эту функцию для быстрой навигации по большому количеству открытых файлов. Более того, это окно — средство организации открытых файлов в <emphasis +>сеанс</emphasis +>. Это полезно в очень больших и сложных проектах, помогая разработчику концентрироваться на разных задачах. Нажатие правой кнопкой на окне открывает контекстное меню для управления файлом в окне.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Окна сообщений</term> +<listitem> +<formalpara> +<title +>Приложение</title> +<para +>Показывает вывод приложения, запущенного в среде.</para> +</formalpara> + +<formalpara> +<title +>Diff</title> +<para +>Показывает содержимое файла исправлений или вывод инструмента определения различий, запускаемого командой <menuchoice +><guimenu +>Сервис</guimenu +><guimenuitem +>Окно просмотра различий...</guimenuitem +></menuchoice +>.</para> +</formalpara> + +<formalpara> +<title +>Сообщения</title> +<para +>Показывает сообщения, сгенерированные вызванными из среды инструментами сборки (см. меню <guimenu +>Сборка</guimenu +>).</para> +</formalpara> + +<formalpara> +<title +>Поиск в файлах</title> +<para +>Показывает список элементов, найденных во время операции глобального поиска, запущенного командой меню <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти в файлах...</guimenuitem +></menuchoice +>. Нажатие левой кнопкой мыши на строке автоматически показывает место файла, содержащее найденное, в окне редактора.</para> +</formalpara> + +<formalpara> +<title +>Заменить</title> +<para +>Показывает список результатов глобального поиска с заменой, выполненного командой меню <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Поиск-выбор-замена...</guimenuitem +></menuchoice +>. В этом окне можно принять окончательное решение, что из найденного заменять.</para> +</formalpara> +<note> +<para +>Глобальный поиск с заменой доступен только после загрузки проекта. В противном случае команда меню <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Поиск-выбор-замена...</guimenuitem +> </menuchoice +> будет неактивна.</para> +</note> + +<formalpara> +<title +>Konsole</title> +<para +>Окно эмулятора терминала <application +>Konsole</application +>, где можно вводить команды традиционного для &UNIX; интерфейса командной строки.</para> +</formalpara> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Документация и управление сборкой</term> +<listitem> +<formalpara> +<title +>Документация</title> +<para +>Предоставляет удалённый доступ ко всей документации в структурированном виде. А также несколько видов прямого доступа к руководствам по &kde; или &Qt;.</para> +</formalpara> + +<para +>См. главы «<link linkend="documentation" +>Документация</link +>» и «<link linkend="setup-docu" +>Настройка документации</link +>».</para> + +<formalpara> +<title +>Заготовки</title> +<para +>Коллекция текстовых заготовок для повторного использования во время редактирования. Заготовки могут иметь параметры.</para> +</formalpara> +<para +>См. главы «<link linkend="editing-snippets" +>Заготовки кода</link +>» и «<link linkend="setup-snippets" +>Настройка заготовок кода</link +>».</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> +</sect1> + +<sect1 id="gettingstarted-configure"> +<title +>Немного настройки</title> + +<para +>Перед тем, как начать первый проект, нам нужно подогнать поведение среды под наши нужды. Хотя значения большинства параметров подходит большинству, некоторые стоит подправить.</para> + +<note> +<para +>Более подробно настройка среды освещена в главе «<link linkend="setup" +>Настройка &kdevelop;</link +>».</para> +</note> + +<sect2 id="gettingstarted-configure-general"> +<title +>Главное</title> + +<para +>Для настройки выберите команду меню <menuchoice +><guimenu +>Настройка</guimenu +></menuchoice +> <menuchoice +><guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>. Она откроет диалог <guilabel +>Настройка KDevelop</guilabel +> с разделом <guilabel +>Главное</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-general.png" format="PNG"/> +</imageobject> +<caption> +<para +>Диалог настройки &kdevelop;</para> +</caption> +</mediaobject> +</screenshot> + +<para +>Большинство параметров по умолчанию должны вас устроить, но, возможно, вы захотите некоторые из них изменить.</para> + +<formalpara> +<title +>Каталог проектов по умолчанию</title> +<para +>При первом запуске среда, скорее всего, настроена на ваш домашний каталог. Однако большинство пользователей предпочитает иметь специальный каталог для хранения своих проектов. Введите в это поле название корневого каталога, в котором хотите хранить свои проекты. Также его можно выбрать в дереве каталогов, если нажать справа кнопку «<guilabel +>Выбор файла или папки</guilabel +>» со значком папки.</para> +</formalpara> + +<para +>В наших примерах мы будем использовать выдуманное имя пользователя <filename class="directory" +>devel</filename +>. Заменяйте его своим. Наш пользователь будет использовать каталог <filename class="directory" +>/home/devel/projects</filename +> как каталог проектов. Название <filename class="directory" +>projects</filename +> тоже заменяйте названием своего каталога для проектов. </para> + +<para +>По умолчанию для каждого нового проекта среда создаёт отдельный подкаталог в каталоге проектов. Например, в нашем случае все файлы проекта «Hello» будут располагаться в каталоге <filename class="directory" +>/home/devel/projects/hello</filename +>.</para> + +<para +>Конечно, при необходимости вы можете временно переопределить каталоги. См. главу «<link linkend="applicationwizard" +>&appwizard;</link +>».</para> + +<formalpara> +<title +>Вывод компилятора</title> +<para +>Когда среда компилирует исходный текст, сообщения <application +>make</application +> и других инструментов сборки будут выводиться в окно <guilabel +>Сообщения</guilabel +> в нижней части рабочей области. Обычно эти сообщения очень многословны. Для большего удобства просмотра имеются встроенные средства их сокращения.</para> +</formalpara> + +<para +>В зависимости от используемой вами версии среды параметр <guilabel +>Вывод компилятора</guilabel +> может иметь предустановленное значение «Полный», в этом режиме сообщения выводятся полностью. Если он для вас не удобен, выберите режим «Очень краткий» из выпадающего списка.</para> + +<caution> +<para +>Имейте в виду, в этом режиме в окне <guilabel +>Сообщения</guilabel +> будет показываться только <emphasis +>самая основная</emphasis +> информация. В случае возникновения ошибок (во время сборки, например), скорее всего, вы захотите видеть, если не полные, то значительно более подробные сообщения. Полное содержание сообщений не теряется. Его можно увидеть с помощью команды «Полный вывод компилятора» контекстного меню окна <guilabel +>Сообщения</guilabel +>.</para> +</caution> +</sect2> + +<sect2 id="gettingstarted-configure-search"> +<title +>Создание индекса для поиска в документации</title> + +<para +>Существует другой, не такой очевидный, элемент, который должен быть создан перед началом работы над проектом — индекс документации. Он необходим среде для выполнения поиска по документации. Во время работы над проектом поиск будет нужен вам постоянно. Поэтому, давайте, заранее его создадим.</para> + +<para +>Откройте боковую панель <guilabel +>Документация</guilabel +> в правой части главного окна и откройте на ней вкладку <guilabel +>Поиск</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="documents-search.png" format="PNG"/> +</imageobject> +<caption +><para +>Вкладка создания поискового индекса.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Теперь нажмите кнопку <guibutton +>Обновить конфигурацию</guibutton +>, чтобы убедиться, что основные инструменты поиска установлены правильно. Должен появиться диалог с сообщением «Конфигурационный файл обновлён». Нажмите кнопку <guibutton +>OK</guibutton +> и он исчезнет.</para> + +<para +>Теперь среда готова к обработке известной ей документации и созданию индекса. Нажмите кнопку <guibutton +>Обновить индекс</guibutton +> справа. Появится диалог <guilabel +>Создаётся индекс поиска</guilabel +>, показывающий степень выполнения операции создания индекса.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-docu-indexgen.png" format="PNG"/> +</imageobject> +<caption +><para +>Среда создаёт индекс для поиска в документации.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Этот процесс может занять определённое время в зависимости от объёма документации и мощности вашей машины. В конце концов кнопка <guibutton +>Отмена</guibutton +> будет заменена кнопкой <guibutton +>OK</guibutton +>. Нажмите её для продолжения.</para> + +<note> +<itemizedlist> +<listitem> +<para +>Обычно это работает идеально. Но в некоторых случаях программа <application +>htdig</application +>, которая используется средой для выполнения полнотекстового поиска, может быть неправильно настроена. См. главу «<link linkend="setup-docu-textsearch" +>Индексирование документации</link +>».</para> +</listitem> +<listitem> +<para +>Чтобы была возможность осуществлять поиск по API &kde; и &Qt;, <emphasis +>KDELibs Apidocs</emphasis +> должны быть установлены до установки &kdevelop;. Если у вас проблемы с генерацией индекса или выполнением <link linkend="gettingstarted-edit-defs" +>примеров поиска идентификаторов</link +> ниже в этой главе, убедитесь, что эта документация существует и доступна среде. См. <link linkend="kdevelop-install" +>Установка &kdevelop;</link +>.</para> +</listitem> +</itemizedlist> +</note> +</sect2> +</sect1> + + +<sect1 id="gettingstarted-new"> +<title +>Создание проекта</title> + +<para +>Почти каждое приложение состоит из десятков, сотен, и даже тысяч файлов, которые нужно содержать в структурированном, удобном для обработки виде. Для решения этой проблемы среда использует концепцию <emphasis +>проектов</emphasis +>. Поэтому, приступая к разработке в среде, обычно первым делом создают проект.</para> + +<para +>К счастью, это очень легко. Для этого в среде имеется так называемый Мастер проектов (см. главу "<link linkend="applicationwizard" +>Начало работы — создание проекта</link +>").</para> + +<para +>Теперь приступим к созданию простого проекта, чтобы увидеть, как просто это делается, и какие файлы и инструменты для этого имеются. Рассмотрим следующие темы:</para> + +<simplelist> +<member +><link linkend="gettingstarted-new-setup" +>Создание нового проекта с помощью мастера.</link +></member> +<member +><link linkend="gettingstarted-new-files" +>Файлы, создаваемые в проекте.</link +></member> +<member +><link linkend="gettingstarted-new-toolviews" +>Дополнительные боковые панели, показываемые при открытом проекте.</link +></member> +</simplelist> + +<sect2 id="gettingstarted-new-setup"> +<title +>Создание нового проекта</title> + +<para +>Давайте, создадим простой проект приложения &kde; «Hello World». Для этого выполните следующие действия:</para> + +<procedure> +<step> +<para +>Запустите мастер командой меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Создать проект...</guimenuitem +></menuchoice +>.</para> +</step> + +<step> +<para +>Появится диалог <guilabel +>Новый проект</guilabel +>. Вверху на вкладке <guilabel +>Все проекты</guilabel +> находится список языков программирования.</para> + +<substeps> +<step> +<para +>Мы хотим создать C++ приложение для &kde;, поэтому нажмите на <guilabel +>+</guilabel +> слева от <guilabel +>C++</guilabel +>, чтобы открыть эту ветвь.</para> +</step> + +<step> +<para +>Ветвь содержит список возможных типов приложений на этом языке. Мы будем собирать приложение для &kde;, поэтому откройте подраздел, нажав <guilabel +>+</guilabel +> рядом с <guilabel +>KDE</guilabel +></para> +</step> + +<step> +<para +>Теперь вам предлагаются несколько <emphasis +>шаблонов проекта</emphasis +>. Перейдите в конец ветви и выберите <guilabel +>Простое приложение KDE с формой</guilabel +>.</para> + +<para +>Справа будет показан предварительный вид приложения и его краткое описание.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-new-project.png" format="PNG"/> +</imageobject> +<caption> +<para +>Выбор шаблона для проекта «Hello World»</para> +</caption> +</mediaobject +></screenshot> +</step> + +<step> +<para +>Нашему приложению нужно название. Найдите блок <guilabel +>Свойства</guilabel +> внизу диалога и введите подходящее название в поле <guilabel +>Имя приложения</guilabel +>.</para> + +<para +>В нашем примере это «Hello», но вы можете использовать любое, какое вам нравится. Главное, чтобы в названии содержались только буквы, цифры и символы подчёркивания. Мастер никакие другие символы в названии не принимает.</para> +</step> + +<step> +<para +>Убедитесь, что текстовое поле <guilabel +>Расположение</guilabel +> внизу содержит название каталога ваших проектов, установленного в главе «<link linkend="gettingstarted-configure" +>Немного настройки</link +>». Если это не так, введите его или выберите из списка каталогов, открываемого кнопкой с изображением папки справа от поля ввода.</para> + +<para +>Если всё сделано правильно, надпись <guilabel +>Конечное расположение</guilabel +> внизу будет показывать путь к каталогу проекта. Если же к нему добавлено слово «(неверно)», попробуйте другое название проекта и/или проверьте наличие каталога проектов в файловой системе и пра́ва записи в него.</para> +</step> + +<step> +<para +>Если нет никаких ошибок, кнопка <guibutton +>Далее</guibutton +> внизу диалога становится активной. Нажмите её для продолжения.</para> +</step> +</substeps> +</step> + +<step> +<para +>Вы перейдёте на шаг <guilabel +>Параметры проекта</guilabel +>. Проверьте правильность полей <guilabel +>Автор</guilabel +> и <guilabel +>Электронная почта</guilabel +>. Обычно по умолчанию они содержат параметры пользователя &kde; (см. диалог <guilabel +>Профиль пользователя</guilabel +> Центра управления KDE). Измените их, если они вас не устраивают.</para> + +<screenshot id="gettingstarted-new-setup-options"> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-hello-options.png" format="PNG"/> +</imageobject> +<caption> +<para +>Введите ваше имя и (не обязательно) адрес электронной почты.</para> +</caption> +</mediaobject> +</screenshot> + +<note> +<para +>Вы должны по крайней мере ввести значение поля <guilabel +>Автор</guilabel +>. Это обязательно. Оно необходимо для подготовки файлов приложения.</para> +</note> + +<para +>Если нет никаких ошибок, кнопка <guibutton +>Далее</guibutton +> станет активной. Нажмите её для продолжения.</para> +</step> + +<step> +<para +>Шаги <guilabel +>Система управления версиями</guilabel +>, <guilabel +>Шаблон для файлов .h</guilabel +> и <guilabel +>Шаблон для файлов .cpp</guilabel +> пока не представляют интереса. Пропустите их, нажимая кнопку <guibutton +>Далее</guibutton +> и кнопку <guibutton +>Готово</guibutton +> на последнем шаге.</para> +</step> +</procedure> + +<para +>Вот и всё! Мастер создаст набор начальных файлов в каталоге <guilabel +>Конечное расположение</guilabel +> (см. пункт 2с).</para> + +<para +>Когда создание файлов завершится, среда откроет окно редактора для файла реализации <emphasis +>главного окна приложения</emphasis +> (в нашем примере это файл <filename +>hello.cpp</filename +>), чтобы вы могли сразу же приняться за работу.</para> +</sect2> + +<sect2 id="gettingstarted-new-files"> +<title +>Начальные файлы</title> + +<para +>Хотя наш проект довольно простой, мастер создал целую группу файлов исходного кода и управления проектом. Вы можете их легко увидеть, если откроете боковую панель <guilabel +>Файлы</guilabel +> слева внизу. Его содержание показано на иллюстрации ниже.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="tutorial-hello-new.png" format="PNG"/> +</imageobject> +<caption> +<para +>Начальные файлы нашего проекта</para> +</caption> +</mediaobject> +</screenshot> + +<para +>Для демонстрации файлов, созданных мастером, мы открыли бо́льшую часть ветвей в боковой панели <guilabel +>Файлы</guilabel +> слева. Ветвь открывается простым нажатием левой кнопкой мыши на её названии в дереве.</para> + +<para +>С этой же целью справа мы открыли ветви в боковой панели <guilabel +>Проект Automake</guilabel +>, где перечислены некоторые файлы исходного кода проекта.</para> + +<sect3 id="gettingstarted-new-files-copyright"> +<title +>Указание авторских прав</title> + +<para +>Все приложения, удовлетворяющие требованиям проекта &GNU;, должны быть обеспечены авторскими правами. Уведомление о них требуется в <emphasis +>файлах исходного кода</emphasis +> и во время <emphasis +>выполнения приложения</emphasis +>. Мастер уже поместил соответствующую информацию об авторских правах и лицензировании в файлы проекта.</para> + +<formalpara> +<title +>Сведения об авторских правах в файлах исходного кода.</title> +<para +>Помните шаг «<link linkend="gettingstarted-new-setup-options" +><guilabel +>Параметры проекта</guilabel +></link +>» во время создания нового проекта? Там нужно было предоставить ваше имя и адрес электронной почты, как разработчика. Теперь посмотрите на верхнюю часть окна редактирования файла <guilabel +>hello.cpp</guilabel +>. Мастер поместил их в заголовок лицензирования каждого созданного файла исходного кода.</para> +</formalpara> + +<programlisting +>/*************************************************************************** + * Copyright (C) 2006 by Joe User * + * [email protected] * + * * + * This program is free software; you can redistribute it and/or modify * +</programlisting> + +<para +>Этот заголовок добавляется во все файлы исходного кода, которые создаются в среде. Среда хранит эти параметры в файлах шаблонов (в каталоге <filename class="directory" +>templates</filename +>).</para> + +<formalpara> +<title +>Информация об авторских правах во время выполнения приложения</title> +<para +>Во время работы приложения &kde; пользователь может посмотреть информацию о программе (обычно через меню <guimenu +>Справка</guimenu +>). Необходимый для этого код автоматически генерируется средой. Он находится в файле <filename +>main.cpp</filename +>. См. пример ниже:</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, + "[email protected]"); + about.addAuthor( "Joe User", 0, "[email protected]" ); +</programlisting> + +<para +>Он добавляет имя главного разработчика (в нашем случае «Joe User») и адрес электронной почты на вкладку с информацией об авторских правах и вкладку <guilabel +>Авторы</guilabel +> диалога <guilabel +>О программе</guilabel +>.</para> + +<important> +<para +>Делая значительные изменения существующего проекта, убедитесь, что ввели своё имя и адрес электронной почты в уведомление об авторских правах каждого изменённого файла и диалог <guilabel +>About</guilabel +>. Не стесняйтесь, этим вы помогаете сообщество свободного программного обеспечения.</para> +</important> +</sect3> + +<sect3 id="gettingstarted-new-files-source"> +<title +>Начальные файлы исходного кода</title> + +<para +>Мастер поместил исходные файлы в подкаталог <filename class="directory" +>src</filename +> каталога проекта. Как вы, возможно, и ожидали, там находятся <filename +>main.cpp</filename +>, <filename +>hello.h</filename +> и <filename +>hello.cpp</filename +>.</para> + +<para +>В типичном приложении &kde; есть несколько дополнительных файлов, а именно:</para> + +<itemizedlist> +<listitem> +<para +><filename +>hello.desktop</filename +> — метаданные для интеграции приложения в &kde;.</para> +</listitem> + +<listitem> +<para +><filename +>hi16-app-hello.png</filename +> и <filename +>hi32-app-hello.png</filename +> — значки приложения (по умолчанию).</para> +</listitem> + +<listitem> +<para +><filename +>helloui.rc</filename +> — описание интерфейса пользователя (на данный момент меню).</para> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-files-doc"> +<title +>Начальная документация приложения</title> + +<para +>В подкаталоге <filename class="directory" +>doc/en</filename +> находится файл <filename +>index.docbook</filename +>. Это шаблон для создания пользовательской документации.</para> +</sect3> + +<sect3 id="gettingstarted-new-files-project"> +<title +>Проектные и вспомогательные файлы</title> + +<para +>На боковой панели <guilabel +>Файлы</guilabel +> те файлы, с которыми мы познакомились, выделены полужирным шрифтом. В то же время, большинство других — нет. Это означает, что они предназначены для совершенно других целей. Их содержание оказывает непосредственное влияние на приложение. В файлах исходного кода хранится исполняемый код приложения, в остальных — необходимые данные или документация. Эти файлы должны обслуживаться и в определённом порядке обрабатываться во время сборки проекта. Поэтому они называются <emphasis +>проектные файлы</emphasis +>.</para> + +<para +>Список всех проектных файлов можно увидеть в окне <guilabel +>Проект Automake</guilabel +> внизу справа на рабочей области. Как мы скоро увидим, &automanag; использует их содержание для управления сборкой.</para> + +<para +>Файлы, не выделенные полужирным шрифтом, имеют второстепенное значение и принадлежат нескольким различным классам:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Управление сборкой проекта</title> +<para +>Файлы этого класса управляют компиляцией, установкой, созданием документации и так далее. Если проект использует механизм &GNU; <application +>autotools</application +>, как в нашем примере, то в каждом его каталоге будет лежать файл <filename +>Makefile.am</filename +>. Это разновидность файлов для утилиты make, содержащие правила сборки. Они будут обрабатываться вместе с различными файлами программы <filename +>configure</filename +> во время сборки. В результате в каждом каталоге будет создан окончательный файл <filename +>Makefile</filename +>. Этот файл содержит правила для утилиты <application +>make</application +>, с помощью которых она будет создавать двоичные файлы приложения.</para> +</formalpara> + +<para +>За содержанием файлов <filename +>Makefile.am</filename +> нужно следить во время всего процесса разработки. К счастью, среда с помощью инструмента &automanag; почти полностью избавляет вас от этой проблемы. В своей основе &automanag; — графическая оболочка для работы с содержанием файла <filename +>Makefile.am</filename +>.</para> + +<para +>Остальные файлы управления сборкой проекта — <filename +>configure.in.in</filename +> и <filename +>subdirs</filename +> — лежат в корневом каталоге проекта. Они будут обрабатываться определёнными файлами из специального каталога администрирования &kde; (<filename class="directory" +>admin</filename +>) для создания файлов <filename +>configure</filename +> и <filename +>Makefile</filename +> и последующей сборки двоичных файлов приложения.</para> +</listitem> + +<listitem> +<formalpara> +<title +>Файлы управления средой</title> +<para +>Среда сама нуждается в некоторых управляющих файлах. Они находятся в корневом каталоге проекта. в нашем примере это <filename +>hello.kdevelop</filename +>, <filename +>hello.kdevelop.pcs</filename +> и <filename +>hello.kdevses</filename +>.</para> +</formalpara> + +<para +>Особенно важен файл <filename +>xxx.kdevelop</filename +> (где «xxx» — название проекта). Это главный <emphasis +>файл проекта KDevelop</emphasis +>. Он необходим для загрузки проекта в среду.</para> + +<warning> +<para +>Никогда не изменяйте, не переименовывайте и, тем более, не удаляйте эти файлы вручную! Иначе среда, скорее всего, не сможет правильно работать с проектом.</para> +</warning> +</listitem> + +<listitem> +<formalpara> +<title +>Файлы описания проекта GNU</title> +<para +>Для любого приложения, удовлетворяющего требованиям проекта &GNU;, в корневом каталоге проекта обязательно должны присутствовать несколько файлов: <filename +>AUTHORS</filename +>, <filename +>ChangeLog</filename +>, <filename +>INSTALL</filename +>, <filename +>COPYING</filename +> (содержит текст лицензии GNU GPL); <filename +>INSTALL</filename +>, <filename +>NEWS</filename +>, <filename +>README</filename +> и <filename +>TODO</filename +>.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Другие файлы</title> +<para +>Несколько не упомянутых ранее файлов:</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +><filename +>Doxyfile</filename +>. Управляет созданием документации по &API; проекта.</para> +</listitem> + +<listitem> +<para +>Каталог <filename class="directory" +>templates</filename +> содержит шаблоны файлов, которые среда использует как заготовки для создания новых исходных файлов. Вы можете в любое время их изменить. Новое содержание будет использовано при последующем создании исходных файлов соответствующих типов.</para> + +<para +>Например, можно выровнять звёздочки на концах строк, сообщающих об авторских правах, которые мастер вставил в шаблоны файлов <filename +>cpp</filename +> и <filename +>h</filename +>, чтобы создаваемые исходные файлы выглядели более опрятно.</para> +</listitem> + +<listitem> +<para +>Каталог <filename class="directory" +>po</filename +> предназначен для локализации приложения. Это существенная часть файлов проекта (содержит файл <filename +>Makefile.am</filename +>), но, в основном, они используются в процессе перевода, который не особенно интересует разработчика приложения.</para> +</listitem> + +<listitem> +<para +>Каталог <filename class="directory" +>admin</filename +>. Он нужен приложениям &kde;. так как нём хранятся файлы, необходимые для обслуживания исходного кода и двоичных файлов приложения, а также для их правильной интеграции в среду &kde;.</para> +</listitem> +</itemizedlist> + +</listitem> +</itemizedlist> +</sect3> +</sect2> + +<sect2 id="gettingstarted-new-toolviews"> +<title +>Дополнительные боковые панели</title> + +<para +>Когда мастер создаст новый проект, вы увидите, что появились несколько дополнительных боковых панелей. Они имеют значение только во время работы с проектом и обеспечивают следующую функциональность.</para> + +<note> +<para +>Конкретный набор боковых панелей зависит от того, какие дополнительные модули загружены в среду. Этим можно управлять. О том, как это делать, читайте раздел "<link linkend="setup-plugins" +>Подключаемый инструментарий</link +>".</para> +</note> + +<sect3 id="gettingstarted-new-toolviews-left"> +<title +>Инструменты перемещения и выделения (левая сторона)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Закладки</title> +<para +>Вы можете ставить закладку на любую строку текстового файла для быстрого возврата к ней. Среда будет помнить все <emphasis +>закладки</emphasis +> даже после закрытия окна редактора. Данная боковая панель содержит список всех закладок по имени файла и номеру строки. Вы просто нажимаете левой кнопкой мыши на закладку в списке и нужное место файла открывается в окне редактора.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Классы</title> +<para +>Список классов, методов и так далее, содержащихся в проекте. Нажатие левой кнопкой мыши на элементе списка открывает соответствующий заголовочный файл или файл реализации в окне редактора и перемещает курсор на соответствующее объявление или определение.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Группы</title> +<para +>С помощью этой боковой панели можно объединять файлы проекта в различные группы: исходный код, интерфейс пользователя, значки, переводы и т.п. Нажатие левой кнопкой мыши на файле в группе открывает его в окне редактора.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Переменные</title> +<para +>Используется отладчиком для показа, вычисления и наблюдения значений переменных во время отладки.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-toolviews-bottom"> +<title +>Сообщения (нижняя сторона)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Valgrind</title> +<para +>Результаты программы <application +>Valgrind</application +> (средство анализа программы во время выполнения). Используется, например, для поиска утечек памяти.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Безопасность</title> +<para +>Модуль <guilabel +>Проверка безопасности</guilabel +> выводит на эту боковую панель предупреждения о наличии в текущем файле исходного кода типичных проблем безопасности.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Точки останова</title> +<para +>Панель для управления точками останова в файлах исходного кода. Используется в вместе с отладчиком.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>CTags</title> +<para +>Панель для работы с базой данных идентификаторов. С её помощью можно искать идентификаторы в файлах исходного кода. Для создания базы используется программа <application +>CTags</application +>. Результаты поиска объединяются в список. Нажатие левой кнопкой мыши на элементе списка открывает в окне редактора файл с идентификатором.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Проблемы</title> +<para +>Среда отслеживает типичные проблемы программирования в редактируемом файле исходного кода и выводит предупреждения на эту боковую панель.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-new-toolviews-right"> +<title +>Управление исходным кодом (правая сторона)</title> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Проект Automake</title> +<para +>Инструмент &automanag; — это графическая оболочка для работы с содержанием файлов <filename +>Makefile.am</filename +>, расположенных в каждом каталоге проекта. Он имеет два поля управления. Верхнее показывает часть подкаталогов проекта, которые содержат <emphasis +>проектные файлы</emphasis +>. Каждый такой подкаталог должен иметь файл <filename +>Makefile.am</filename +>. В &automanag; он называется <emphasis +>подпроект</emphasis +>.</para> +</formalpara> + +<para +>Нажатие левой кнопкой мыши на подпроекте показывает его проектные файлы в нижнем поле. Файлы группируются в соответствии их ролью в файле <filename +>Makefile.am</filename +> данного подпроекта.</para> + +<para +>&automanag; — очень мощный инструмент для управления проектом и его подпроектами, а также функциями проектных файлов в процессе сборки приложения. <link linkend="gettingstarted-extend-automake" +>Ниже</link +> мы рассмотрим его основные особенности. Более подробное описание в главе «<link linkend="project-management" +>Сборка и управление проектом</link +>».</para> +</listitem> +</itemizedlist> +</sect3> +</sect2> +</sect1> + + +<sect1 id="gettingstarted-edit"> +<title +>Советы по работе с документами.</title> + +<para +>В нашем примере &appwizard; оставил файл <filename +>hello.cpp</filename +> открытым в окне редактора, чтобы вы могли немедленно приступить к работе. Мы предполагаем, что вы умеете пользоваться редактором, поэтому не будем вдаваться в подробности. Однако среда обладает несколькими полезными функциями для управления окнами редактора и документами. Их мы и рассмотрим.</para> + +<simplelist> +<member +><link linkend="gettingstarted-edit-headers" +>Быстрое переключение между заголовочным файлом и файлом реализации.</link +></member> +<member +><link linkend="gettingstarted-edit-defs" +>Быстрый доступ к объявлениям и определениям.</link +></member> +<member +><link linkend="gettingstarted-edit-arrange" +>Упорядочение окон редактора.</link +></member> +<member +><link linkend="gettingstarted-edit-problems" +>Отслеживание типичных проблем.</link +></member> +</simplelist> + +<sect2 id="gettingstarted-edit-headers"> +<title +>Быстрое переключение между заголовочным файлом и файлом реализации</title> + +<para +>Среда предлагает простой и быстрый способ переключения с файла реализации (<filename +>.cpp</filename +>) на соответствующий заголовочный файл (<filename +>.h</filename +>) и наоборот. Нажмите правой кнопкой мыши в окне редактора — появится меню, как на иллюстрации ниже.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-switch-header.png" format="PNG"/> +</imageobject> +<caption +><para +>Переключение между файлом реализации и заголовочным файлом.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Выберите пункт <guimenuitem +>Переключить заголовочный файл и файл реализации</guimenuitem +>. Среда найдёт соответствующий заголовочный файл или файл реализации и откроет его в другом окне редактора. В нашем примере, если вы нажали правой кнопкой мыши в файле <filename +>hello.cpp</filename +>, будет показан файл <filename +>hello.h</filename +>, и курсор переместится в его окно.</para> + +<para +>Более того, если вы нажмёте правой кнопкой мыши в пределах кода реализации класса, среда установит курсор на строке объявления этого класса в заголовочном файле. И наоборот, нажатие правой кнопкой мыши на объявлении класса покажет его реализацию.</para> + +<para +>Если окно редактора с файлом должно переключиться на уже существующее, среда его активирует и переместит в него курсор, если это необходимо.</para> +</sect2> + +<sect2 id="gettingstarted-edit-defs"> +<title +>Доступ к объявлениям и определениям</title> + +<para +>Но что если вы работаете над файлом исходного кода и хотите найти объявление или определение идентификатора? Это тоже нетрудно. По существу, всё, что вам нужно сделать — это нажать правой кнопкой мыши на интересующем вас идентификаторе.</para> + +<para +>Однако, нужно разделять две различных ситуации:</para> +<simplelist> +<member +><link linkend="gettingstarted-edit-defs-external" +>доступ к идентификаторам, определённым вне проекта</link +> и</member> +<member +><link linkend="gettingstarted-edit-defs-project" +>работу с внутренними идентификаторами проекта</link +>.</member> +</simplelist> + +<sect3 id="gettingstarted-edit-defs-external"> +<title +>Внешние объявления и определения</title> + +<para +>В самом типичном случае, вы будете искать идентификатор, определённый за пределами проекта. В проектах &kde; такие идентификаторы, скорее всего, документированы в библиотеках &kde; и &Qt;. Если &kde; и &kdevelop; установлены правильно, то должен быть доступ к документации по API и возможность поиска идентификаторов в ней.</para> + +<para +>Давайте рассмотрим пример. Найдите в окне редактора файла <filename +>hello.cpp</filename +> следующие строки:</para> + +<programlisting +>Hello::Hello() + : KMainWindow( 0, "Hello" ) +{ +</programlisting> + +<para +>Нажмите правую кнопку мыши на <classname +>KMainWindow</classname +>. Откроется меню. Выберите в нём пункт <guimenuitem +>Искать в документации: KMainWindow</guimenuitem +> и отпустите кнопку. Откроется боковая панель <guilabel +>Документация</guilabel +>, показывающая <classname +>KMainWindow</classname +> как элемент поиска в разделе <guilabel +>Поиск</guilabel +>. Через мгновенье в рабочей области откроется новое окно редактора, показывающее страницу справочника по API KDE с описанием класса <classname +>KMainWindow</classname +>.</para> + +<para +>См. иллюстрацию ниже. Мы намеренно открыли вкладку <guilabel +>Документация</guilabel +>, <guilabel +>Поиск</guilabel +>, чтобы продемонстрировать результат выбора этого пункта меню.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-search-doc.png" format="PNG"/> +</imageobject> +<caption +><para +>Поиск идентификаторов во внешней документации.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Вы могли бы выбрать пункт <guimenuitem +>Поиск в документации: KMainWindow</guimenuitem +>. В этом случае была бы показана вкладка <guilabel +>Поиск</guilabel +> боковой панели <guilabel +>Документация</guilabel +>, обычно предлагающая выбор страниц, содержащих искомую строку (в нашем примере это классы <classname +>KMainWindow</classname +> и <classname +>KMainWindowInterface</classname +>). Выберите любую из них, и она будет показана в окне редактора.</para> + +<note> +<para +>Если это не сработало, возможно, не был создан индекс документации. См. <link linkend="gettingstarted-configure-search" +>предыдущий раздел</link +>.</para> +</note> +</sect3> + +<sect3 id="gettingstarted-edit-defs-project"> +<title +>Внутренние объявления и определения проекта</title> + +<para +>Поиск во внешней документации имеет свои ограничения. С помощью него нельзя найти идентификатор, который используется только внутри текущего проекта. Решение этой проблемы есть: среда может использовать индексы, созданные программой <application +>CTags</application +> для поиска в исходных текстах проекта.</para> + +<para +>Чтобы воспользоваться этой функцией в нашем проекте, мы должны сначала создать индекс. Это делается с помощью боковой панели <guilabel +>CTags</guilabel +>, расположенной внизу рабочей области.</para> + +<para +>Когда вы нажмёте на кнопку вкладки <guibutton +>CTags</guibutton +>, откроется боковая панель. В её правом нижнем углу вы обнаружите кнопку <guibutton +>Создать индекс</guibutton +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-regenerate.png" format="PNG"/> +</imageobject> +<caption +><para +>Нажмите её.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Подождите несколько секунд. Надпись <guilabel +>База данных CTags не найдена</guilabel +> слева от этой кнопке сменится текущей датой. Теперь можно искать идентификаторы.</para> + +<tip> +<para +>Дата рядом с кнопкой <guilabel +>Создать индекс</guilabel +> предназначена для напоминания о том, что индекс, возможно, устарел. Когда ваши попытки найти какой-либо идентификатор начнут завершаться неудачно, подумайте об обновлении индекса. В больших проектах это может занять значительное время, но вам следует выработать привычку регулярно обновлять индекс после существенных изменений исходного кода программы.</para> +</tip> + +<para +>Существует несколько способов поиска идентификаторов в проекте.</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Использование боковой панели CTags</title> +<para +>Это просто. Начните вводить название идентификатора в поле <guilabel +>Поиск</guilabel +> внизу слева. Среда попытается дополнить вводимое слово и показать все идентификаторы, которые начинаются с последовательности символов в поле.</para> +</formalpara> + +<para +>Если, например, вы хотите узнать, где используется идентификатор «Hello» в нашем проекте, наберите в поле <guilabel +>Поиск</guilabel +> «H». Среда немедленно примется за дело и покажет результат, подобный следующему:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-lookup.png" format="PNG"/> +</imageobject> +<caption +><para +>Поиск идентификатора с помощью боковой панели <guilabel +>CTags</guilabel +>.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Если вы нажмёте левой кнопкой мыши на один из элементов списка, среда откроет в окне редактора файл и установит курсор в соответствующее место.</para> +</listitem> + +<listitem> +<formalpara> +<title +>Использование контекстного меню в файле исходного кода</title> +<para +>Это удобно, когда вы работаете с определённым исходным файлом. Допустим, вы изучаете файл <filename +>main.cpp</filename +> нашего проекта. Там вы находите строку</para> +</formalpara> +<programlisting +>Hello *mainWin = 0; +</programlisting> +<para +>и задаётесь вопросом: «Для чего используется данная переменная?». Чтобы это выяснить, просто нажмите правой кнопкой мыши на идентификаторе «Hello». Появится меню, содержащее в конце необходимые для перехода пункты.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-ctags-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>Получение информации <application +>CTags</application +> об идентификаторе в проекте.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Нажмите левой кнопкой мыши на интересующем пункте. Выберите <guilabel +>CTags: перейти к определению «Hello»</guilabel +>. Среда незамедлительно откроет файл <filename +>hello.cpp</filename +> в новом окне редактора и переместит курсор прямо к определению класса:</para> +<programlisting +>Hello::Hello() + : KMainWindow( 0, "Hello" ) +{ +</programlisting> +</listitem> + +<listitem> +<formalpara> +<title +>Глобальный поиск</title> +<para +>Эта функция особенно полезна для поиска произвольного текста в исходном коде проекта. Есть два способа запустить глобальный поиск:</para> +</formalpara> +<itemizedlist> +<listitem> +<para +>запустить глобальный поиск командой меню <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти в файлах...</guimenuitem +></menuchoice +>;</para> +</listitem> +<listitem> +<para +>использовать контекстное меню окна редактора.</para> +</listitem> +</itemizedlist> + +<para +>Мы продемонстрируем второй способ на нашем проекте. Содержание открываемого меню будет, в целом, идентичным. Давайте предположим, что мы изучаем исходный код в файле <filename +>hello.cpp</filename +>, курсор находится на первом идентификаторе «Hello», и мы хотим узнать, в каких файлах и сколько раз встречается данный идентификатор. Это типичный случай, в котором используется глобальный поиск.</para> + +<para +>Теперь, удерживая курсор мыши над идентификатором «Hello», нажмите правую кнопку мыши и выберите в появившемся контекстном меню пункт <guilabel +>Grep: Hello</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="editor-find-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>Запуск глобального поиска из окна редактора.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Появится диалог <guilabel +>Поиск в файлах</guilabel +> (точно такой же, как по команде меню <menuchoice +><guimenu +>Правка</guimenu +> <guimenuitem +>Найти в файлах...</guimenuitem +></menuchoice +>).</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="find-in-files.png" format="PNG"/> +</imageobject> +<caption +><para +>Диалог представляет собой графическую оболочку для выполнения глобального поиска в проекте.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Это очень мощный инструмент для выполнения поиска с помощью утилит <application +>find</application +> и <application +>grep</application +> во всём проекте. Мы не будем здесь углубляться в детали, вы можете поэкспериментировать с его возможностями сами. В данный момент в поле <guilabel +>Образец</guilabel +> уже должно быть помещено наше слово. В противном случае введите его в поле и нажмите кнопку <guibutton +>Поиск</guibutton +> внизу справа.</para> + +<para +>Снизу откроется боковая панель <guilabel +>Поиск в файлах</guilabel +>, показывающая названия файлов нашего проекта и строки, где встречается искомое слово. Как обычно, если вы нажмёте левой кнопкой мыши на элементе списка, среда откроет в рабочей области окно редактора и покажет конкретное место употребления слова в файле.</para> + +<para +>В этой боковой панели два места особенно интересны.</para> +<itemizedlist> +<listitem> +<para +>Справа наверху вы увидите последовательности команд, которые выполнялись во время поиска. Это полезная информация для контроля результатов поиска.</para> +</listitem> + +<listitem> +<para +>Внизу находится список найденного. В нашем примере должно быть «*** 11 совпадений найдено ***».</para> +</listitem> +</itemizedlist> + +<para +>Среда помнит результаты поиска всё время своей работы. Если вы запустите новый глобальный поиск, его результаты будут показаны на новой вкладке боковой панели <guilabel +>Поиск в файлах</guilabel +>.</para> +</listitem> +</itemizedlist> +</sect3> +</sect2> + +<sect2 id="gettingstarted-edit-arrange"> +<title +>Упорядочение окон редактора</title> + +<para +>При работе с большими и сложными проектами, на панели вкладок часто скапливается множество вкладок окон редактора. Возникает необходимость их удалять, упорядочивать, группировать. Среда имеет для этого несколько функций:</para> +<simplelist> +<member +><link linkend="gettingstarted-edit-arrange-clean" +>Удаление ненужных окон.</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-tabs" +>Упорядочение вкладок окон.</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-split" +>Одновременный просмотр нескольких файлов в рабочей области.</link +></member> +<member +><link +linkend="gettingstarted-edit-arrange-sourceheader" +>Одновременное редактирование заголовочных файлов и файлов реализации C++.</link +></member> +<member +><link linkend="gettingstarted-edit-arrange-group" +>Объединение открытых окон в сеансы.</link +></member> +</simplelist> + +<sect3 id="gettingstarted-edit-arrange-clean"> +<title +>Очистка полосы вкладок</title> + +<para +>На случай, когда огромное количество вкладок окон редактора становится плохо управляемым, в среде реализованы методы группового и индивидуального закрытия окон.</para> + +<formalpara> +<title +>Одновременное закрытие нескольких окон</title> +<para +>Групповое закрытие окон существует и в других приложениях &kde;. Оно доступно через меню <guimenu +>Окно</guimenu +> или контекстное меню вкладки окна. С его помощью можно закрыть:</para> +</formalpara> +<itemizedlist> +<listitem> +<para +>текущее окно;</para> +</listitem> +<listitem> +<para +>все окна кроме текущего;</para> +</listitem> +<listitem> +<para +>все окна (только через меню <guimenu +>Окно</guimenu +>).</para> +</listitem> +</itemizedlist> + +<formalpara> +<title +>Закрытие выбранных окон</title> +<para +>Последовательное закрытие отдельных окон может оказаться неудобным, если их открыто большое количество, а оставить необходимо только несколько. Вместо этого, окна можно сначала выбрать, а затем закрыть их одним нажатием кнопки мыши.</para> +</formalpara> + +<para +>Давайте рассмотрим этот метод на простом примере. Допустим, в нашем проекте «Hello» открыто для редактирования несколько файлов: <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +>, <filename +>helloui.rc</filename +>, <filename +>hello.desktop</filename +> и <filename +>main.cpp</filename +>. Мы хотим закрыть все кроме <filename +>hello.cpp</filename +>. Самый простой способ это сделать — воспользоваться боковой панелью <guilabel +>Окна</guilabel +>. Для удобства список открытых файлов упорядочен по алфавиту. Процедура удаления занимает несколько шагов:</para> + +<procedure> +<step> +<para +>Откройте панель <guilabel +>Окна</guilabel +> и, удерживая клавишу <keycap +>Ctrl</keycap +> нажатой, выберите файлы, которые хотите закрыть.</para> +</step> +<step> +<para +>Откройте контекстное меню любого выделенного файла в списке.</para> +</step> +<step> +<para +>Выберите в нём команду <guimenuitem +>Закрыть выделенные</guimenuitem +>.</para> +</step> +</procedure> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-close-selected.png" format="PNG"/> +</imageobject> +<caption +><para +>Закрытие выделенных окон редактора одним действием.</para +></caption> +</mediaobject> +</screenshot> +<para +>Выделенные окна будут закрыты.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-tabs"> +<title +>Упорядочение вкладок окон редактора</title> + +<para +>Даже если у вас открыты только нужные окна, иногда возникает необходимость их упорядочить. Для этого имеется несколько функций:</para> + +<formalpara> +<title +>Основная настройка: размещение новых вкладок.</title> + +<para +>По умолчанию, вкладка нового окна вставляется справа от вкладки текущего. Можно сделать так, чтобы новая вкладка добавлялась с правого края панели вкладок.</para> +</formalpara> +<para +>Для этого нужно изменить параметр пользовательского интерфейса среды.</para> +<procedure> +<step> +<para +>Выберите команду меню <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>.</para> +</step> +<step> +<para +>В открывшемся диалоге выберите раздел <guilabel +>Интерфейс пользователя</guilabel +>.</para> +</step> +<step> +<para +>В её левом нижнем углу найдите группу <guilabel +>Использование вкладок</guilabel +>. Уберите флажок <guilabel +>Открывать новую вкладку после текущей</guilabel +>.</para> +</step> +<step> +<para +>Перезапустите &kdevelop;. Теперь новые вкладки окон редактора будут добавляться с правого края на панели вкладок.</para> +</step> +</procedure> + +<para +>К сожалению, этот параметр нельзя изменять во время работы. Вам придётся заранее решить, какой вариант поведения вам больше подходит.</para> + +<formalpara> +<title +>Упорядочение вкладок</title> +<para +>Так как задачи в процессе разработки меняются, возникает необходимость упорядочить окна редактора. Сделать это в &kdevelop; не сложно.</para> +</formalpara> +<para +>Нажмите средней кнопкой мыши интересующую вкладку и чуть-чуть подвиньте мышь. Указатель примет форму перекрещенных стрелок. Теперь, не отпуская кнопку, перетащите вкладку в нужное место.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-split"> +<title +>Просмотр нескольких файлов одновременно</title> + +<para +>Во время работы с проектом всегда открыто по крайней мере одно окно редактора для работы с исходным кодом. Хотя вы можете быстро переключаться между окнами, иногда нужно видеть несколько файлов одновременно. Например, для справки или для сложной правки. Для этого существует функция деления рабочей области на несколько одновременно видимых частей, каждая из которых может содержать свой набор окон.</para> + +<para +>Для выполнения деления есть две команды. Они доступны в меню <guimenu +>Окно</guimenu +> и в контекстных меню окна и его вкладки. Рассмотрим их действие на примере нашего проекта.</para> + +<para +>Допустим, есть два открытых файла исходного кода: <filename +>hello.cpp</filename +> и <filename +>hello.h</filename +>. Так как во время работы с файлом <filename +>hello.cpp</filename +> часто возникает необходимость обращаться к объявлениям в заголовочном файле <filename +>hello.h</filename +>, вы хотите видеть оба файла одновременно.</para> + +<para +>Чтобы это сделать, откройте контекстное меню вкладки <filename +>hello.h</filename +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-workspace.png" format="PNG"/> +</imageobject> +<caption +><para +>Деление рабочей области на две части.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Выберите команду <guimenuitem +>Разделить горизонтально</guimenuitem +>. Текущая рабочая область будет поделена пополам, окно <filename +>hello.h</filename +> будет помещено в нижнюю половину.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-windows.png"/> +</imageobject> +<caption +><para +>Рабочая область, разделённая по горизонтали.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Обратите внимание на пунктирную разделительную линию между окнами. С помощью неё можно менять высоту верхнего и нижнего окон.</para> + +<para +>Здесь стоит отметить несколько нюансов:</para> +<itemizedlist> +<listitem> +<para +>Части рабочей области функционируют независимо друг от друга. Это значит, что новые окна-вкладки будут открываться в той части, где находится текущее окно. Любую часть можно тоже делить на части и так далее, таким образом, количество одновременно видимых окон неограниченно.</para> +</listitem> + +<listitem> +<para +>Операция разделения перемещает текущее окно редактора в нижнюю или правую части рабочей области. Остальные окна остаются на прежних местах. Окна нельзя перемещать между частями — окно необходимо сначала закрыть в одной части, а затем открыть его в другой.</para> +</listitem> + +<listitem> +<para +>Команды закрытия частей рабочей области не предусмотрено. Они закрываются автоматически, когда в них закрывается последнее окно.</para> +</listitem> +</itemizedlist> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-sourceheader"> +<title +>Одновременное редактирование заголовочных файлов и файлов реализации C++</title> + +<para +>Существует изящное применение описанной возможности. Среда позволяет автоматически показывать <filename +>.cpp</filename +> и соответствующий <filename +>.h</filename +> файлы рядом, а также работать с обоими файлами синхронно: при выделении объявления в заголовочном файле, среда будет перемещать курсор к соответствующему определению в файле реализации и наоборот.</para> + +<para +>Данная функция по умолчанию выключена. Если вы хотите её использовать, вам нужно её включить.</para> + +<para +>Для этого выберите команду меню <menuchoice +><guibutton +>Проект</guibutton +> <guimenuitem +>Параметры проекта</guimenuitem +></menuchoice +>. Появится диалог <guilabel +>Параметры проекта</guilabel +>. Перейдите в раздел <guiicon +>Поддержка C++</guiicon +>, а затем на вкладку <guilabel +>Навигация</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-source-header.png" format="PNG"/> +</imageobject> +<caption +><para +>Включение показа заголовочного файла и файла реализации C++ рядом.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Теперь установите флажок <guilabel +>Разрешить разбиение файлов на заголовочный файл и файл реализации</guilabel +>. По умолчанию установится флажок <guilabel +>Автоматическая синхронизация</guilabel +>, а переключатель <guilabel +>Ориентация</guilabel +> перейдёт в положение <guilabel +>Вертикально</guilabel +>. Пока не меняйте эти параметры. Нажмите кнопку <guibutton +>OK</guibutton +>.</para> + +<para +>Чтобы увидеть эту функцию в действии, закройте в проекте «Hello» окна редактора для файлов <filename +>hello.cpp</filename +> и <filename +>hello.h</filename +>. Теперь снова выберите файл <filename +>hello.cpp</filename +> в подкаталоге <filename class="directory" +>src</filename +> каталога проекта. Откроется окно редактора, как обычно. Но если вы сейчас откроете файл <filename +>hello.h</filename +>, среда автоматически разделит рабочую область и откроет окно редактора для этого файла прямо под окном <filename +>hello.cpp</filename +>.</para> + +<para +>Теперь найдите в окне редактора файла <filename +>hello.cpp</filename +> следующее определение конструктора:</para> +<programlisting +>Hello::Hello() +</programlisting> +<para +>— и поместите в него курсор. Посмотрите в окно файла <filename +>hello.h</filename +> внизу. Среда покажет в нём соответствующее объявление этого конструктора.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="split-source-header-navigate.png" format="PNG"/> +</imageobject> +<caption +><para +>Автоматический переход к объявлению конструктора.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Этот механизм работает и в обратную сторону. Когда вы устанавливаете курсор на языковую конструкцию в одном окне редактора, среда перейдёт к соответствующей конструкции в другом.</para> +</sect3> + +<sect3 id="gettingstarted-edit-arrange-group"> +<title +>Объединение открытых окон в сеансы</title> + +<para +>Увеличение размера проекта и усложнение задач по его разработке приводят в необходимости частого переключения между различными наборами файлов. В этом случае целесообразно организовать работу над проектом в виде нескольких сеансов. Это осуществляется в боковой панели <guilabel +>Окна</guilabel +>.</para> + +<para +>В верхней части этой боковой панели есть панель инструментов, с помощью которой можно создавать, сохранять, выбирать и удалять сеансы. Альтернативный способ — через подменю <guimenuitem +>Сеанс</guimenuitem +> меню <guimenu +>Вид</guimenu +>.</para> + +<para +>Мы покажем эту возможность снова на примере проекта «Hello». Предположим, вы хотите всегда открывать файлы <filename +>main.cpp</filename +>, <filename +>hello.h</filename +> и <filename +>main.cpp</filename +> одним действием не зависимо от того, что делали до этого. Для этого нужно сначала создать новый сеанс, который называется, скажем, «sources».</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-session-create.png" format="PNG"/> +</imageobject> +<caption +><para +>Использование сеансов для запоминания групп файлов.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Объединение файлов в сеанс занимает несколько шагов.</para> +<procedure> +<step> +<para +>Создание нового сеанса.</para> +<substeps> +<step> +<para +>Нажмите кнопку <guiicon +>Новый сеанс</guiicon +> в верхней левой части боковой панели <guilabel +>Окна</guilabel +>.</para> +</step> +<step> +<para +>Откроется диалог. Введите название сеанса в поле <guilabel +>Введите название сеанса</guilabel +> (например, «sources»).</para> +</step> +<step> +<para +>Закройте диалог кнопкой <guibutton +>OK</guibutton +>. Созданный сеанс появится в выпадающем меню панели инструментов.</para> +</step> +</substeps> +</step> +<step> +<para +>Новый сеанс изначально пуст. В него нужно добавить файлы.</para> +<substeps> +<step> +<para +>Откройте все файлы, которые хотите добавить в сеанс. В нашем примере это будут <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +> и <filename +>main.cpp</filename +>.</para> +</step> +<step> +<para +>Нажмите кнопку <guiicon +>Сохранить сеанс</guiicon +> на панели инструментов. Не забудьте это сделать, иначе список файлов не будет запомнен.</para> +</step> +</substeps> +</step> +</procedure> + +<para +>Всё. Когда вы выберите сеанс <guilabel +>sources</guilabel +> в выпадающем меню <guilabel +>Открыть сеанс</guilabel +>, среда закроет все открытые в данный момент окна редактора и откроет запомненные в сеансе файлы (в нашем примере это <filename +>hello.cpp</filename +>, <filename +>hello.h</filename +> и <filename +>main.cpp</filename +>).</para> + +<para +>Количество сеансов в проекте неограниченно. Если хотите изменить содержание сеанса, просто обновите список файлов и нажмите <guiicon +>Сохранить сеанс</guiicon +>. Удаляется сеанс нажатием кнопки <guiicon +>Удалить сеанс</guiicon +> справа на панели инструментов.</para> + +<para +>Более того, вы можете заставить среду открывать данный сеанс по умолчанию при загрузке проекта. Просто выберите сеанс в выпадающем списке в разделе <guimenuitem +>Окна</guimenuitem +> в диалоговом окне, открываемом командой меню <menuchoice +><guimenu +>Проекты</guimenu +> <guimenuitem +>Параметры проекта</guimenuitem +></menuchoice +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="file-list-session-default.png" format="PNG"/> +</imageobject> +<caption +><para +>Настройка среды на открытие определённого сеанса при загрузке проекта.</para +></caption> +</mediaobject> +</screenshot> +</sect3> +</sect2> + +<sect2 id="gettingstarted-edit-problems"> +<title +>Отслеживание типичных проблем</title> + +<para +>Когда вы открываете файл с исходным кодом, среда делает анализ его содержимого. Это позволяет встроенному <emphasis +>инспектору проблем</emphasis +> проверить исходный текст на наличие типичных ошибок и предупредить пользователя о подозрительных местах.</para> + +<para +>Давайте посмотрим, как это работает, на примере нашего проекта.</para> + +<itemizedlist> +<listitem> +<para +>Откройте файл <filename +>main.cpp</filename +>.</para> +</listitem> + +<listitem> +<para +>Убедитесь, что он ещё содержит где-то в конце следующую строку:</para> +<programlisting +>/// @todo do something with the command line args +</programlisting> +<para +>Она была вставлена Мастером проектов при создании проекта (см. главу <link linkend="gettingstarted-new" +>Создание нового проекта</link +>).</para> +</listitem> + +<listitem> +<para +>Теперь откройте боковую панель <guilabel +>Проблемы</guilabel +> в нижнем ряду вкладок. Если всё сделано правильно, появится сообщение об этой заметке «todo»:</para> +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-todo.png"/> +</imageobject> +<caption +><para +>Среда предупреждает о строках в исходном коде, которые содержат маркер «todo».</para +></caption> +</mediaobject> +</screenshot> +</listitem> +</itemizedlist> + +<para +>Формат команды <computeroutput +>/// @todo</computeroutput +> предназначен для специальной обработки программой <application +>Doxygen</application +>, которую мы рассмотрим в главе «<link linkend="gettingstarted-doc" +>Документация</link +>». Не обязательно использовать именно этот формат, более распространённые маркеры <computeroutput +>TODO</computeroutput +> и <computeroutput +>FIXME</computeroutput +> тоже распознаются.</para> + +<para +>Например, если вы вставите комментарии, содержащие <computeroutput +>TODO</computeroutput +> и <computeroutput +>FIXME</computeroutput +>, в файл <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 +>то увидите их на боковой панели <guilabel +>Проблемы</guilabel +>:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-marks.png" format="PNG"/> +</imageobject> +<caption +><para +>Отчёт о строках текущего файла, требующих внимания.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Обратите внимание на другие вкладки боковой панели <guilabel +>Проблемы</guilabel +>, особенно на <guilabel +>Fixme</guilabel +> и <guilabel +>Todo</guilabel +>. Если вы их откроете, то найдёте в них все строки помеченные маркерами <computeroutput +>FIXME</computeroutput +> и <computeroutput +>TODO</computeroutput +>, которые были обнаружены в текущем сеансе. Например, заметки <computeroutput +>TODO</computeroutput +> будут выглядеть следующим образом:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="problem-report-all-todos.png" format="PNG"/> +</imageobject> +<caption +><para +>Перечисление <computeroutput +>TODO</computeroutput +>.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Однако, вкладка <guilabel +>Ошибки</guilabel +> содержит не все ошибки, допущенные вами в коде. Это работа для других инструментов, например, инструментов сборки. Но вы можете найти здесь предупреждения о некоторых типичных ошибках программирования, которые могли бы остаться незамеченными и, возможно, трудноуловимыми во время отладки.</para> + +<para +>Вы оце́ните генератор отчётов о проблемах по достоинству. Регулярно поглядывайте на боковую панель <guilabel +>Проблемы</guilabel +> во время разработки.</para> +</sect2> +</sect1> + +<sect1 id="gettingstarted-compile"> +<title +>Компиляция проекта</title> + +<para +>Компиляция в &kdevelop; требует выполнения нескольких подготовительных действий, за которыми следует непосредственно сборка приложения. Все они доступны через меню <guimenu +>Сборка</guimenu +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-menu.png" format="PNG"/> +</imageobject> +<caption +><para +>Сборка проекта занимает несколько шагов.</para +></caption> +</mediaobject> +</screenshot> + +<para +>На данный момент нам интересна верхняя секция этого меню. Его пункты упорядочены по важности. Наиболее часто используемая команда <guimenuitem +>Собрать проект</guimenuitem +> находится в самом верху. Она вызывает инициализацию всего проекта, его компиляцию и, при необходимости, компоновку. Другие пункты компилируют выбранные части проекта или отдельный файл, выполняют несколько последовательностей инициализации или устанавливают собранные двоичные файлы приложения.</para> + +<para +>Сейчас мы сконцентрируемся на нескольких возможностях, предоставленных средой для установки, инициализации, сборки и запуска приложения.</para> + +<simplelist> +<member +><link linkend="gettingstarted-compile-basic" +>Основной цикл сборки (кратко).</link +></member> +<member +><link linkend="gettingstarted-compile-setup" +>Основные средства конфигурации проекта.</link +></member> +</simplelist> + +<sect2 id="gettingstarted-compile-basic"> +<title +>Основной цикл сборки</title> + +<para +>После создания нового проекта обычно хочется проверить, всё ли сделано правильно. Для этого нужно собрать и запустить приложение. Самая первая компиляция проекта требует выполнения несколько подготовительных действий. Рассмотрим их.</para> +<simplelist> +<member +><link linkend="gettingstarted-compile-basic-init" +>Инициализация проекта для первой сборки.</link +></member> +<member +><link linkend="gettingstarted-compile-basic-config" +>Выполнение начальной конфигурации.</link +></member> +<member +><link linkend="gettingstarted-compile-basic-build" +>Сборка проекта.</link +></member> +<member +><link linkend="gettingstarted-compile-basic-run" +>Запуск приложения.</link +></member> +</simplelist> + +<note> +<para +>Описание предполагает, что ваш проект основан на &GNU; autotools, которые используются при выборе соответствующего шаблона при создании проекта. Если вы выбрали другой шаблон проекта, например, основанный на сборке диспетчером проектов &Qt; <application +>QMake</application +>, будут доступны другие возможности или недоступно никаких. Обратитесь к документации соответствующего инструмента сборки, чтобы узнать, как управлять проектом и собирать его.</para> +</note> + +<sect3 id="gettingstarted-compile-basic-init"> +<title +>Инициализация проекта для сборки</title> + +<para +>Когда &appwizard; создавал проект «Hello», он оставил его в «сыром» состоянии. Инструменты &GNU; autotools требуют выполнения нескольких действий по инициализации перед компиляцией и компоновкой приложения. Если вы попытаетесь собрать проект в таком «сыром» состоянии, например, выбрав команду меню <menuchoice +><guimenu +>Собрать</guimenu +> <guimenuitem +>Собрать проект</guimenuitem +></menuchoice +> или нажав клавишу <keycap +>F8</keycap +>, то получите следующее предупреждение:</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="raw-project-warning.png" format="PNG"/> +</imageobject> +<caption +><para +>Попытка сборки «сырого» проекта на базе automake.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Можете нажать кнопку <guibutton +>Запустить</guibutton +> и среда попытается автоматически выполнить все требуемые подготовительные действия перед компиляцией и компоновкой приложения. Но мы рассмотрим эти действия последовательно, поэтому нажмите кнопку <guibutton +>Не запускать</guibutton +>, чтобы отменить этот диалог. </para> + +<para +>Как уже было сказано, компиляция и компоновка приложения выполняется через меню <guimenu +>Сборка</guimenu +>. Откройте его и выберите команду <guimenuitem +>Запустить automake и родственные программы</guimenuitem +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-menu-automake.png" format="PNG"/> +</imageobject> +<caption +><para +>Запуск основной инициализации.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Среда откроет боковую панель <guilabel +>Сообщения</guilabel +> внизу, в которой будет показывать сообщения инструментов сборки. В случае отсутствия ошибок, последняя строка будет содержать сообщение «<computeroutput +>*** Успешное завершение ***</computeroutput +>».</para> + +<para +>Если вы прокрутите список сообщений вверх, то найдёте командную строку, которой среда вызывала инструменты сборки. Пример командной строки:</para> + +<programlisting +>cd '/home/devel/projects/hello' && \ +WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -f Makefile.cvs +</programlisting> + +<para +>Она говорит о том, что сначала среда перешла в корневой каталог нашего проекта. Затем установила определённые переменные окружения, сообщая системе сборки версии утилит <application +>autoconf</application +> и <application +>automake</application +>, используемых для данной инициализации. И наконец передала программе сборки (в нашем случае это &GNU; <application +>gmake</application +>) файл с правилами сборки.</para> + +<para +>Файл с правилами сборки был автоматически создан и настроен при создании проекта. Он содержит команды необходимые для правильной инициализации проекта, чтобы приложение могло работать в &kde;. Эти команды создадут скрипт <filename +>configure</filename +>, необходимый для выполнения следующего шага.</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-config"> +<title +>Начальная настройка проекта «Hello»</title> + +<para +>Конфигурация означает подгонку процесса сборки под аппаратные и программные особенности вашей системы. Это основное требование в процессе сборки на основе &GNU; autotools.</para> + +<para +>Когда основная инициализация automake успешно завершится, можно запускать скрипт configure, так как только после этой инициализации необходимые для его работы файлы станут доступны. Чтобы запустить его выберите команду меню <menuchoice +><guimenu +>Сборка</guimenu +><guimenuitem +>Запустить configure</guimenuitem +></menuchoice +>.</para> + +<para +>Среда при необходимости опять откроет боковую панель <guilabel +>Сообщения</guilabel +> для показа сообщений скрипта configure. Если не возникнет никаких ошибок, последними сообщениями будут «<computeroutput +>Good - your configure finished. Start make now</computeroutput +>» и «<computeroutput +>*** Успешное завершение ***</computeroutput +>», добавленное средой.</para> + +<para id="gettingstarted-compile-basic-config-cmd" +>В верхней части панели <guilabel +>Сообщения</guilabel +> вы снова увидите командную строку, которую среда использовала для запуска скрипта. Она содержит следующее:</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 +>Здесь есть несколько интересных деталей.</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 +>Во-первых, для сборки среда использует специальный подкаталог в дереве каталога проекта. Каталог сборки <filename class="directory" +>debug</filename +> (показанный слева) содержит основную структуру проекта и набор файлов, связанных со сборкой: несколько файлов, созданных <filename +>configure</filename +>, и дополнительно по одному файлу <filename +>Makefile</filename +> на каждый подкаталог.</para> +</listitem> +<listitem> +<para +>Ниже, в разделе «<link linkend="gettingstarted-compile-setup" +>Настройка проекта</link +>» мы рассмотрим причины, по которым используются отдельные подкаталоги для сборки. Сейчас достаточно знать, что среда создала каталог <filename class="directory" +>debug</filename +> перед вызовом configure, и что этот скрипт создал его подкаталоги и все <filename +>Makefiles</filename +> в них.</para> +</listitem> +<listitem> +<para +>Затем, из каталога сборки <filename class="directory" +>debug</filename +> среда вызывает скрипт <filename +>configure</filename +>, расположенный в корневом каталоге проекта, настроив переменные окружения, среди которых флаги <computeroutput +>CXXFLAGS="-O0 -g3"</computeroutput +> для компилятора &gcc; (-O0 — выключение оптимизации, -g3 — генерация полной отладочной информации).</para> +</listitem> +<listitem> +<para +>В последнюю очередь запускается скрипт <filename +>configure</filename +> с параметром <computeroutput +>--enable-debug=full</computeroutput +>, который означает, что каждый <filename +>Makefile</filename +> будет создаваться с правилом для компиляции и компоновки с отладочной информацией.</para> +</listitem> +</itemizedlist> +</entry> +</row +></tbody +></tgroup> +</informaltable> + +<para +>Эти параметры настраиваются для каждого проекта индивидуально. Более подробно это описано в главе «<link linkend="project-management" +>Управление проектом</link +>».</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-build"> +<title +>Сборка проекта</title> + +<para +>Теперь можно собирать (компилировать и компоновать) приложение. В меню <guimenu +>Сборка</guimenu +> есть три команды компиляции.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-commands.png" format="PNG"/> +</imageobject> +<caption +><para +>Команды для сборки двоичных файлов.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Пункты снизу вверх:</para> +<itemizedlist> +<listitem> +<para +><guimenuitem +>Скомпилировать файл</guimenuitem +>. Компилирует текущий открытый файл исходного кода. В основном используется для быстрой проверки исходного кода на ошибки.</para> +</listitem> +<listitem> +<para +><guimenuitem +>Собрать активную цель</guimenuitem +>. Эта команда обычно используется вместе с <link linkend="gettingstarted-extend-automake" +>диспетчером Automake</link +>, который мы рассмотрим ниже.</para> +</listitem> +<listitem> +<para +><guimenuitem +>Собрать проект</guimenuitem +>. Эта команда то, что нам сейчас нужно. Она будет обрабатывать проект целиком, компилируя и компонуя все необходимые файлы.</para> +</listitem> +</itemizedlist> + +<para +>Происходящее в каталоге <filename class="directory" +>debug</filename +>, созданном во время предыдущего запуска <filename +>configure</filename +>, может быть интересным. Поэтому держите все его подкаталоги в развёрнутом состоянии, как показано выше. Выберите команду <menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Собрать проект</guimenuitem +></menuchoice +> (или нажмите клавишу <keycap +>F8</keycap +>), чтобы начать сборку. Снова внизу откроется боковая панель <guilabel +>Сообщения</guilabel +>, показывающая вывод инструментов сборки. Вместе с этим в подкаталоге <filename class="directory" +>debug</filename +> появятся некоторые файлы.</para> + +<para id="gettingstarted-compile-basic-build-cmd" +>В нашем проекте немного файлов, поэтому окно <guilabel +>Сообщения</guilabel +> будет содержать незначительное количество строк. Вверху вы опять найдёте командную строку, которую использовала среда.</para> + +<programlisting +>cd '/home/devel/projects/hello/debug' && \ +WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k +</programlisting> + +<para +>Среда переключилась на подкаталог <filename class="directory" +>debug</filename +>, чтобы запустить находящийся там файл <filename +>Makefile</filename +>. Как и на <link linkend="gettingstarted-compile-basic-init" +>этапе инициализации</link +>, она установила специальные переменные окружения перед вызовом <application +>gmake</application +>.</para> + +<para +>Обратите внимание на параметр <computeroutput +>-k</computeroutput +> в командной строке <application +>gmake</application +>. Он запрещает прерывание процесса сборки при возникновении ошибок. Это значит, что среда будет выводить все сообщения об ошибках в окно <guilabel +>Сообщения</guilabel +>. Если в этом окне присутствуют ошибки, используйте средства среды: нажмите на сообщение об ошибке в окне <guilabel +>Сообщения</guilabel +> и среда покажет ошибочное место в исходном файле.</para> + +<para +>Что же произошло внутри каталога <filename class="directory" +>debug</filename +>? Ничего особенного. Появилось несколько файлов в ветвях <filename class="directory" +>doc/en</filename +> и <filename class="directory" +>src</filename +>. Наиболее интересный среди них файл <filename +>hello</filename +> в каталоге <filename class="directory" +>/home/devel/projects/hello/debug/src/</filename +>. Это двоичный файл приложения. Всё, что осталось сделать, это запустить его.</para> +</sect3> + +<sect3 id="gettingstarted-compile-basic-run"> +<title +>Запуск приложения</title> + +<para +>Чтобы запустить приложение, либо выберите команду меню <menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Выполнить программу</guimenuitem +></menuchoice +>, либо нажмите комбинацию клавиш <keycombo +><keycap +>Shift</keycap +> <keycap +>F9</keycap +></keycombo +>, либо нажмите кнопку <guibutton +>Выполнить программу</guibutton +> на панели <guilabel +>Панель инструментов «Сборка»</guilabel +>, показанной внизу.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="run-button.png"/> +</imageobject> +<caption +><para +>Запуск приложения с помощью панели <guilabel +>Панель инструментов «Сборка»</guilabel +>.</para> +</caption> +</mediaobject> +</screenshot> + +<para +>Всё. Теперь среда запустит новое приложение в окне консоли, которое открывается как боковая панель <guilabel +>Приложение</guilabel +> внизу. В верхней строке будет вызванная средой команда, наподобие следующей:</para> + +<programlisting +>./hello +</programlisting> + +<para +>Эта строка показывает, что среда знает, где находится исполняемый файл приложения. Место поиска исполняемого файла — настраиваемый параметр (см. главу "<link linkend="project-management" +>Управление проектом</link +>").</para> + +<para +>За строкой <computeroutput +>./hello</computeroutput +>, скорее всего, будет следовать предупреждающее сообщение. Не обращайте в данный момент на него внимания. Оно не помешает запустить наше приложение.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="hello-world-app.png" format="PNG"/> +</imageobject> +<caption> +<para +>Наше первое приложение <application +>Hello</application +>.</para> +</caption> +</mediaobject> +</screenshot> + +<para +>Закройте приложение. Если не возникнет никаких ошибок, среда выведет в окно боковой панели <guilabel +>Приложение</guilabel +> сообщение «<computeroutput +>*** Нормальное завершение ***</computeroutput +>».</para> +</sect3> +</sect2> + +<sect2 id="gettingstarted-compile-setup"> +<title +>Настройка проекта</title> + +<para +>Существуют различные способы управления проектом. Каждый проект настраивается индивидуально. И хотя эта возможность представляет интерес в основном для опытных разработчиков, несколько параметров следует знать с самого начала. </para> + +<simplelist> +<member +><link linkend="gettingstarted-compile-setup-build" +>Конфигурации сборки</link +></member> + +<member +><link linkend="gettingstarted-compile-setup-config" +>Настройка поведения скрипта <filename +>configure</filename +>.</link +></member> + +<member +><link linkend="gettingstarted-compile-setup-make" +>Рекомендации по запуску утилиты <application +>make</application +>.</link +></member> + +<member +><link linkend="gettingstarted-compile-setup-run" +>Местонахождение исполняемого файла и параметры его запуска</link +></member> +</simplelist> + +<sect3 id="gettingstarted-compile-setup-build"> +<title +>Параметры сборки</title> + +<para +>Когда мы первый раз запускали скрипт <filename +>configure</filename +> в разделе «<link linkend="gettingstarted-compile-basic-config" +>Начальная настройка проекта «Hello»</link +>», мы обратили внимание на то, что среда создала специальный подкаталог <filename class="directory" +>debug</filename +>. В данном разделе мы обсудим некоторые следствия этого.</para> + +<para +>Во-первых, среда не всегда использует специальные каталоги для сборки, отдельные от каталогов с исходным кодом. Подготовка автоматического использования определённой конфигурации сборки осуществляется с помощью шаблонов при создании проекта.</para> + +<para +>Чтобы выяснить текущую конфигурацию сборки, обратитесь к меню <menuchoice +><guimenu +>Проект</guimenu +> <guisubmenu +>Конфигурация сборки</guisubmenu +></menuchoice +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="build-configurations.png" format="PNG"/> +</imageobject> +<caption +><para +>Различные конфигурации сборки проекта.</para +></caption> +</mediaobject> +</screenshot> + +<para +>В случае нашего проекта есть три конфигурации. В других случаях может быть изначально только одна — <guimenuitem +>default</guimenuitem +>.</para> + +<para +>Текущая конфигурация слева имеет флажок. Переключение между конфигурациями осуществляется выбором соответствующего пункта меню.</para> + +<para +>Теперь давайте рассмотрим, что эти конфигурации сборки из себя представляют.</para> + +<variablelist id="gettingstarted-compile-setup-build-configs"> +<varlistentry> +<term +><guimenuitem +>debug</guimenuitem +></term> +<listitem> +<para +>Используйте эту конфигурацию во время разработки проекта. Сборка осуществляется отдельно от каталогов исходного текста в специальном подкаталоге <filename class="directory" +>debug</filename +>, то есть все объектные, вспомогательные и исполняемые файлы будут помещаться в этот подкаталог, а не в каталоги проекта с исходным кодом. Сценарий <filename +>configure</filename +> получит параметр <computeroutput +>--enable-debug=full</computeroutput +>, будет установлена переменная окружения <computeroutput +>CXXFLAGS="-O0 -g3"</computeroutput +>, указывающая компилятору &gcc; не оптимизировать код и добавить полную отладочную информацию в выходные двоичные файлы.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>optimized</guimenuitem +></term> +<listitem> +<para +>Эта конфигурация используется для сборки окончательного приложения C++. Сборка происходит отдельно от каталогов исходного кода в специальном подкаталоге <filename class="directory" +>optimized</filename +>. Никаких специальных аргументов в <filename +>configure</filename +> не передаётся, устанавливается переменная окружения <computeroutput +>CXXFLAGS="-O2 -g0"</computeroutput +>, указывающая компилятору &gcc; оптимизировать код и не добавлять отладочную информацию в генерируемые двоичные файлы.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>default</guimenuitem +></term> +<listitem> +<para +>Термин «default» обозначает стандартные параметры, используемые во время сборки приложения из консоли утилитами командной строки: &GNU; <application +>configure</application +> и <application +>make</application +> или <application +>gmake</application +>. В отличие от конфигураций <guimenuitem +>debug</guimenuitem +> или <guimenuitem +>optimized</guimenuitem +> специальный каталог для сборки не используется. Приложение будет собираться в каталогах с исходным кодом. Для инструментов сборки (например, &gcc;) будут использоваться параметры по умолчанию.</para> + +<warning> +<para +>Подумайте дважды прежде, чем выбирать конфигурацию <guimenuitem +>default</guimenuitem +>!</para> + +<para +>Она не может использоваться параллельно с конфигурацией <guimenuitem +>debug</guimenuitem +> или <guimenuitem +>optimized</guimenuitem +>. <emphasis +>Выполнение любой сборочной операции, использующей конфигурацию <guimenuitem +>default</guimenuitem +>, приведёт к невозможности использовать другие конфигурации.</emphasis +> Это вызвано определёнными особенностями процесса создания файлов <filename +>Makefile</filename +> посредством <application +>automake</application +> и <application +>autoconf</application +>.</para> +</warning> +</listitem> +</varlistentry> +</variablelist> + +<para +>Возникает вопрос: «А зачем вообще использовать разные конфигурации сборки, когда они даже выглядят несовместимыми друг с другом?» Ответ: они упрощают цикл «редактирование-компиляция-отладка». Дополнительные отладочные инструкции, добавляемые в двоичные файлы, а также хитроумные изменения в структуре программного кода при его оптимизации влияют на поведение программы во время выполнения. Поэтому во многих случаях, когда логическая структура некоторой подпрограммы кажется правильной, вы можете проверить, корректно ли её поведение в более реальных условиях.</para> + +<para +>Здесь как раз и могут пригодиться конфигурации сборки. Поскольку создаваемые объектные и исполняемые файлы, а также команды сборки, хранятся отдельно друг от друга, нужно обрабатывать только изменения исходного кода при переключении между конфигурациями.</para> + +<para +>Таким образом, вместо очистки и перекомпиляции заново с другими параметрами, вам нужно лишь переключиться с конфигурации <guimenuitem +>debug</guimenuitem +> на <guimenuitem +>optimize</guimenuitem +>, скомпилировать изменения исходного кода и протестировать приложение в других условиях, а в случае проблем просто переключиться обратно на <guimenuitem +>debug</guimenuitem +> и продолжить работу.</para> + +<para +>Последнее замечание: многие параметры конфигурации сборки можно настраивать. Также можно определить свои конфигурации, если это требуется вашему процессу разработки. Мы рассмотрим эти возможности в следующем разделе.</para> +</sect3> + +<sect3 id="gettingstarted-compile-setup-config"> +<title +>Параметры конфигурации проекта</title> + +<para +>Конфигурация приложения особенно важна при сборке с помощью &GNU; autotools. Она обычно осуществляется запуском <filename +>configure</filename +> с определёнными параметрами и/или специальными флагами в переменных окружения перед запуском <filename +>configure</filename +> (например, переменная <computeroutput +>CXXFLAGS</computeroutput +>, упоминавшаяся выше).</para> + +<para +>Вы можете устанавливать бо́льшую часть параметров конфигурации проекта с помощью графического интерфейса, предлагаемого средой. Выберите команду меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта</guimenuitem +></menuchoice +> и в открывшемся диалоге перейдите в раздел <guiicon +>Параметры configure</guiicon +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-configure.png" format="PNG"/> +</imageobject> +<caption +><para +>Здесь могут быть определены почти все параметры configure.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Как видите, в этом разделе можно устанавливать довольно много параметров. Сейчас мы рассмотрим лишь малую их часть, касающуюся нашего проекта. Подробности читайте в главе «<link linkend="projects-configure" +>Настройка проектов</link +>». Если хотите узнать смысл различных устанавливаемых флагов, введите в консоли команду <command +>info make</command +> (или <command +>info:make</command +> в &konqueror;) и перейдите в раздел <menuchoice +><guimenu +>Implicit Rules</guimenu +> <guimenuitem +>Implicit Variables</guimenuitem +></menuchoice +>.</para> + +<para +>Диалог имеет несколько вкладок. Вкладка <guilabel +>Главное</guilabel +> содержит часто используемые параметры, остальные вкладки — специфичные параметры компилятора. В любом случае, фактическое содержимое диалога определяется текущей конфигурацией сборки.</para> + +<para +>Конфигурация сборки, чьи параметры должны быть определены, выбирается в выпадающем списке <guilabel +>Конфигурация</guilabel +> в верхней части диалога <guilabel +>Параметры configure</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-buildconfig.png" format="PNG"/> +</imageobject> +<caption +><para +>Выбор конфигурации сборки.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Теперь выберите другую конфигурацию из выпадающего списка и обратите внимание, как меняется содержание, например, текстовых полей <guilabel +>Параметры командной строки</guilabel +> и <guilabel +>Каталог сборки</guilabel +> в соответствии с параметрами, о которых мы упоминали в <link linkend="gettingstarted-compile-setup-build-configs" +>списке конфигураций сборки</link +> выше.</para> + +<sect4 id="gettingstarted-compile-setup-config-general"> +<title +>Главное</title> + +<para +>На вкладке <guilabel +>Главное</guilabel +> находятся следующие параметры:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Параметры командной строки</title> +<para +>Это параметры, которые передаются в скрипт <filename +>configure</filename +> во время сборки. См. <link linkend="gettingstarted-compile-basic-config-cmd" +>пример</link +> в разделе «Начальная настройка проекта «Hello».</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Каталог сборки</title> +<para +>Подкаталог в корне текущего проекта, куда среда будет помещать все создаваемые во время сборки файлы. В идеале он должен соответствовать названию используемой конфигурации сборки, но это необязательно. Главное, чтобы названия каталогов сборки разных конфигураций отличались друг от друга.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Основной каталог с исходным кодом</title> +<para +>Этот параметр используется нечасто. Он содержит название корневого каталога проекта и нуждается в переопределении только в том случае, если исходный код проекта находится в другом месте.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Параметры препроцессора C/C++ (CPPFLAGS)</title> +<para +>Это параметры препроцессора. Среда будет их использовать при установке значений временных переменных окружения перед вызовом инструментов сборки. См. <link linkend="gettingstarted-compile-basic-config-cmd" +>пример</link +> в разделе «Начальная конфигурация проекта «Hello»».</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Параметры компоновщика (LDFLAGS)</title> +<para +>Это дополнительная информация для инструмента компоновки <application +>ld</application +> о том, где искать дополнительные библиотеки. Тоже входит в состав набора временных переменных окружения.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Переменные окружения</title> +<para +>Здесь вы можете определить дополнительные переменные, которые среда добавит в набор временных переменных окружения перед вызовом соответствующих инструментов сборки. Эти переменные определяются для каждой конфигурации индивидуально.</para> +</formalpara> +</listitem> +</itemizedlist> +</sect4> + +<sect4 id="gettingstarted-compile-setup-config-spec"> +<title +>Специфичные параметры компилятора</title> + +<para +>Остальные вкладки диалога <guilabel +>Параметры configure</guilabel +> содержат параметры для компилятора. Они однотипно структурированы, поэтому достаточно рассмотреть вкладку <guilabel +>C++</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-cpp.png" format="PNG"/> +</imageobject> +<caption +><para +>Выбор компилятора и его переменных окружения.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Здесь можно устанавливать следующие параметры:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Компилятор C++</title> +<para +>Компилятор, который среда должна использовать. Список содержит только те компиляторы, которые известны среде.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Команда компилятора (CXX)</title> +<para +>Этот параметр предназначен для опытных пользователей. Он нужен только, если используется нестандартный компилятор C++, и содержит команду его вызова.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Параметры компилятора (CXXFLAGS)</title> +<para +>Здесь можно определить любые дополнительные параметры, которые среда передаст (через <filename +>Makefile</filename +>) компилятору. Некоторые значения параметров будут предустановлены в соответствии с выбранной в выпадающем списке <guilabel +>Конфигурация</guilabel +> конфигурацией сборки.</para> +</formalpara> + +<para +>Обратите внимание, многие общие параметры компилятора можно выбирать из диалога, открываемого нажатием кнопки <guibutton +>...</guibutton +> справа от текстового поля.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-cppoptions.png" format="PNG"/> +</imageobject> +<caption +><para +>Диалог для определения поведения компилятора &GNU; C++.</para +></caption> +</mediaobject> +</screenshot> + +<para +>На рисунке мы намеренно выделили вкладку <guilabel +>Оптимизация</guilabel +>. Обратите внимание, параметр <guilabel +>Нет оптимизации</guilabel +> был предустановлен (соответствуя параметру <computeroutput +>-O0</computeroutput +> в конфигурации сборки <computeroutput +>debug</computeroutput +>).</para> + +<para +>К сожалению, на данный момент вы не можете выбирать все параметры из данного диалога. Например, параметр <computeroutput +>-g3</computeroutput +>, используемый в конфигурации сборки <computeroutput +>debug</computeroutput +>, потребовалось бы изменять вручную, если бы это понадобилось.</para> +</listitem> +</itemizedlist> +</sect4> +</sect3> + +<sect3 id="gettingstarted-compile-setup-make"> +<title +>Правила сборки проекта программой make</title> + +<para +>Вы можете также настроить вызов программы <application +>make</application +> из среды во время сборки проекта. Выберите команду меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта</guimenuitem +></menuchoice +> и в открывшемся диалоге выберите раздел <guiicon +>Параметры make</guiicon +>. Справа откроется диалог <guilabel +>Параметры make</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-make.png" format="PNG"/> +</imageobject> +<caption +><para +>Определите, как среда должна вызывать программу <application +>make</application +>.</para +></caption> +</mediaobject> +</screenshot> + +<para +>На данный момент здесь особо нечего изменять. Единственный параметр, представляющий интерес в большинстве случаев — флажок <guilabel +>Прервать после первой ошибки</guilabel +>. В большинстве проектов он выключен. Это соответствует параметру <computeroutput +>-k</computeroutput +> программы <application +>gmake</application +>, который мы встречали во время <link linkend="gettingstarted-compile-basic-build-cmd" +>начальной сборки</link +> нашего проекта.</para> + +<para +>Это имеет смысл в среде такой, как &kdevelop;, которая будет протоколировать любые сообщения об ошибках во время сборки. После завершения процесса сборки, вы можете легко перемещаться между сообщениями с помощью боковой панели <guilabel +>Сообщения</guilabel +>. Используйте для этого команды меню <menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Следующая ошибка</guimenuitem +></menuchoice +> и <menuchoice +><guimenu +>Вид</guimenu +> <guimenuitem +>Предыдущая ошибка</guimenuitem +></menuchoice +> или соответственно клавишу <keycap +>F4</keycap +> и комбинацию клавиш <keycombo +><keycap +>Shift</keycap +> <keycap +>F4</keycap +></keycombo +>. Среда будет автоматически активировать окно редактора файла исходного кода и устанавливать курсор на строку с ошибкой.</para> + +<para +>С другой стороны, если вы хотите, чтобы сборка останавливалась при первой же ошибке, установите параметр <guilabel +>Прервать после первой ошибки</guilabel +> в этом диалоге. Тогда среда будет вызывать <application +>gmake</application +> без параметра <computeroutput +>-k</computeroutput +>.</para> +</sect3> + +<sect3 id="gettingstarted-compile-setup-run"> +<title +>Запуск исполняемого файла</title> + +<para +>Когда сборка завершена, вы можете легко запускать приложение прямо из среды. Используйте для этого команду меню <menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Выполнить программу</guimenuitem +></menuchoice +>, комбинацию клавиш <keycombo +><keycap +>Shift</keycap +> <keycap +>F9</keycap +></keycombo +> или кнопку <guibutton +>Выполнить программу</guibutton +> на панели <guilabel +>Панель инструментов «Сборка»</guilabel +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="run-button.png" format="PNG"/> +</imageobject> +<caption +><para +>Нажмите кнопку <guibutton +>Выполнить программу</guibutton +> на панели инструментов.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Но где же находится запускаемый исполняемый файл? Как заставить среду добавить параметры при его вызове? Или как запустить приложение в терминале само по себе, чтобы проверить её интерактивное поведение в консоли?</para> + +<para +>Всё это определяется параметрами проекта. Выберите команду меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта</guimenuitem +></menuchoice +>, а затем перейдите в раздел <guiicon +>Параметры запуска</guiicon +>.</para> + +<screenshot> +<mediaobject> +<imageobject> +<imagedata fileref="configure-project-run.png" format="PNG"/> +</imageobject> +<caption +><para +>Параметры местонахождения и запуска исполняемого файла программы.</para +></caption> +</mediaobject> +</screenshot> + +<para +>В данном диалоге много параметров. Они собраны в четыре группы:</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Главная программа</title> +<para +>Этот параметр определяет, где среда будет искать исполняемый файл программы для запуска. Возможны три варианта.</para> +</formalpara> + +<para +>Обратите внимание, что здесь определены только корневые каталоги. Среда обычно ищет исполняемый файл в одном из подкаталогов, указанных в следующей группе параметров.</para> + +<itemizedlist> +<listitem> +<para +>Запуск из каталога, в котором исполняемый файл был создан в последний раз. Это значение по умолчанию. Оставьте его пока без изменений.</para> +</listitem> + +<listitem> +<para +>Запуск из каталога сборки в соответствии с текущей <link linkend="gettingstarted-compile-setup-build" +>конфигурацией сборки</link +>. Название этого каталога было установлено на вкладке <link linkend="gettingstarted-compile-setup-config-general" +>Главное</link +>.</para> + +<para +>Это корневой каталог, где среда будет искать исполняемый файл. Он меняется автоматически, в зависимости от выбора в меню <menuchoice +><guimenu +>Проект</guimenu +> <guisubmenu +>Конфигурации сборки</guisubmenu +></menuchoice +>.</para> + +<para +>Вместо того, чтобы запускать самую свежую сборку исполняемого файла в соответствии с параметром выше, это позволяет переключаться между запускаемыми программами, просто выбирая другую конфигурацию сборки в меню <guimenu +>Проект</guimenu +>.</para> +</listitem> + +<listitem> +<para +>Запуск исполняемого файла из указанного каталога. Снова, это только корневой каталог, в котором будет производиться поиск исполняемого файла.</para> + +<para +>Используйте этот вариант, если, например, хотите запускать уже установленную программу вместо её версии из каталогов проекта.</para> +</listitem> +</itemizedlist> +</listitem> + +<listitem> +<formalpara> +<title +>Исполняемый файл</title> +<para +>Этот параметр сообщает среде положение (относительно корневого каталога, определённого группой параметров, описанной выше) и название программы, которую нужно запускать. Дополнительно, вы можете определить аргументы, которые среда будет передавать программе при запуске.</para> +</formalpara> + +<note> +<para +>Если текстовое поле <guilabel +>Исполняемый файл</guilabel +> оставить пустым, будут использоваться параметры <emphasis +>активной цели</emphasis +> диспетчера проектов. Хотя это параметр для опытных пользователей, нечаянно оставленный пустым, он может привести к проблемам. Проверьте его, если среда не запускает исполняемый файл.</para> +</note> +</listitem> + +<listitem> +<formalpara> +<title +>Переменные окружения</title> +<para +>Среда будет устанавливать определённые переменные окружения перед запуском программы. В этой группе параметров можно определить дополнительные переменные.</para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Параметры</title> +<para +>Два флажка внизу вкладки.</para> +</formalpara> + +<itemizedlist> +<listitem> +<para +>Флажок <guilabel +>Автоматически компилировать перед выполнением</guilabel +> удобен в большинстве случаев. Среда будет проверять наличие изменений в проекте и выполнять необходимые действия по его конфигурации и сборке каждый раз, когда вы отдаёте команду выполнения программы.</para> + +<para +>Снимите этот флажок, если хотите запустить версию программы до последних изменений.</para> +</listitem> + +<listitem> +<para +>Флажок <guilabel +>Запускать во внешнем терминале</guilabel +> полезен, если вы хотите тестировать ввод/вывод программ без графического интерфейса пользователя в эмуляторе терминала. По умолчанию он снят, и среда запускает программу в своём собственном окне без возможностей консольного ввода/вывода.</para> +</listitem> +</itemizedlist> +</listitem> +</itemizedlist> +</sect3> +</sect2 +> +</sect1> + +<sect1 id="gettingstarted-extend"> +<title +>Расширение проекта. Диспетчер проектов.</title> + +<para +>(в процессе написания)</para> + +<sect2 id="gettingstarted-extend-automake"> +<title +>Краткий обзор механизма automake</title> + +<para +>(в процессе написания)</para> +</sect2 +> + +<sect2 id="gettingstarted-extend-pics"> +<title +>Помещение значков в отдельный каталог.</title> + +<para +>(в процессе написания)</para> +</sect2 +> + +<sect2 id="gettingstarted-extend-class"> +<title +>Добавление новых классов</title> + +<para +>(в процессе написания)</para> + +<caution +><para +>Будьте осторожны, когда выбираете названия файлов классов. Потом их будет очень трудно изменить.</para +></caution> +</sect2 +> + +<sect2 id="gettingstarted-extend-subproject"> +<title +>Подпроект</title> + +<para +>(в процессе написания)</para> + +<sect3 id="gettingstarted-extend-subproject-active"> +<title +>Концентрация на работе: активная цель.</title> + +<para +>(в процессе написания)</para> +</sect3 +> +</sect2 +> + +<sect2 id="gettingstarted-extend-restructure"> +<title +>Реструктуризация проекта</title> + +<para +>(в процессе написания)</para> +</sect2 +> +</sect1> + + +<sect1 id="gettingstarted-debug"> +<title +>Отладка</title> + +<para +>(в процессе написания)</para> +</sect1 +> + + +<sect1 id="gettingstarted-doc"> +<title +>О документации по проекта.</title> + +<para +>&kde; использует <ulink url="http://www.docbook.org/tdg5/en/html/docbook.html" +>docbook</ulink +> для генерации руководства пользователя по проекту. Руководство пользователя доступно через команду меню <menuchoice +><guimenu +>Справка</guimenu +> <guimenuitem +>Руководство пользователя <replaceable +>Ваше приложение</replaceable +></guimenuitem +></menuchoice +> во время работы вашего приложения &kde;. После сборки проекта руководство пользователя появляется в Центре справки &kde;. Оно объясняет пользователю, как работает приложение, какими функциями обладает и как его настраивать. </para> +<para +>Все шаблоны проектов &kde; в &kdevelop; имеют подкаталог, который содержит шаблон руководства пользователя <filename +>index.docbook</filename +> в папке «en». Его нужно отредактировать. Начните с изменения персональных данных: имени, адреса электронной почты и так далее. Посмотрите на комментарии в файле и попробуйте следовать их указаниям, они помогут вам сделать первые шаги в составлении документации. Пересоберите проект, чтобы увидеть изменения в руководстве вашего приложения.</para> +<note +><para +>Вам нужно установить проект командой меню <menuchoice +><guimenu +>Сборка</guimenu +> <guimenuitem +>Установить</guimenuitem +></menuchoice +> или <guimenuitem +>Установить (с правами root)</guimenuitem +>, чтобы увидеть руководство пользователя вашего проекта в Центре справки KDE.</para +></note> +<para +>Дополнительная информация о синтаксисе docbook находится сайте <ulink url="http://l10n.kde.org/docs/markup/index.html" +>документации &kde;</ulink +>. </para> +</sect1> + +<sect1 id="gettingstarted-keys"> +<title +>Последнее, но не менее важное — комбинации клавиш</title> + +<para +>(в процессе написания)</para> +</sect1> + +<sect1 id="gettingstarted-whereto"> +<title +>Что дальше</title> + +<para +>(в процессе написания)</para> + +<sect2 id="gettingstarted-whereto-faq"> +<title +>Часто возникающие проблемы</title> + +<simplelist> +<member +>Краткий обзор</member> +<member +>Страницы вопросов и ответов</member> +<member +>Форум</member> +<member +>Списки рассылки</member> +</simplelist> +</sect2> + +<sect2 id="gettingstarted-whereto-projects"> +<title +>Работа с проектами</title> + +<para +>(в процессе написания)</para> + +<sect3 id="gettingstarted-whereto-projects-open"> +<title +>Использование существующих проектов &kdevelop;</title> + +<para +>(в процессе написания)</para> +</sect3> + +<sect3 id="gettingstarted-whereto-projects-import"> +<title +>Импорт внешних проектов</title> + +<para +>(в процессе написания)</para> +</sect3> +</sect2> +</sect1> + +</chapter> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/index.cache.bz2 b/tde-i18n-ru/docs/kdevelop/kdevelop/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..7d2b0248ef1 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/index.cache.bz2 diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/index.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/index.docbook new file mode 100644 index 00000000000..8210285b08c --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/index.docbook @@ -0,0 +1,708 @@ +<?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 % Russian "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 +>Руководство пользователя &kdevelop;</title> + + <date +>2006-06-19</date> + <releaseinfo +>&kdevrelease;</releaseinfo> + + <authorgroup> + <author +><firstname +>Bernd</firstname +> <surname +>Gehrmann</surname +> <affiliation +> <address +><email +>[email protected]</email +></address> + </affiliation> + </author> + + <author +><firstname +>Caleb</firstname +> <surname +>Tennis</surname +> <affiliation +> <address +><email +>[email protected]</email +></address> + </affiliation> + </author> + + <author +><firstname +>Bernd</firstname +> <surname +>Pol</surname +> <affiliation +> <address +><email +>[email protected]</email +></address> + </affiliation> + </author> + + <author +><firstname +>Volker</firstname +> <surname +>Paul</surname +> <affiliation +> <address +><email +>[email protected]</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 +>Николай</firstname +><surname +>Шафоростов</surname +> <affiliation +><address +><email +>[email protected]</email +></address +></affiliation +> <contrib +>Перевод на русский язык</contrib +></othercredit +> <othercredit role="translator" +><firstname +>Виктор</firstname +><surname +>Ерёмин</surname +> <affiliation +><address +><email +>[email protected]</email +></address +></affiliation +> <contrib +>Перевод на русский язык</contrib +></othercredit +> + + <legalnotice +>&FDLNotice;</legalnotice> + + <abstract> + <para +>&kdevelop; — интегрированная среда разработки (Integrated Development Environment, IDE), инструмент написания приложений широкого круга применения.</para> + </abstract> + + <keywordset> + <keyword +>KDE</keyword> + <keyword +>KDevelop</keyword> + <keyword +>IDE</keyword> + <keyword +>разработка</keyword> + <keyword +>программирование</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 +>Библиография</title> + +<para +>(... в процессе написания ...)</para> + +<bibliography id="bibliography"> + +<biblioentry> +<title +><ulink url="info://make/Top" +>Руководство по GNU Make</ulink +></title> +<authorgroup> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +<author +><firstname +>Roland</firstname +><surname +>McGrath</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://automake/Top" +>GNU Automake</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Tom</firstname +><surname +>Tromey</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://autoconf/Top" +>GNU Autoconf</ulink +></title> +<authorgroup> +<author +><firstname +>David</firstname +><surname +>MacKenzie</surname +></author> +<author +><firstname +>Ben</firstname +><surname +>Elliston</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://gcc/Top" +>Использование компилятора GNU</ulink +></title> +<author +><firstname +>Richard M.</firstname +><surname +>Stallman</surname +></author> +</biblioentry> + +<biblioentry> +<title +><ulink url="info://libtool/Top" +>GNU Libtool</ulink +></title> +<authorgroup> +<author +><firstname +>Gordon</firstname +><surname +>Matzigkeit</surname +></author> +<author +><firstname +>Alexandre</firstname +><surname +>Oliva</surname +></author> +<author +><firstname +>Thomas</firstname +><surname +>Tanner</surname +></author> +<author +><firstname +>Gary V.</firstname +><surname +>Vaughan</surname +></author> +</authorgroup> +</biblioentry> + +<biblioentry> +<title +>Руководства по GNU Autoconf, Automake и 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 +>Искусство программирования в среде UNIX (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 +>Мыслим в стиле C++, Том 1: Введение в стандартный C++ (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 +>Разработка на основе открытого исходного кода с CVS (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 +>Программирование на PHP (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 +>Программирование на Python (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 +>Программирование графического интерфейса на Python с использованием Qt (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 +>Программирование на Perl (Programming Perl)</title> +<subtitle +>Книга с верблюдом (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 +>Изучаем Perl (Learning Perl)</title> +<subtitle +>Книга с ламой (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-ru/docs/kdevelop/kdevelop/kdevelop-install.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-install.docbook new file mode 100644 index 00000000000..672c9f56e65 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-install.docbook @@ -0,0 +1,1292 @@ +<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 +>Установка &kdevelop;</title> + +<indexterm zone="kdevelop-install"> + <primary +>установка</primary +></indexterm> + +<para +>В этой главе описаны все этапы сборки и установки &kdevelop;: <itemizedlist> + <listitem +><para +>Раздел <link linkend="kdevelop-install-howto" +>Как получить &kdevelop;</link +> содержит информацию по загрузке последней версии &kdevelop; в виде исходного кода из репозитория SVN. </para +></listitem> + <listitem +><para +>Раздел <link linkend="requirements" +>Требования &kdevelop;</link +> содержит список программ и библиотек, необходимых для сборки &kdevelop;. </para +></listitem> + <listitem +><para +>Раздел <link linkend="compile-and-install" +>Сборка и установка &kdevelop;</link +> проведёт вас через все этапы сборки и установки &kdevelop;. </para +></listitem> + <listitem +><para +>Раздел <link linkend="make-api" +>Как получить документацию по &API;</link +> рассказывает что такое API и как вам получить удобный инструмент для навигации по исходникам &kdevelop;. </para +></listitem> +</itemizedlist> +</para> + +<sect1 id="kdevelop-install-howto"> +<title +>Как получить &kdevelop;</title> + +<indexterm zone="kdevelop-install-howto"> + <primary +>получение &kdevelop;</primary +></indexterm> +<indexterm zone="kdevelop-install-howto"> + <primary +>&kdevelop;</primary> + <secondary +>получение</secondary +></indexterm> + +<para +>&kdevelop; доступен в собранном виде во многих дистрибутивах &Linux;, таких, как SuSE, RedHat и других, чаще всего в виде пакета RPM, для упрощения процесса установки. Для установки из собранного пакета обратитесь к документации по вашему дистрибутиву. </para> +<para +>Также вы можете загрузить исходный код, собрать и установить &kdevelop; самостоятельно. Исходный код среды разработки доступен на <ulink url="http://www.kdevelop.org" +>http://www.kdevelop.org</ulink +> и <ulink url="http://download.kde.org" +>ftp-сервер &kde;</ulink +>. </para> + +<sect2 id="howto-svn"> +<title +>Получение ежедневных снимков &kdevelop; из SVN</title> + +<indexterm zone="howto-svn"> + <primary +>svn</primary +></indexterm> + +<para +>Если вы хотите быть в курсе последних разработок, то доступен анонимный снимок репозитория SVN.</para> +<para +>Имя модуля <emphasis +>kdevelop</emphasis +> в репозитории <filename class="directory" +>svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdevelop</filename +>. </para> + +<sect3 id="howto-svn-co"> +<title +>Скачивание рабочей копии</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 +>Для получения версии &kdevelop;, загрузите его с анонимного репозитория SVN. Эта операция называется скачивание рабочей копии (<emphasis +>checkout</emphasis +>). </para> + +<note +><para +>Далее подразумевается, что исходный код &kdevelop; расположен в каталоге <filename class="directory" +>~/kde3src</filename +>. </para +></note> + +<informalexample +><simplelist> + <member +># Создаём конечный каталог, если необходимо: </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 +>После полной загрузки рабочей копии &kdevelop; вы можете постоянно иметь самую последнюю версию путём обновления, что описано в следующем разделе. </para +></note> + +<important +><para +><emphasis +>Пожалуйста, не загружайте каждый раз все файлы заново!</emphasis +> Используйте команду svn update. </para +></important> + +<para +>Теперь вы можете собрать &kdevelop;, как показано в разделе <link linkend="compile-and-install" +>Сборка и установка &kdevelop;</link +>. </para> + +</sect3 +> <!-- howto-svn-co --> + +<sect3 id="howto-svn-up"> +<title +>Поддержка локальной рабочей копии в актуальном состоянии</title> + +<indexterm zone="howto-svn-up"> + <primary +>update</primary +></indexterm> +<indexterm zone="howto-svn-up"> + <primary +>&kdevelop;</primary> + <secondary +>svn</secondary> + <tertiary +>update</tertiary +></indexterm> + +<para +>После загрузки (и сборки) &kdevelop; из SVN можно поддерживать вашу рабочую копию исходного кода в актуальном состоянии, чтобы получать все исправления. Для этого (опять же таки предполагается, что копия исходного кода &kdevelop; расположена в каталоге <filename class="directory" +>kde3src</filename +>). </para> +<para +>Обратите внимание на использование команды <command +>up</command +> (<emphasis +>update</emphasis +>, обновить) вместо <command +>co</command +> (<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 +>Следите за сообщениями svn в процессе обновления, так как от этого зависят конкретные шаги сборки. </para +></note> + +<para +>После обновления &kdevelop;, приложение нужно собрать как описано в главе <link linkend="compile-and-install-make-svn" +>Нюансы сборки из SVN</link +>. </para> +</sect3 +> <!-- howto-svn-up --> + +</sect2 +> <!-- howto-svn --> + +</sect1 +> <!-- howto --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="requirements"> +<title +>Требования</title> + +<indexterm zone="requirements"> + <primary +>требования</primary +></indexterm> +<indexterm zone="requirements"> + <primary +>&kdevelop;</primary> + <secondary +>требования</secondary +></indexterm> +<indexterm zone="requirements"> + <primary +>GNU</primary> + <secondary +>требования</secondary +></indexterm> + +<para +>Для успешной сборки и последующего использования &kdevelop;, необходимо установить следующие программы и библиотеки. Обычно они поставляются с дистрибутивами, а значит установить их можно просто. </para> + +<itemizedlist> +<title +>Требуется:</title> + <listitem> + <para +><application +>gcc/g++</application +> ≥ 2.95.3 (или аналог) <indexterm> + <primary +>gcc</primary> + <secondary +>требования</secondary +></indexterm> + <indexterm> + <primary +>g++</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="gcc.gnu.org" +>gcc.gnu.org</ulink +> </para> + </listitem> + <listitem> + <para +><application +>&GNU; make</application +> (или аналог) <indexterm> + <primary +>make</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.gnu.org/software/make" +>www.gnu.org/software/make</ulink +> </para> + </listitem> + <listitem> + <para +>&perl; 5.004 (или выше) <indexterm> + <primary +>Perl</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.perl.com" +>www.perl.com</ulink +> </para> + </listitem> + <listitem> + <para +><application +>autoconf</application +> ≥ 2.52 (или выше) <indexterm> + <primary +>autoconf</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.gnu.org/software/autoconf" +>www.gnu.org/software/autoconf</ulink +> </para> + </listitem> + <listitem> + <para +><application +>automake</application +> ≥ 1.6 (или выше) <indexterm> + <primary +>automake</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.gnu.org/software/automake" +>www.gnu.org/software/automake</ulink +> </para> + </listitem> + <listitem> + <para +><application +>flex</application +> 2.5.4 (или выше) <indexterm> + <primary +>flex</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.gnu.org/software/flex" +>www.gnu.org/software/flex</ulink +> </para> + </listitem> + <listitem> + <para +>&Qt; ≥ 3.0.3 (или выше) <indexterm> + <primary +>Qt</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.trolltech.com/products/qt" +>www.trolltech.com/products/qt</ulink +> </para> + </listitem> + <listitem> + <para +><application +>KDE</application +> ≥ 3.0.2 (или выше) <indexterm> + <primary +>KDE</primary> + <secondary +>требования</secondary +></indexterm> + </para> + <para +>Официальный сайт: <ulink url="www.kde.org" +>www.kde.org</ulink +> </para> + </listitem> +</itemizedlist> + +<itemizedlist> +<title +>Необязательно:</title> + <listitem +><para +>Средство навигации по исходному коду <emphasis +><application +>ctags</application +></emphasis +>, с <ulink url="http://ctags.sourceforge.net" +>http://ctags.sourceforge.net</ulink +>, позволяющее быстрое перейти к объявлению или определению несколькими щелчками мыши на имени переменной в редакторе. <indexterm +><primary +>ctags</primary +></indexterm> + </para +></listitem> + <listitem +><para +><emphasis +><application +>dot</application +></emphasis +>, генератор изображений, с <ulink url="http://www.graphviz.org" +>http:/www.graphviz.org</ulink +>. Он нужен для &doxygen;, чтобы наглядно показать иерархию классов. <indexterm +><primary +>dot</primary +></indexterm> + </para +></listitem> + <listitem +><para +>Средство документирования <emphasis +>&doxygen;</emphasis +>, с <ulink url="http://www.doxygen.org" +>http://www.doxygen.org</ulink +>, с помощью которого вы сможете сгенерировать лаконичную и гибкую документацию API вашего проекта. <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 +> поможет найти утечки памяти в вашем приложении. <indexterm +><primary +>valgrind</primary +></indexterm> + </para +></listitem> + <listitem +><para +><emphasis +><application +>svn</application +></emphasis +> с <ulink url="http://subversion.tigris.org/" +>http://subversion.tigris.org/</ulink +> если вы хотите использовать систему управления версиями SVN. <indexterm> + <primary +>svn</primary> + <secondary +>требования</secondary +></indexterm> + </para +></listitem> + <listitem +><para +>Любой другой компилятор и/или инструмент, если вы разрабатываете программное обеспечение на языке или платформе, отличных от C++/&kde;. </para +></listitem> +</itemizedlist> + +<note> +<orderedlist> + <listitem> + <para +>Вы можете обойти требования &autoconf; ≥ 2.52 и &automake; ≥ 1.6. Просто удалите подкаталог <filename class="directory" +>admin</filename +> в установочном каталоге &kdevelop; и введите <indexterm> + <primary +>autoconf</primary> + <secondary +>обхождение требования версий</secondary +></indexterm> + <indexterm> + <primary +>automake</primary> + <secondary +>обхождение требования версий</secondary +></indexterm> + <indexterm> + <primary +>требование версии</primary> + <secondary +>обхождение требования autoconf/automake</secondary +></indexterm> + </para> + <informalexample +><simplelist> + <member +><prompt +>(каталог-kdevelop)> </prompt +> <userinput +>ln -s $KDEDIR/share/apps/kdelibs/admin admin</userinput +></member> + </simplelist +></informalexample> + <para +>в консоли. При этом &kdevelop; будет использовать стандартные параметры в каталоге &kde; <filename class="directory" +>admin</filename +> . </para> + </listitem> + <listitem> + <para +>Убедитесь, что вы <emphasis +>не смешиваете разные версии &Qt;</emphasis +>. Всегда собирайте &kdevelop; с той версией &Qt;, с которой были собраны библиотеки &kde;. Иначе вы можете получить очень странное поведение программы. </para> + </listitem> +</orderedlist> +</note> + +</sect1 +> <!-- requirements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compile-and-install"> +<title +>Сборка и установка &kdevelop;</title> + +<indexterm zone="compile-and-install"> + <primary +>&kdevelop;</primary> + <secondary +>сборка</secondary +></indexterm> +<indexterm zone="compile-and-install"> + <primary +>&kdevelop;</primary> + <secondary +>установка</secondary +></indexterm> + +<para +>После удовлетворения всех требований, вы можете приступить к сборки и установке &kdevelop;. В приложении описаны необходимые для этого действия. </para> +<itemizedlist> + <listitem +><para +>Раздел <link linkend="compile-and-install-preliminaries" +>Подготовительные шаги</link +> содержит инструкции по установке окружения. </para +></listitem> + <listitem +><para +>Раздел <link linkend="compile-and-install-make" +>Сборка &kdevelop;</link +> расскажет как получить исходный код &kdevelop; из svn, подготовить его, скомпилировать и установить. </para +></listitem> + <listitem +><para +>Раздел <link linkend="compile-and-install-options" +>Примечания по ключам <command +>configure</command +></link +> покажет как собрать &kdevelop; не в каталог &kde; по умолчанию. </para +></listitem> +</itemizedlist> + +<sect2 id="compile-and-install-preliminaries"> +<title +>Подготовительные шаги</title> + +<indexterm zone="compile-and-install-preliminaries"> + <primary +>подготовка</primary> + <secondary +>Установка &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 +>Перед началом сборки убедитесь, что все библиотеки и инструменты доступны сборочной системе make. Для этого нужно правильно выставить переменные окружения. Шаги, которые следует выполнить при этом, зависят от используемой оболочки («shell»). </para> + +<note +><para +>Чтобы не вводить все необходимые операторы по определению переменных окружения каждый раз, вы можете записать их в файл <filename +>.bashrc</filename +> или <filename +>.cshrc</filename +>. Таким образом, переменные будут иметь нужное значение каждый раз при входе в систему. </para +></note> + +<sect3 id="compile-and-install-preliminaries-bash"> +<title +>Настройка окружения в оболочке bash</title> + +<para +>Если вы используете bash, добавьте в его файл конфигурации такие строки: </para> + +<informalexample +><simplelist> + <member +><userinput +>export KDEDIR=</userinput +>(путь к KDE)</member> + <member +><userinput +>export QTDIR=</userinput +>(путь к библиотеке 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 +>Настройка окружения для оболочки tcsh</title> + +<para +>Если вы используете tcsh, добавьте в его файл конфигурации такие строки: </para> +<para> +<informalexample +><simplelist> + <member +><userinput +>setenv KDEDIR </userinput +>(путь к KDE)</member> + <member +><userinput +>setenv QTDIR </userinput +>(путь к библиотеке 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 +>Сборка &kdevelop;</title> + +<indexterm zone="compile-and-install-make"> + <primary +>make</primary> + <secondary +>Установка &kdevelop;</secondary +></indexterm> +<indexterm zone="compile-and-install-make"> + <primary +>сборка, компиляция</primary> + <secondary +>&kdevelop;</secondary +></indexterm> + +<note +><para +>Далее подразумевается, что исходный код &kdevelop; расположен в каталоге <filename class="directory" +>~/kde3src/kdevelop</filename +>. </para +></note> + +<sect3 id="compile-and-install-make-svn"> +<title +>Особенности сборки из SVN</title> + +<para +>Если вы собираете &kdevelop; из SVN, начальные шаги сборки зависят от того, загрузили ли вы рабочую копию (checkout) или обновили ранее загруженную копию (update). </para> + +<variablelist> +<varlistentry> +<term id="compile-and-install-make-svn-co" +>После svn checkout</term> +<listitem> +<para +>Вы должны <emphasis +>инициализировать сборочную систему</emphasis +> после скачивания рабочей копии. Тоже самое необходимо сделать если вы хотите начать сборку с нуля. Наберите: </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make -f admin/Makefile.common svn-clean</userinput +> </member +></simplelist +></informalexample> +<para +>и выполните <emphasis +>все следующие шаги</emphasis +>. </para> +<note +><para +>Для восстановления повреждённых и отсутствующих файлов, возможно, потребуется запустить svn cleanup. </para +></note> +<important +><para +>Выполните команду <command +>svn-clean</command +> чтобы <emphasis +>удалить все файлы</emphasis +>, не имеющие соответствия в репозитории SVN. Убедитесь что вы сделали резервные копии всей ценной информации перед выполнением этой команды. </para +></important> +</listitem> +</varlistentry> + +<varlistentry> +<term id="compile-and-install-make-svn-up" +>После обновления SVN</term> +<listitem> +<para +>Следующий шаг зависит от вывода команды обновления svn update. Если в нём было U или P в начале строки — это означает изменение файла: </para> + +<screen +>U /some_directory_path/Makefile.am +</screen> +<para +>или, после загрузки рабочей копии (checkout), введите: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make -f Makefile.svn</userinput +> </member +></simplelist +></informalexample> +<para +>перед выполнением <emphasis +>всех следующих шагов</emphasis +>. </para> +</listitem> +</varlistentry> +</variablelist> +</sect3 +> <!-- compile-and-install-make-svn --> + +<sect3 id="compile-and-install-make-basic"> +<title +>Команды сборки <command +>make</command +></title> + +<para +>Теперь вы должны решить, какую систему &kdevelop; вы хотите использовать. На следующем шаге генерируются файлы <filename +>Makefile</filename +>, который нужны для сборки командой <command +>make</command +>. </para> + +<note +><para +>Вы можете не указывать параметр <option +>--prefix</option +> при запуске <command +>configure</command +>, в этом случае &kdevelop; будет установлен в каталог &kde; по умолчанию. Подробно это изложено в разделе <link linkend="compile-and-install-options" +>Примечания по ключам <command +>configure</command +></link +>. </para +></note> + +<variablelist> +<varlistentry> +<term +>Версия с отладочной информацией</term> +<listitem> +<para +>Если вы хотите следить за тем, что &kdevelop; делает во время выполнения, выберите сборку версии с отладочной информацией. Просто запустите <command +>configure</command +> следующим образом: </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --enable-debug=full --prefix=</userinput +>(путь-к-kde3) </member +></simplelist +></informalexample> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Финальная версия</term> +<listitem> +<para +>Если вы хотите просто использовать &kdevelop; как есть (с меньшим размером и более быстрой работой), запускайте <command +>configure</command +> с параметрами по умолчанию:</para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --prefix=</userinput +>(путь-к-kde3) </member +></simplelist +></informalexample> + +<note> +<para +>Если вы хотите собрать также <link linkend="make-api" +>документацию по API</link +> для &kdevelop;, вам нужно указать соответствующий параметр в команде запуска <command +>configure</command +>: </para> +<informalexample +><simplelist> + <member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --</userinput +>(такие-же-ключи) <userinput +>\</userinput +></member +> <member +><userinput +>--with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs</userinput +></member> +</simplelist +></informalexample> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Сборка посредством make и установка</term> +<listitem> +<para +>Скрипт <command +>configure</command +> проверит систему и создаст файл <filename +>Makefile</filename +>, который будет использовать команда <command +>make</command +>. Команда <command +>make</command +> будет использовать основной файл <filename +>Makefile</filename +> по умолчанию. </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make</userinput +> </member +></simplelist +></informalexample> +<para +>Для установки получите права суперпользователя командой: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> +<para +>и введите пароль пользователя root. После этого установите &kdevelop;: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make install</userinput +> </member +></simplelist +></informalexample> +<para +>Если &kdevelop; установлен в каталог &kde; по умолчанию, вы можете сразу запустить <acronym +>IDE</acronym +>. Иначе потребуются некоторые дополнительные шаги. Подробно об этом рассказано в разделе <link linkend="compile-and-install-options-dir" +>Нестандартный каталог установки</link +>. </para> + +<note> + <para +>На самом деле будут установлены три программы: </para> + <itemizedlist> + <listitem +><para +>&kdevelop; IDE — среда разработки, в которой вы обычно работаете.</para +></listitem> + <listitem +><para +>&kdevelop; Assistant — программа автономного просмотра документации, предоставляющая всю функциональность соответствующего модуля &kdevelop; IDE.</para +></listitem> + <listitem +><para +>&kdevelop; Designer — расширение &Qt; Designer, добавляющее специфические для виджеты &kde; и интегрирующее его в &kdevelop; IDE.</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 +>Примечания по ключам <command +>configure</command +></title> + +<sect3 id="compile-and-install-options-dir"> +<title +>Нестандартный каталог установки</title> + +<indexterm zone="compile-and-install-options-dir"> + <primary +>&kdevelop;</primary> + <secondary +>установка</secondary> + <tertiary +>нестандартный каталог</tertiary +></indexterm> +<indexterm zone="compile-and-install-options-dir"> + <primary +>нестандартный каталог</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 +>По умолчанию <acronym +>IDE</acronym +> устанавливается в каталог &kde;. Это необходимо &kdevelop; для прямого доступа к некоторым утилитам и модулям, расположенным в этом каталоге. Чтобы использовать другой каталог для установки, запустите <command +>configure</command +> с параметром <option +>--prefix</option +>: </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --prefix=</userinput +>(путь-к-kde3) </member +></simplelist +></informalexample> +<para +>И всё же устанавливать программу в другой каталог не рекомендуется. Конечно, вы можете сделать это, но тогда вы получите очень ограниченную функциональность. </para> +<para +>Перед запуском &kdevelop; выполните следующие команды из командной строки: </para> + +<note +><para +><emphasis +>Обратите внимание на множественную форму:</emphasis +> <quote +><envar +>KDEDIRS</envar +></quote +>, а не <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 +>Теперь запустим &kdevelop;: </member> + <member +><prompt +>~> </prompt +> <userinput +>kdevelop</userinput +> </member> +</simplelist +></informalexample> + +<note +><simplelist> + <member +>Переменная окружения <envar +>KDEDIRS</envar +> должна содержать <emphasis +>список активных каталогов &kde;</emphasis +> вашей системы. Обычно это</member> + <member +><filename class="directory" +>/usr/local/kde</filename +>:<filename class="directory" +>/opt/kde3</filename +></member> + <member +>однако в вашей системе это могут быть другие каталоги.</member> + <member +>Каталог <filename class="directory" +>/usr/local/kde</filename +>, например, может содержать неполную версию &kde;, которую вы собрали для отладки, а <filename class="directory" +>/opt/kde3</filename +> — версию &kde; из вашего дистрибутива.</member> +</simplelist +></note> + +<para +>в оболочке tcsh определение переменных окружения происходит таким образом: </para> +<informalexample +><simplelist +><member +><prompt +>~> </prompt +> <userinput +>setenv KDEDIRS /usr/local/kde:/opt/kde3</userinput +> </member +></simplelist +></informalexample> +<para +>Команда <command +>kbuildsycoca</command +> (<quote +>build system control cache</quote +> — кэш системных параметров) выполняет поиск библиотек и записывает их размещение и версию в кэш, чтобы &kdevelop; смог их найти. Это займёт некоторое время, и это нужно выполнять каждый раз перед запуском &kdevelop; из оболочки, если вы установили программу в нестандартный каталог. Конечно, из этих команд можно составить сценарий и запускать только его. </para> +<para +>Кроме того можно дополнить файлы <filename +>.bashrc</filename +> или <filename +>.cshrc</filename +>, но это не желательно, так как команда будут выполняться при каждом входе в консоль. </para> + +<note +><para +>Команду <command +>kbuildsycoca</command +> не нужно выполнять с правами суперпользователя. И вообще, заниматься разработкой под root <emphasis +>не очень хорошая идея</emphasis +>! </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 +>Как получить документацию по &API;</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 +>сборка, компиляция</primary> + <secondary +>&kdevelop;</secondary> + <tertiary +>API</tertiary +></indexterm> +<indexterm zone="make-api"> + <primary +>configure</primary> + <secondary +>API &kdevelop;</secondary +></indexterm> + +<para +>API — сокращение от <quote +>Application Program Interface</quote +> (программный интерфейс приложения). Это набор описаний, по которым приложение обращается к операционной системе и другим службам. API приложения &kde; или &Qt; — описание интерфейсов классов и методов, которые используются для навигации по исходному коду приложения. </para> +<para +>Последняя версия документации по API находится на <ulink url="http://www.kdevelop.org/HEAD/doc/api/html/index.html" +>сайте KDevelop</ulink +>. Она обновляется каждые 24 часа. </para> +<para +>Чтобы собрать документацию по API из исходного кода &kdevelop; самостоятельно, нужно указать где искать API KDELIBS, добавив параметр <option +>--with-kdelibsdoxy-dir</option +> при запуске <command +>configure</command +>: </para> + +<informalexample +><simplelist> + <member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>./configure --</userinput +>(прочие параметры)<userinput +> \</userinput +> </member> + <member> + <userinput +>--with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs</userinput> + </member> +</simplelist +></informalexample> + +<para +>(<command +>make</command +> заменит глобальную переменную <varname +>$KDEDIR</varname +> на каталог, где установлен &kde;). Затем запустите <command +>make</command +> <link linkend="compile-and-install-make-basic" +>как обычно</link +>. После сборки &kdevelop; можно также собрать документацию по API. Для этого выполните </para> +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make apidocs</userinput +> </member +></simplelist +></informalexample> + +<para +>Это создаст файл <filename +>Doxyfile</filename +> в основном каталоге исходного кода &kdevelop;, который передаётся на обработку программе <application +>Doxygen</application +>, в результате чего будет создано большое количество файлов <filename +>.html</filename +> в течение некоторого времени (до часа на медленных машинах). После окончания процесса сборки нужно установить документацию. Получите права суперпользователя </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>su</userinput +> </member +></simplelist +></informalexample> + +<para +>и введите пароль пользователя root, затем установите файлы документации по API: </para> + +<informalexample +><simplelist +><member +><prompt +>~/kde3src/kdevelop> </prompt +> <userinput +>make install-apidox</userinput +> </member +></simplelist +></informalexample> + +<para +>После этого <command +>make</command +> выведет имя каталога, где установлена документация по API. </para> + +<note +><para +>Возможно, вы увидите большое количество предупреждений или сообщений об ошибках в процессе сборки документации по API программой <application +>Doxygen</application +>. Они представляют интерес только для разработчиков &kdevelop;. Если всё пройдёт нормально, файлы <filename +>.html</filename +> будут доступными для чтения. </para +></note> + +</sect1 +> <!-- make-api --> + +</appendix +> <!-- kdevelop-install --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-scripting.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-scripting.docbook new file mode 100644 index 00000000000..918120e0500 --- /dev/null +++ b/tde-i18n-ru/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 +>Поддержка сценариев</title> + +<sect1 id="running-scripts"> +<title +>Выполнение сценариев</title> +<para +>Для получения доступа к сценариям воспользуйтесь меню <menuchoice +><guimenu +>Сервис</guimenu +><guimenuitem +>Сценарии</guimenuitem +></menuchoice +>. Если его нет, значит в KDevelop не установленных сценариев. </para> +</sect1> + +<sect1 id="adding-scripts"> +<title +>Добавление сценариев</title> +<para +>После добавления поддержки KScript в ваше главное приложение, добавление в него сценариев становится лёгкой задачей. Сценарии состоят из двух частей - файла .desktop, содержащего метаданные (текст пункта меню и интерпретатор), и собственно сценария. Этот подход был использован из соображений безопасности и простоты использования. </para> +<para +>Этот пример демонстрирует основные части, которые нужны KScript. Первый элемент, "Name", определяет имя сценария, показываемое пользователи, а текст элемента "Comment" будет показан во всплывающей подсказке. Наиболее важным является "Type", он определяет интерпретатор, который будет использован для сценария. На текущий момент есть два возможных варианта - "ShellScript/bash" и "JavaScript/kjs". нашем примере выбран первый. Сценарию передаётся два аргумента . Первый - DCOP ID (дескриптор) главного приложения. </para> + +<para +>Приведенный сценарий устанавливает текст первого документа в вывод команды "ls -l"</para> + +<para +>Самое полезная программа для разработки таких сценариев - KDCOP.</para> +<figure id="screenshot-kdcop" float="1"> + <title +>Работа с DCOP-интерфейсами в &kdevelop; с помощью KDCOP</title> + <mediaobject> + <imageobject +><imagedata fileref="kdcop_browsing.png"/></imageobject> + </mediaobject> +</figure> + +<para +>KDCOP позволяет просматривать и отлаживать интерфейсы приложений. На текущий момент KDCOP поддерживает KJSEmbed, Python и оболочки UNIX для работы с DCOP.</para> + +<para +>Когда сценарий написан, осталось его установить. Разработчики основного приложения должны позаботиться об этой процедуре, или хотя бы задокументировать пути, в которых будут искаться сценарии. В примере выше, сценарий Kate расположен в "$KDEDIRS/share/apps/kate/scripts".</para> + +<figure id="screenshot-scripts" float="1"> + <title +>Сценарии &kdevelop; в файловой системе</title> + <mediaobject> + <imageobject +><imagedata fileref="script_location.png"/></imageobject> + </mediaobject> +</figure> + +<para +>Файл .desktop должен быть в одной папке со сценарием. Разработчикам сценариев также рекомендуется хранить вспомогательные файлы, такие как файлы пользовательского интерфейса, файлы данных, в той же папке. Также заметим, что основное приложение блокируется на время выполнения сценария. но это будет изменено в KDE 4. </para> + +</sect1> + + +</chapter> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-survey.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-survey.docbook new file mode 100644 index 00000000000..ffc7ec98d73 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/kdevelop-survey.docbook @@ -0,0 +1,776 @@ +<chapter id="kdevelop-survey"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Обзор возможностей &kdevelop;</title> + +<indexterm zone="kdevelop-survey"> + <primary +>&kdevelop;</primary> + <secondary +>обзор</secondary +></indexterm> +<indexterm zone="kdevelop-survey"> + <primary +>общий обзор</primary +></indexterm> +<indexterm zone="kdevelop-survey"> + <primary +>обзор</primary +></indexterm> + +<para +>&kdevelop; объединяет большое количество инструментов, скриптов и шаблонов в общий интерфейс. Он состоит из <itemizedlist> + <listitem +><para +>нескольких <link linkend="uimodes-survey" +>режимов интерфейса</link +>, содержащих предустановки рабочей области, </para +></listitem> + <listitem +><para +><link linkend="applicationwizard" +>мастера проектов</link +>, упрощающего создание нового проекта, </para +></listitem> + <listitem +><para +>нескольких <link linkend="makesystems" +>систем управления проектом</link +>, упрощающих сборки и управление вашим проектом, </para +></listitem> + <listitem +><para +>некоторых <link linkend="editing" +>средств редактирования</link +> для простой и наглядной работы с исходными кодами программы </para +></listitem> + <listitem +><para +>различных <link linkend="file-browsers" +>диспетчеров файлов</link +>, представляющих вашу файловую систему в разных видах, </para +></listitem> + <listitem +><para +>различных <link linkend="class-browsers" +>панелей просмотра классов</link +>, которые упрощают работу с классами и отношениями между ними в объектно-ориентированном программировании, </para +></listitem> + <listitem +><para +><link linkend="debugger" +>отладочного интерфейса</link +> для поиска и устранения ошибок прямо из &kdevelop;, </para +></listitem> + <listitem +><para +>нескольких <link linkend="plugin-tools" +>модулей</link +>, которые могут быть загружены в любое время по запросу. </para +></listitem> + <listitem +><para +>набора других вспомогательных инструментов для диагностики, документировании и оптимизации. </para +></listitem> +</itemizedlist> +</para> + +<note> + <para +>На самом деле, &kdevelop; состоит из трёх программ: </para> + <itemizedlist> + <listitem +><para +>&kdevelop; IDE — среды разработки, в которой вы обычно работаете.</para +></listitem> + <listitem +><para +>&kdevelop; Assistant — программы просмотра документации, предоставляющий всю функциональность соответствующего модуля &kdevelop; IDE.</para +></listitem> + <listitem +><para +>&kdevelop; Designer — расширения &Qt; Designer, добавляющего специфические виджеты &kde; и интегрирующее его в &kdevelop; IDE.</para +></listitem> + </itemizedlist> +</note> + + +<sect1 id="uimodes-survey"> +<title +>Режимы интерфейса</title> + +<indexterm zone="uimodes-survey"> + <primary +>&kdevelop;</primary> + <secondary +>режимы интерфейса</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>пользовательский интерфейс</primary> + <secondary +>Режимы &kdevelop;</secondary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Режимы интерфейса</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Многодокументный</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Вкладки</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>Отдельные окна</primary +></indexterm> +<indexterm zone="uimodes-survey"> + <primary +>IDEAl</primary +></indexterm> + +<para +>В &kdevelop; есть четыре различных режима интерфейса (нажмите на названии чтобы просмотреть изображение с его примером): <itemizedlist> + <listitem +><para +><link linkend="ideal-desc" +>IDEAl</link +></para> + <para +>Это новый интерфейс, оптимизирующий организацию рабочей области и обеспечивающий интуитивный доступ к инструментам. </para> + <itemizedlist> + <listitem +><para +>Все инструменты размещены по краям рабочей области в панелях с несколькими вкладками и сгруппированы по назначению. </para +></listitem> + <listitem +><para +>Окна просмотра документации и редактирования файлов будут собраны в одно окно со вкладками. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="mdi-desc" +>Дочерние окна</link +></para> + <itemizedlist> + <listitem +><para +>Все средства просмотра размещены как дочерние окна непосредственно в главном окне.</para +></listitem> + <listitem +><para +>Окна просмотра и редактирования будут выглядеть как обычные отдельные окна внутри рабочей области.</para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="tabbed-desc" +>Вкладки</link +></para> + <itemizedlist> + <listitem +><para +>Все средства просмотра размещены как дочерние окна непосредственно в главном окне. </para +></listitem> + <listitem +><para +>Окна просмотра и редактирования будут совмещены в одно окно с соответствующими вкладками. </para +></listitem> + </itemizedlist> + </listitem> + + <listitem> + <para +><link linkend="toplevel-desc" +>Отдельные окна</link +></para> + <itemizedlist> + <listitem +><para +>Окна инструментов, просмотра и редактирования будут выглядеть как обычные отдельные окна на рабочем столе. </para +></listitem> + <listitem +><para +>Главный элемент управления будет содержать только меню, панели инструментов и строку состояния. </para +></listitem> + </itemizedlist> + </listitem> + +</itemizedlist> +</para> + +<sect2 id="uimodes-switch"> +<title +>Как переключить интерфейс</title> + +<indexterm zone="uimodes-switch"> + <primary +>пользовательский интерфейс</primary> + <secondary +>переключение интерфейсов</secondary +></indexterm> +<indexterm zone="uimodes-switch"> + <primary +>переключение пользовательских интерфейсов</primary +></indexterm> + +<para +>Чтобы переключить режим интерфейса, выберите <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> </menuchoice +>. В появившемся диалоге <guilabel +>Настройка KDevelop</guilabel +> выберите раздел <guilabel +>Интерфейс пользователя</guilabel +> в поле слева. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface.png" format="PNG"/> + </imageobject> + <caption +><para +>Выбор вида интерфейса </para +></caption> + </mediaobject> +</screenshot> + +<para +>Старые версии &kdevelop; предлагают выбор вида интерфейса только в виде отдельных окон. </para> + +<para +>В секции <guilabel +>Текущий вид интерфейса</guilabel +> выберите тип, в котором вы хотите работать. </para> +<para +>В зависимости от режима интерфейса, выбранного вами, будет доступно различное количество его параметров. Подробно об этом рассказано в разделе <link linkend="setup-ui" +>Выбор интерфейса</link +>. </para> + +<note +><para +>Не забудьте перезапустить &kdevelop; чтобы параметры вступили в силу. </para +></note> + +</sect2 +> <!-- uimodes-switch --> + +<sect2 id="maximize-workspace"> +<title +>Как увеличить рабочее пространство</title> + +<indexterm zone="maximize-workspace"> + <primary +>&kdevelop;</primary> + <secondary +>рабочее пространство</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>&kdevelop;</primary> + <secondary +>увеличение рабочего пространства</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>пользовательский интерфейс</primary> + <secondary +>рабочее пространство</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>пользовательский интерфейс</primary> + <secondary +>меню</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>пользовательский интерфейс</primary> + <secondary +>полноэкранный режим</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>полноэкранный режим</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>меню</primary> + <secondary +>скрыть/показать</secondary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>скрыть меню</primary +></indexterm> +<indexterm zone="maximize-workspace"> + <primary +>показать меню</primary +></indexterm> + +<para +>Для увеличения рабочего пространства можно перейти в полноэкранный режим, скрыть меню, и, как и в любом другом приложении <application +>KDE</application +>, панели инструментов. </para> + +<variablelist> +<varlistentry> +<term +>Полноэкранный режим</term> +<listitem> +<para +>Для переключения в этот режим или выхода из него выберите пункт меню <menuchoice +> <guimenu +>Вид</guimenu +> <guimenuitem +>Полноэкранный режим</guimenuitem +> </menuchoice +> или нажмите <keycombo +> <keycap +>Ctrl</keycap +> <keycap +>Shift</keycap +> <keycap +>F</keycap +></keycombo +>. Кроме того, значок переключения в этот режим есть на панели инструментов <guilabel +>Вид</guilabel +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Скрытие и показ меню</term> +<listitem> +<para +>Для того, чтобы <emphasis +>скрыть</emphasis +> меню, выберите <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Скрыть меню</guimenuitem +> </menuchoice +>, или нажмите <keycombo +><keycap +>Ctrl</keycap +> <keycap +>M</keycap +></keycombo +>. Чтобы <emphasis +>показать</emphasis +> меню, повторно нажмите <keycombo +> <keycap +>Ctrl</keycap +> <keycap +>M</keycap +> </keycombo +>, или воспользуйтесь кнопкой панели инструментов <guiicon +>Показать меню</guiicon +>. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- maximize-workspace --> + +</sect1 +> <!-- uimodes-survey --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="ui-elements"> +<title +>Элементы интерфейса</title> + +<para +>(... в процессе написания ...) </para> + +<sect2 id="ui-elements-workarea"> +<title +>Рабочая область</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-workarea --> + +<sect2 id="ui-elements-titlebar"> +<title +>Заголовок окна &kdevelop;</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-titlebar --> + +<sect2 id="ui-elements-statusbar"> +<title +>Строка состояния &kdevelop;</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-statusbar --> + +<sect2 id="ui-elements-menubar"> +<title +>Меню</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-menubar --> + +<sect2 id="ui-elements-toolbars"> +<title +>Панели инструментов</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-toolbars --> + +<sect2 id="ui-elements-treetoolviews"> +<title +>Панели просмотра</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-treetoolviews --> + +<sect2 id="ui-elements-outputtoolviews"> +<title +>Панели вывода</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- ui-elements-outputtoolviews --> + +</sect1 +> <!-- ui-elements --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makesystems"> +<title +>Системы управления проектом</title> + +<indexterm zone="makesystems"> + <primary +>управление проектом</primary +></indexterm> + +<para +>Обычно проекты основываются на определённой системе управления. &kdevelop; предлагает четыре <emphasis +>системы управления проектом</emphasis +>, которые можно выбрать при создании проекта. <itemizedlist> + <listitem +><para +><link linkend="automake-project" +>Automake</link +> использует стандартные инструменты разработки &GNU;. </para +></listitem> + <listitem +><para +><link linkend="qmake-project" +>QMake</link +> использует диспетчер проектов Trolltech. </para +></listitem> + <listitem +><para +><link linkend="ant-project" +>ANT</link +> использует диспетчер проектов Apache ANT для &Java;. </para +></listitem> + <listitem +><para +><link linkend="custom-project" +>Особый проект</link +> позволит вам создавать файлы <filename +>Makefile</filename +> самостоятельно. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-project"> +<title +>Automake</title> + +<indexterm zone="automake-project"> + <primary +>проекты</primary> + <secondary +>automake</secondary +></indexterm> +<indexterm zone="automake-project"> + <primary +>automake</primary> + <secondary +>проекты</secondary +></indexterm> + +<para +>Проекты, созданные диспетчером проектов &automanag; упрощают использование стандартных инструментов разработки &GNU;. Это — <itemizedlist> + <listitem +><para +>лучший способ создания файлов <filename +>Makefile</filename +> и </para +></listitem> + <listitem +><para +>хороший и надёжный способ адаптации под разные системы с помощью создаваемого командой autoconf сценария <filename +>configure</filename +>. </para +></listitem> +</itemizedlist> +</para> +</sect2 +> <!-- automake-project --> + +<sect2 id="qmake-project"> +<title +>QMake</title> + +<indexterm zone="qmake-project"> + <primary +>проекты</primary> + <secondary +>qmake</secondary +></indexterm> +<indexterm zone="qmake-project"> + <primary +>qmake</primary> + <secondary +>проекты</secondary +></indexterm> + +<para +>Разработчикам, которые получают удовольствие от гибкости и удобства утилиты &Qt; qmake, &kdevelop; предлагает возможность управлять проектами, основанными на qmake (файлы *.pro) в &kdevelop;. </para> +<para +>Более подробную информацию о диспетчере проектов QMake можно найти в <quote +>Руководстве пользователя qmake</quote +>, которое включено в ваш дистрибутив, или же на странице <ulink url="http://doc.trolltech.com/" +>документации TrollTech</ulink +>. </para> +</sect2 +> <!-- qmake-project --> + +<sect2 id="cmake-project"> +<title +>Проекты CMake</title> + +<indexterm zone="cmake-project"> + <primary +>проекты</primary> + <secondary +>cmake</secondary +></indexterm> +<indexterm zone="cmake-project"> + <primary +>сmake</primary> + <secondary +>проекты</secondary +></indexterm> + +<para +>CMake будет главной системой для &kde; 4 и &kdevelop; уже предоставляет несколько шаблонов проектов на C и C++ собирающихся посредством CMake. Для сборки потребуется только, чтобы программа cmake была доступна через $<envar +>PATH</envar +>. </para> +<para +>Для создания нового проекта C или C++ в &kdevelop; выберите <menuchoice +><guimenu +>Проект</guimenu +><guimenuitem +>Создать проект...</guimenuitem +> <guimenuitem +>C или C++</guimenuitem +><guimenuitem +>Проект CMake</guimenuitem +><guimenuitem +>«Шаблон разделяемой библиотеки» или «Программа Hello world»</guimenuitem +></menuchoice +>. </para> +</sect2 +> <!-- cmake-project --> + +<sect2 id="ant-project"> +<title +>ANT (&Java;)</title> + +<indexterm zone="ant-project"> + <primary +>проекты</primary> + <secondary +>ant</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>ant</primary> + <secondary +>проекты</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>проекты</primary> + <secondary +>Java</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>Java</primary> + <secondary +>проекты</secondary +></indexterm> +<indexterm zone="ant-project"> + <primary +>разработка</primary> + <secondary +>Java</secondary +></indexterm> + +<para +>Разработчики, предпочитающие &Java;, возможно, захотят использовать диспетчер проектов Apache ANT. Для создания проекта Ant в &kdevelop; выберите <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Создать проект...</guimenuitem +> <guimenuitem +>Java</guimenuitem +> <guimenuitem +>Проект Ant</guimenuitem +> <guimenuitem +>Приложение</guimenuitem +></menuchoice +>. </para> +<para +>Подробности вы можете найти на <ulink url="http://ant.apache.org/" +>сайте проекта Apache Ant</ulink +>. </para> +</sect2 +> <!-- ant-project --> + +<sect2 id="custom-project"> +<title +>Особые проекты</title> + +<indexterm zone="custom-project"> + <primary +>проекты</primary> + <secondary +>особый</secondary +></indexterm> +<indexterm zone="custom-project"> + <primary +>особые проекты</primary +></indexterm> +<indexterm zone="custom-project"> + <primary +>Makefile</primary> + <secondary +>особые проекты</secondary +></indexterm> + +<para +>Если вы предпочитаете создавать файлы <filename +>Makefile</filename +> собственноручно, выберите этот тип. Это пригодится в проектах с нестандартной структурой или для полного контроля процесса сборки посредством <command +>make</command +>. </para> +<para +>Если вам <emphasis +>не нужна</emphasis +> такая гибкость, обратите внимание на &automanag; или другой диспетчер проектов, так как они упрощают процесс сборки и подготовку к распространению. </para> +</sect2 +> <!-- custom-project --> + +<sect2 id="makesystems-distribution"> +<title +>Распространение вашего приложения</title> + +<indexterm zone="makesystems-distribution"> + <primary +>распространение</primary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>приложение</primary> + <secondary +>распространение</secondary +></indexterm> +<indexterm zone="makesystems-distribution"> + <primary +>двоичные пакеты</primary +></indexterm> + +<para +>Для распространения ваших программ на конечной системе не требуется ничего кроме <itemizedlist> + <listitem +><para +>соответствующего компилятора,</para +></listitem> + <listitem +><para +>компоновщика и</para +></listitem> + <listitem +><para +>библиотек разработки (devel),</para +></listitem> +</itemizedlist> +</para> +<para +>что часто нужно хотя бы для приложений C++. Но вы также можете сразу распространять ваше приложение в виде <emphasis +>двоичных пакетов</emphasis +>. В этом случае наличие &kdevelop; на конечной системе не требуется. </para> +<para +>При распространении исходного кода вашего проекта мы рекомендуем включать в них также и <emphasis +>файл проекта</emphasis +> &kdevelop;. Это упростит изменение исходных файлов другими разработчиками, если они также используют &kdevelop;. </para> +<para +>Для проектов с <emphasis +>несколькими разработчиками</emphasis +>, работающими в разных местах, это необходимо в любом случае. </para> +<para +>Особенно в случае интернациональных программ, когда <emphasis +>переводчику</emphasis +> требуется работать с исходным кодом только для исправления некоторых его участков для полной поддержки локализации. </para> + +</sect2 +> <!-- makesystems-distribution --> + +</sect1 +> <!-- makesystems --> + +</chapter +> <!-- kdevelop-survey --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/nutshell.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/nutshell.docbook new file mode 100644 index 00000000000..69ab2185662 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/nutshell.docbook @@ -0,0 +1,378 @@ +<appendix id="nutshell"> +<title +>Вкратце — Советы и подсказки</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 +>В этой главе описывается начальная информация об оболочке. Кроме того, указаны советы по решению часто встречающихся проблем при работе с &kdevelop;. </para> +<para +>Для получения более подробной информации следуйте по ссылкам, с которых начинаются советы. </para> +<para +>Информация по этим темам: </para> +<simplelist> + <member +><link linkend="nutshellitem-look-and-feel" +>Внешний вид</link +></member> + <member +><link linkend="nutshellitem-projects" +>Проекты</link +></member> + <member +><link linkend="nutshellitem-compilation" +>Сборка</link +></member> + <member +><link linkend="nutshellitem-automake" +>&automanag;</link +></member> + <member +><link linkend="nutshellitem-compilemake" +>Проблемы компиляции</link +></member> + <member +><link linkend="nutshellitem-others" +>Другие темы</link +></member> +</simplelist> + +<variablelist id="nutshellitem-look-and-feel"> +<title +>Внешний вид</title> + +<varlistentry> +<term id="nutshell-ideal-tabs" +><link linkend="setup-ui-toolview" +>Уменьшение размера вкладок отображений в режиме IDEAl</link +></term> +<listitem> +<para +>По умолчанию &kdevelop; запускаются со слишком большими полосами названий вкладок по краям рабочей области. Вы можете изменить это через пункт меню <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> <guimenuitem +>Интерфейс пользователя</guimenuitem +></menuchoice +>).</para> +<para +>Если у вас более старая версия &kdevelop; 3, это можно изменить вводом параметра <computeroutput +>MDIStyle</computeroutput +> в разделе <computeroutput +>[UI]</computeroutput +> файла <filename +>$KDEHOME/share/config/kdeveloprc</filename +>:</para> + +<simplelist> +<member +><option +>MDIStyle=0</option +>: только значки</member> +<member +><option +>MDIStyle=1</option +>: только текст (по умолчанию)</member> +<!--<member +><computeroutput +>MDIStyle=2</computeroutput +>: icons only on smaller tabs (not very useful)</member +>--> +<member +><option +>MDIStyle=3</option +>: значки и текст</member> +</simplelist> +</listitem> +</varlistentry> + +<varlistentry +> <!-- ### remove this entry when the bug is repaired --> +<term id="nutshell-weird-style" +>Стиль отображения</term> +<listitem> +<para +>Если вы заметите разноцветные буквы в любом месте (на вкладках и т.д.) и &kdevelop;, похоже, использует неверный стиль отображения:</para> + +<itemizedlist> +<listitem +><para +>В <filename +>$<envar +>KDEHOME</envar +>/share/config/kdeveloprc</filename +> найдите строку с <quote +><computeroutput +>Style=Checked</computeroutput +></quote +>и удалите её. Перезапустите &kdevelop;. </para> +</listitem> +</itemizedlist> +<para +>(это может случится, если вы щёлкнули в файловом менеджере на файле с расширением .ui и &kdevelop; загрузил <application +>KUIViewer</application +> для показа &GUI;, описанного в этом файле).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-full-screen" +><link linkend="maximize-workspace" +>Полноэкранный режим</link +></term> +<listitem> +<para +>Для переключения в этот режим (или возврата из него), выберите пункт меню <menuchoice +> <guimenu +>Вид</guimenu +> <guimenuitem +>Полноэкранный режим</guimenuitem +> </menuchoice +> или нажмите <keycombo +> <keycap +>Ctrl</keycap +> <keycap +>Shift</keycap +> <keycap +>F</keycap +> </keycombo +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-hide-menu" +><link linkend="maximize-workspace" +>Скрытие и показ меню</link +></term> +<listitem> +<para +>Для того чтобы скрыть меню, выберите пункт <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Показать меню</guimenuitem +> </menuchoice +> или нажмите <keycombo +> <keycap +>Ctrl</keycap +> <keycap +>M</keycap +> </keycombo +>. Чтобы <emphasis +>вернуть</emphasis +> меню, повторно нажмите <keycombo +> <keycap +>Ctrl</keycap +> <keycap +>M</keycap +></keycombo +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title id="nutshellitem-projects" +>Проекты</title> +<varlistentry> +<term +><link linkend="new-projects" +>Создание нового проекта</link +></term> +<listitem> +<para +>Выбор пункта меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Новый проект...</guimenuitem +></menuchoice +> приведёт к запуску <link linkend="applicationwizard" +>Мастера приложений</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-new-custom-project" +>Создание специального проекта</term> +<listitem> +<para +>Нет прямого пути для создания специального проекта (проекта, который использует внешние файлы сборки). Воспользуйтесь пунктом меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Импортировать существующий проект</guimenuitem +></menuchoice +>. Не забудьте установить соответствующий <guilabel +>тип проекта</guilabel +>, название которого должно содержать <quote +>(Custom Makefiles)</quote +> в появившемся диалоге.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-project-options" +>Использование опций проекта</term> +<listitem> +<para +>После создания нового проекта не забудьте настроить его через пункт меню <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilation"> +<title +>Компиляция</title> +<varlistentry> +<term id="nutshell-compilemsg-detail" +><link +linkend="setup-main-compile" +>Не показывать детали в общем потоке сообщений</link +></term> +<listitem> +<para +>Если в процессе сборки вы не можете уследить за важной информацией, отображаемой в панели <guilabel +>вывода</guilabel +>, уменьшите объём показываемой информации правым щелчком в окне сообщений. </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-automake"> +<title +><link linkend="automake-manager" +>&automanag;</link +></title> + +<varlistentry> +<term +>Создание файлов в проекте</term> +<listitem> +<para +>Выберите подпроект в верхней части окна &automanag; и в контекстном меню группы (в нижней части окна), в которую нужно добавить файлы, выберите <guimenuitem +>Создать файл...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry id="nutshell-add-project-file"> +<term +>Добавление существующих файлов в проект</term> +<listitem> +<para +>Выберите подпроект в верхней части окна &automanag;, вызовите контекстное меню групп в нижней части и выберите <guimenuitem +>Добавить существующие файлы...</guimenuitem +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Удаление файла из проекта</term> +<listitem> +<para +>Выберите подпроект в верхней части окна &automanag;, вызовите контекстное меню групп в нижней части и выберите <guimenuitem +>Удалить</guimenuitem +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-compilemake"> +<title +>Ошибки компиляции/сборки</title> +<varlistentry> +<term id="nutshell-builddirproblems" +><link +linkend="defaultbuild-warning" +>Проект не собирается после переключения в/из цели по умолчанию</link +></term> +<listitem> +<para +>Это проблема с механизмом &automake;/&autoconf;. Если подменю <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Конфигурация сборки</guimenuitem +></menuchoice +>содержит три пункта:<guimenuitem +>default</guimenuitem +>, <guimenuitem +>optimized</guimenuitem +> и <guimenuitem +>debug</guimenuitem +>, переключитесь на default <emphasis +>или</emphasis +> на debug/optimized.</para> +<itemizedlist> +<listitem> +<para +>Если вы выбрали default, сборка debug/optimzed производиться не будет.</para> +</listitem> +<listitem> +<para +>Если вы выбрали debug/optimzed, сборка default производиться не будет.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="nutshell-autoconf-problem" +>Ошибка <quote +>Wrong <command +>autoconf</command +> version</quote +> и т.д.</term> +<listitem> +<para +>Есть несколько сообщений об ошибке относительно устаревших версий <application +>autoconf</application +> и т.д., приводящих к неправильной работе <command +>configure</command +>. Запустите <command +>autoreconf</command +> в каталоге с файлами <filename +>configure.in</filename +>. Эта команда попытается обновить информацию о файлах Сборочной системы &GNU;. Для подробностей см. <command +>man autoreconf</command +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist id="nutshellitem-others"> +<title +>Другие темы</title> +<varlistentry> +<term id="nutshell-others-files" +><link linkend="app-files" +>Конфигурационные файлы, используемые в &kdevelop;</link +></term> +<listitem> +<para +>В большинстве случаев, это не понадобится, но всё это может быть полезным если с программой что-то не так.</para> +</listitem +> +</varlistentry> +</variablelist> + +</appendix +> <!-- nutshell --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/plugin-tools.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/plugin-tools.docbook new file mode 100644 index 00000000000..1799996fb92 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/plugin-tools.docbook @@ -0,0 +1,725 @@ +<appendix id="plugin-tools"> +<title +>Подключаемый инструментарий</title> + +<indexterm zone="plugin-tools"> + <primary +>модули</primary +></indexterm> + +<para +>&kdevelop; содержит большое количество небольших инструментов, помогающих вам быстрее выполнить определённую задачу. Большинство из них реализованы в виде модулей. Это значит, что если они вам не нужны, вы можете их отключить их.</para> +<para +>Это также значит, что если если вам не хватает каких-то функций, которые по-идее должны присутствовать в программе подобного рода, возможно они уже реализованы в виде модуля, отключенного по умолчанию. Например, в меню Файл может присутствовать пункт "Быстрое открытие", но только если включен соответствующий параметр в окне Проект-Параметры проекта. </para> + +<para +>Все модули реализуют класс KDevPlugin, определяемый в lib/interfaces/kdevplugin.h. Далее приведена выдержка из комментария к нему.</para> + +<para +>Базовым классом для всех модулей KDevelop является KDevPlugin. Модуль - это компонент, загружаемый в среде KDevelop во время её запуска или по запросу. Каждый модуль имеет свою область действия, они делятся на: <itemizedlist> +<listitem +><simpara +>Базовые</simpara +></listitem> +<listitem +><simpara +>Глобальные</simpara +></listitem> +<listitem +><simpara +>Модули работы с проектами</simpara +></listitem> +</itemizedlist> +</para> + +<para +>Базовые (Core) модули - это глобальные модули с важной функциональностью, и поэтому их отключение в настройках невозможно.</para> + +<para +>Для глобальных модулей требуется только сама среда KDevelop, интерфейс KDevProject и какие-либо данные, относящиеся к проектам, ими не используются. Например, модуль uimode позволяет выбирать графический интерфейс для среды разработки. </para> + +<para +>Модули работы с проектами требуют наличия загруженного проекта и, обычно, сами загружаются/освобождаются вместе с проектами. Пример такого модуля - Менеджер Automake - загружается только при открытии проектов, использующих Automake для сборки. </para> + +<para +>Как уже сказано выше, базовые модули не могут быть отключены. Отключить и включить глобальные модули можно в окне <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>, на странице <guibutton +>Модули</guibutton +>. Модули работы с проектами включаются и отключаются в окне <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +>, также на странице <guibutton +>Модули</guibutton +>. Загруженные модули могут влиять на многие параметры KDevelop. Например, они могут добавлять новые меню, панели инструментов, комбинации клавиш. </para> + +<para +>Отключенные модули не добавляют свои элементы в меню и вообще не загружаются в память. </para> + + +<para +>Ниже приведен список модулей, сгенерированный сценарием listplugins.sh. Для каждого модуля имеется файл .desktop с информацией нём, такой как его имя и описание, оно и приводится в списке.</para> +<para +>Модули сгруппированы по области действия (базовые, глобальные, работы с проектами).</para> + +<para +>Базовые модули</para> +<itemizedlist> +<listitem +><formalpara id="KDevAppWizard"> +<title +>Мастер приложений</title> +<para +>Мастер приложений</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDiff"> +<title +>Просмотрщик различий</title> +<para +>Просмотрщик различий</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileCreate"> +<title +>Мастер создания файлов</title> +<para +>Мастер создания файлов</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFullScreen"> +<title +>Полноэкранный режим</title> +<para +>Полноэкранный режим</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTipOfDay"> +<title +>Полезный совет</title> +<para +>Полезный совет</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevUIChooser"> +<title +>Выбор интерфейса пользователя</title> +<para +>Предоставляет диалог выбора режима интерфейса пользователя.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevVCSManager"> +<title +>VCSManager</title> +<para +>Управление системами контроля версий </para +></formalpara +></listitem> +</itemizedlist> + +<para +>Глобальные модули</para> +<itemizedlist> +<listitem +><formalpara id="KDevAbbrev"> +<title +>Расшифровщик сокращений</title> +<para +>Предоставляет поддержку для настраиваемых сокращений - коротких слов, которые заменяются на часто используемые структуры кода.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDocumentation"> +<title +>Документирование</title> +<para +>Модуль документации позволяет упростить работу с документацией.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevfilelist"> +<title +>Список файлов</title> +<para +>Список открытых в данных момент файлов (полезно, когда они не помещаются на панели вкладок).</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevFileSelector"> +<title +>Селектор файлов</title> +<para +>Средство просмотра списка файлов с поддержкой работы по сети.</para +></formalpara +></listitem> +<listitem +><formalpara> +<title +>Фильтрация и вставка с помощью команд оболочки</title> +<para +>Предоставляет функции работы с текстом в редакторе с использованием утилит командной строки.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevGrepView"> +<title +>Интеграция Grep</title> +<para +>Интегрирует "find|grep" в KDevelop - позволяет производить быстрый поиск по нескольким файлам с использованием шаблонов или регулярных выражений.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevKonsoleView"> +<title +>Встроенный эмулятор терминала</title> +<para +>Предоставляет встроенную консоль для быстрого вызова командной строки.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevOpenWith"> +<title +>Дополнение меню "Открыть с помощью"</title> +<para +>Этот модуль предоставляет различные возможности открытия файлов, используя контекстные меню KDevelop.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevPartExplorer"> +<title +>Средство опроса компонентов</title> +<para +>Графическое средство для выполнения запросов KTrader о зарегистрированных службах.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevRegexpTest"> +<title +>Проверка регулярных выражений</title> +<para +>Средство для определения и проверки регулярных выражений на предмет соответствия их наиболее распространённым вариантам синтаксиса.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevReplace"> +<title +>Замена по проекту</title> +<para +>Этот модуль предоставляет интерактивные возможности поиска и замены по файлам в проекте. Сначала проводится поиск по строке или регулярному выражению, далее выбор с предпросмотром и применение замен из списка доступных вариантов.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevscripting"> +<title +>Сценарии</title> +<para +>Модуль сценариев позволяет автоматизировать работу с помощью KScript</para +></formalpara +></listitem> +<listitem +><formalpara id="Code_Snippets"> +<title +>Заготовки кода</title> +<para +>Модуль сохранения часто используемых частей кода в одно место для быстрого доступа к ним</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTextTools"> +<title +>Отображение структуры текста</title> +<para +>Отображает структуру документов в формате HTML и TEX, а также предоставляет возможности навигации по ним.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevTools"> +<title +>Дополнение меню инструментов</title> +<para +>Предоставляет возможности добавления в меню пунктов вызова внешних приложений.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevvalgrind"> +<title +>Интерфейс к Valgrind</title> +<para +>Valgrind - это средство нахождения проблем управления памятью в программах. http://developer.kde.org/~sewardj/</para +></formalpara +></listitem> +</itemizedlist> + +<para +>Модули работы с проектами</para> +<itemizedlist> +<listitem +><formalpara id="KDevannotation"> +<title +>Модуль Аннотации</title> +<para +>Модуль Аннотации</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevAStyle"> +<title +>Форматировщик исходного кода</title> +<para +>Модуль для форматирования кода по установленным правилам.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevBookmarks"> +<title +>Закладки</title> +<para +>Модуль, который обеспечивает навигацию и просмотр активных закладок в коде, а также их сохранение в проекте.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevClassView"> +<title +>Обзор классов</title> +<para +>Этот модуль отображает список классов в проекте, включая методы и атрибуты а также предоставляет возможности навигации по коду.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevcopyto"> +<title +>CopyTo</title> +<para +>Простой модуль передачи файлов на сервер, с помощью KIO.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevCTags2"> +<title +>Интерфейс к CTags</title> +<para +>CTags - это средство навигации по коду, поддерживающее многие языки. Будучи загружено, оно предоставляет контекстное меню для нахождения описания и определения типа выбранного символа, а также диалог запроса. http://ctags.sourceforge.net/</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevdistpart"> +<title +>Сборка и распространение пакетов</title> +<para +>Помогает в сборке и распространении пакетов программ. В данное время поддерживается только формат RPM.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevDoxygen"> +<title +>Поддержка Doxygen</title> +<para +>Модуль поддержки doxygen предоставляет возможности контроля генерации проектной документации на основе содержимого исходных файлов. Для использования необходим doxygen. Подробнее об этом смотрите на http://www.doxygen.org.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevQuickOpen"> +<title +>QuickOpen</title> +<para +>Предоставляет эффективное средство нахождения и открытия файлов и классов в больших проектах.</para +></formalpara +></listitem> +<listitem +><formalpara id="KDevSecurity"> +<title +>Проверка безопасности</title> +<para +>Проверка безопасности кода</para +></formalpara +></listitem> +</itemizedlist> + + + +<table id="table-project-parts"> +<title +>Модули &kdevelop; для управления проектом</title> +<tgroup cols="2" +><tbody> +<row> + <entry +>antproject</entry> + <entry +>ANT (&Java;)</entry> +</row> +<row> + <entry +>autoproject</entry> + <entry +>Automake</entry> +</row> +<row> + <entry +>customproject</entry> + <entry +>Специальный проект</entry> +</row> +<row> + <entry +>trollproject</entry> + <entry +>Менеджер проектов, основанный на QMake</entry> +</row> +</tbody +></tgroup> +</table> + + + +<table> +<title +>Модули &kdevelop; по поддержке языков программирования</title> +<tgroup cols="2"> +<tbody> +<row +><entry +>cppsupport</entry +><entry +>Поддержка C/C++</entry +></row> +<row +><entry +>fortransupport</entry +><entry +>Поддержка Fortran</entry +></row> +<row +><entry +>javasupport</entry +><entry +>Поддержка &Java;</entry +></row> +<row +><entry +>perlsupport</entry +><entry +>Поддержка Perl</entry +></row> +<row +><entry +>phpsupport</entry +><entry +>Поддержка PHP</entry +></row> +<row +><entry +>pythonsupport</entry +><entry +>Поддержка Python</entry +></row> +</tbody +></tgroup> +</table> + + +<para +>Далее некоторые модули будут рассмотрены более подробно</para> + +<itemizedlist> +<listitem> +<formalpara> +<title +>Модуль <command +>abbrev</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>abbrev</command +></primary +></indexterm> + +<para +>Этот модуль заменяет сокращения на часто используемые части кода. Он активируется нажатием <keycombo +><keycap +>Ctrl</keycap +> <keycap +>Пробел</keycap +></keycombo +>. Например, вы ввели <literal +>"ife"</literal +> в редактор языка C++. Теперь нажмите <keycombo +><keycap +>Ctrl</keycap +><keycap +>Пробел</keycap +></keycombo +>, и вы получите шаблон кода <literal +>if-else</literal +>. Набор поддерживаемых сокращений зависит от языка программирования. Например, для PHP вам вряд ли будут интересны сокращения кода для &Java;. </para> +</formalpara> + +<para +>Набор сокращений можно настраивать. Если модуль активен, то это можно сделать в окне <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>, вкладка <guibutton +>Сокращения</guibutton +> </para> +</listitem> + +<listitem> +<formalpara id="KDevFilter"> +<title +>Модуль <command +>filter</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>filter</command +></primary +></indexterm> + +<para +>Предоставляет две функции. <menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Выполнить команду</guimenuitem +></menuchoice +> позволяет ввести команду оболочки. После нажатия на кнопке <guibutton +>Запуск</guibutton +> вывод команды будет помещён в буфер обмена. </para> +</formalpara> + +<para +>Вторая функция доступна через пункт меню <menuchoice +><guimenu +>Сервис</guimenu +><guimenuitem +>Фильтровать выделение через команду...</guimenuitem +></menuchoice +>. Для её использования выделите текст в редакторе. Выделенный текст будет передан на стандартный ввод указанной команде, а в вместо него будет вставлен вывод команды. </para> + +<para +>Например, принаписании документации часто требуется ссылаться на команды меню. Например, для команды Скопировать из меню Правка нужно написать: <programlisting +><menuchoice><guimenu>Edit</guimenu><guimenuitem>Copy</guimenuitem></menuchoice></programlisting +>. Но значительно проще ввести просто "Edit - Copy" и оставить утомительную работу по вставку тегов компьютеру. Для этого напишем маленький сценарий и сохраним его в файле с именем mef в домашнем каталоге: <programlisting +>sed s/"^\(.*\) - \(.*\)\$"/"<menuchoice><guimenu>\1<\/guimenu><guimenuitem>\2<\/guimenuitem><\/menuchoice>"/</programlisting +> Сделаем его исполняемым. Теперь ведите и выделите текст "Edit - Copy", затем вызовите меню <menuchoice +><guimenu +>Сервис</guimenu +><guimenuitem +>Фильтровать выделение через команду...</guimenuitem +></menuchoice +> и запустите ~/mef. "Edit - Copy" будет заменено таким текстом: <programlisting +><menuchoice><guimenu>Edit</guimenu><guimenuitem>Copy</guimenuitem></menuchoice></programlisting> +</para> + + +</listitem> + +<listitem> +<formalpara> +<title +>Модуль &doxygen;</title> +<indexterm zone="plugin-tools" +><primary +>&doxygen;</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>средство документирования</primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>API-документация</primary +></indexterm> + +<para +>Упрощает использования средства API-документирования &doxygen; (<ulink url="http://www.doxygen.org" +></ulink +>). <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Запустить Doxygen</guimenuitem +></menuchoice +> приведёт к генерированию API-документации к текущему проекту, основываясь на конфигурационном файле <filename +>Doxyfile</filename +> в каталоге проекта. </para> +</formalpara> + +<para +>Более того, вы можете настроить &doxygen; через диалог <menuchoice +><guimenu +>Проект</guimenu +> <guimenuitem +>Параметры проекта...</guimenuitem +></menuchoice +>. Он подобен мастеру &doxywizard;. </para> +</listitem> + +<listitem> +<formalpara> +<title +>Модуль &ctags;</title> +<indexterm zone="plugin-tools" +><primary +>&ctags;</primary +></indexterm> + +<para +>Этот инструмент является расширением обзора классов, основанным на программе ctags, и поддерживает больше языков программирования. </para> +</formalpara> + +<para +>Активируйте модуль через меню <menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>CTags...</guimenuitem +></menuchoice +>. При первом запуске, вам будет предложено создать базу данных поиска. При этом в каталоге проекта будет создан файл <filename +>tags</filename +>. Это текстовый файл со списком идентификаторов исходных файлов проекта. </para> + +<para +>В такой базе данных вы можете выполнять поиск двумя способами: если <guilabel +>Совпадение с регулярным выражением</guilabel +> включено, вводимый вами текст будет интерпретироваться как регулярное выражение (стандарта POSIX) и сравниваться в существующими идентификаторами. Например, текст <literal +>.*Widget</literal +> приведёт к поиску всех идентификаторов, заканчивающихся на <literal +>Widget</literal +>. Иначе, поиск будет дословным. </para> + +<para +>При поиске будет выводиться список подходящих идентификаторов, сопровождающийся номерами строк с их объявлениями. Чтобы перейти к объявлению, щёлкните на идентификаторе. </para> + +<para +>Для некоторых языков программирования, &ctags; распознаёт разные типы идентификаторов. например, в Python есть классы и функции, и вы можете выборочно искать отдельно либо классы, либо функции. </para> + +<para +>База данных не обновляется каждый раз при изменении исходников. Поэтому вам нужно самостоятельно периодично обновлять её с помощью кнопки <guibutton +>Обновить</guibutton +>. </para> +</listitem> + +<listitem> +<formalpara> +<title +>Модуль <command +>astyle</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>astyle</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +><application +>Оформление исходного кода</application +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>выставление отступов</primary +></indexterm> + +<para +>Astyle - это модуль для форматирования кода в соответствии с определённым набором файлов. </para> +</formalpara> +</listitem> + +<listitem> +<formalpara> +<title +>Модуль <command +>regexptest</command +></title> +<indexterm zone="plugin-tools" +><primary +><command +>regexptest</command +></primary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>отладка</primary +><secondary +>регулярные выражения</secondary +></indexterm> +<indexterm zone="plugin-tools" +><primary +>регулярные выражения</primary +><secondary +>отладка</secondary +></indexterm> + +<para +>Составление регулярных выражений может быть долгой работой, обычно первая попытка поиска по введённому выражению выводит много результатов. Модуль regexptest позволяет вам напрямую отслеживать изменения в регулярном выражении. он активируется через <menuchoice +><guimenu +>Сервис</guimenu +> <guimenuitem +>Проверить регулярное выражение...</guimenuitem +></menuchoice +>. </para> +</formalpara> + +<para +>Вы можете выбрать синтаксис регулярного выражения. На текущий момент поддерживается стандарт POSIX, используемый командой &grep;, и расширенный стандарт POSIX, используемый в команде &egrep;. </para> + +<para +>При вводе регулярного выражения, вам сразу будет сообщаться об ошибках в нём. Введением текста в <guilabel +>Строка для проверки</guilabel +>, вы можете проверить, подходит ли текст введённому вами выражению. В частности, если регулярно выражение содержит группы, такие как <literal +>([a-z])</literal +>, содержание подходящих подгрупп будет отображено в списке. </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-ru/docs/kdevelop/kdevelop/project-advanced.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/project-advanced.docbook new file mode 100644 index 00000000000..2930a6ee5ad --- /dev/null +++ b/tde-i18n-ru/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 +>Расширенное управление проектами</title> + +<sect1 id="oldprojects"> +<title +>Загрузка проектов</title> + +<sect2 id="loading-recent-project"> +<title +>Загрузка последнего открытого проекта</title> + +<para +>(... в процессе написания ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="open-recent-project.png" format="PNG"/> + </imageobject> + <caption +><para +>Как открыть последний проект </para +></caption> + </mediaobject> +</screenshot> + + +</sect2 +> <!-- loading-recent-project --> + +<sect2 id="loading-project"> +<title +>Загрузка существующих проектов</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- loading-project --> + +<sect2 id="converting-projects"> +<title +>Преобразование старых проектов KDevelop в новый формат</title> + +<para +>&kdevelop; позволяет открывать старые файлы проектов KDevelop 2.x и сохранять их в новом формате. Для этого перейдите в <guimenuitem +>Открыть проект...</guimenuitem +> и выберите <guilabel +>Файлы проекта KDevelop 2</guilabel +> в поле <guilabel +>Фильтр:</guilabel +>. Затем выбрите файл проекта. Он будет преобразован в новый формат и будет сохранён как <guilabel +>Файл проекта &kdevelop;</guilabel +>. </para> + +</sect2 +> <!-- converting-projects --> + +<sect2 id="importing-projects"> +<title +>Импортирование существующего проекта</title> + +<para +>Для импортирования папки в &kdevelop;, выберите <guimenuitem +>Импорт существующего каталога</guimenuitem +> из меню <guimenu +>Проект</guimenu +>: </para> + +<figure id="screenshot-importdirectory" float="1"> +<title +>Диалог импортирования папки</title> +<mediaobject> +<imageobject +><imagedata fileref="importdirectory.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- importing-projects --> + +</sect1 +> <!-- oldprojects --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="project-options"> +<title +>Настройка проекта</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- project-options --> + +</chapter +> <!-- projects-advanced --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/project-management.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/project-management.docbook new file mode 100644 index 00000000000..86c6714acc7 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/project-management.docbook @@ -0,0 +1,1275 @@ +<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 +>Сборка и управление проектом</title> + +<para +>Здесь затрагиваются только компилируемые языки, такие как C++, &Java;, фортран. </para> + +<para +>В руководстве затронуты такие темы:</para> +<itemizedlist> + <listitem +><para +><link linkend="automake-manager-summary" +>Краткое описание &automanag;</link +> </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation" +>Использование менеджера Automake</link +> содержит основы работы &automanag;, </para +></listitem> +</itemizedlist> + +<sect1 id="automake-manager-summary"> +<title +>Краткое описание &automanag;</title> + +<para +>В главе <link linkend="unixdev-buildsystems" +>Системы сборки</link +> был изложен краткий обзор систем сборки, часто использующихся в UNIX. Здесь они рассматриваются подробнее. </para> +<para +>Существует некоторая неразбериха с тем, как называть программы такого типа, в &GNU; описаниях Automake, Autoconf и Libtool, называет их <quote +>системами сборки</quote +> (build systems). QMake называет себя <quote +>средством для написания файлов Makefile для разных компиляторов и платформ</quote +> (<quote +>a tool to write Makefiles for different compilers and platforms</quote +>) . В KDE также часто используется термин <quote +>системы управления проектом</quote +> (<quote +>project management systems</quote +>). Мы будем использовать последний для обозначения встроенных окружений в &kdevelop;, которые организуют и собирают проекты. В этой секции, однако, он будет использоваться в смысле <quote +>автоматизированные системы сборки</quote +>. </para> + +<sect2 id="automake-manager-summary-buildsys"> +<title +>Потребность в автоматизированных системах сборки</title> + +<para +>Если у вас простая программа <quote +>Hello World</quote +>, написанная на чистом C, вы можете скомпилировать и скомпоновать её с помощью &gcc; <parameter +>-o hello hello.c</parameter +> и запустить командой <command +>./hello</command +>, так что вам даже не и не нужен <filename +>Makefile</filename +>. </para> +<para +>Если же у вас программа, написанная на C, с несколькими модулями и заголовочными файлами, и вы сделали её исключительно для себя, вам будет нужен простой <filename +>Makefile</filename +>, который легко написать собственноручно (см. <userinput +>info make</userinput +>). </para> +<para +>Проблемы возникают когда: </para> +<itemizedlist> + <listitem +><para +>Ваш исходный код, документация, графическое оформление, звуки, файлы интернационализации, файлы с информацией и т.д. расположены в более чем одном каталоге, </para +></listitem> + <listitem +><para +>У вас иерархическая структура каталогов с исходниками, </para +></listitem> + <listitem +><para +>Вы используете библиотеки, не являющиеся стандартными библиотеками набора &UNIX;, такие как &Qt; или библиотеки &kde;, </para +></listitem> + <listitem +><para +>Вы используете пред-процессор для генерирования части исходного кода, например, MOC pre-compiler от Qt, </para +></listitem> + <listitem +><para +>Вы хотите распространять ваше приложение в Сети, для людей с другим дистрибутивом &UNIX;/&Linux;, набором программного и аппаратного обеспечения, </para +></listitem> + <listitem +><para +>Вам нужна автоматическая установка и удаление установленной программы, </para +></listitem> + <listitem +><para +>Вы хотите сделать своё приложение частью &kde;. </para +></listitem> +</itemizedlist> + +<para +>Если хотя бы одна из перечисленных ситуаций применима к вам, тогда вам потребуется <emphasis +>система сборки</emphasis +>. В примере выше мы использовали &gcc; для компиляции и сборки программы <quote +>Hello World</quote +>, но не все компиляторы C имеют название <quote +>&gcc;</quote +>. Так что, если вы будете распространять своё приложение, вполне может найтись человек, имеющий другой компилятор в своей системе. И здесь на помощь приходят файлы Makefile, содержащие такие данные, как, например, имя компилятора в данной системе. </para> +<para +>Система сборки заботится о том, чтобы ваше приложение можно было автоматически скомпилировать на любой совместимой платформе. </para> +<itemizedlist> + <listitem +><para +>Она найдёт расположение библиотек, </para +></listitem> + <listitem +><para +>скомпилирует и </para +></listitem> + <listitem +><para +>установит компоненты вашего приложения </para +></listitem> + <listitem +><para +>в корректные каталоги системы </para +></listitem> +</itemizedlist> + +<para +>Коротко, система сборки предлагает простой и безопасный метод компилирования и установки вашего приложения в конечной системе. как было сказано <link linkend="makesystems" +>выше</link +>, &kdevelop; поставляется с тремя автоматизированными системами сборки и возможностью создавать файлы Makefile вручную: </para> +<itemizedlist> + <listitem +><para +><link linkend="automake-project" +>Automake</link +>, использующий стандартные инструменты разработки &GNU;. </para +></listitem> + <listitem +><para +><link linkend="qmake-project" +>QMake</link +>, использующий менеджер проектов trolltech. </para +></listitem> + <listitem +><para +><link linkend="ant-project" +>ANT</link +>, использующий менеджер проекта Apache ANT (для &Java;) </para +></listitem> + <listitem +><para +><link linkend="custom-project" +>Специальный</link +> позволит вам писать файлы <filename +>Makefile</filename +> самостоятельно. </para +></listitem> +</itemizedlist> + +<important> +<para +>Один из этих вариантов вам нужно будет выбрать при создании нового проекта, и <emphasis +>выбор будет трудно сменить позже</emphasis +>, так что заранее определите, какая система сборки наиболее подходит вам. </para> +</important> + +</sect2 +> <!-- automake-manager-summary-buildsys --> + +<sect2 id="automake-references"> +<title +>Руководства по Autoconf/Automake/Libtool</title> +<para +>Доступно несколько руководств по системе сборки &GNU; (<command +>Autoconf</command +>, <command +>Automake</command +> и <command +>Libtool</command +>), используемой менеджером &automanag;. </para> +<itemizedlist> + <listitem +><para +>Краткое <ulink url="http://www.asmodeus.com.ua/library/soft/GNU/autoconf/autoconf-ru_toc.html" +>руководство autoconf</ulink +> (<ulink url="http://www.kdevelop.org/index.html?filename=tutorial_autoconf.html" +>оригинал на английском</ulink +>), написанное Кристофером Картисом, и доступное на домашней странице KDevelop. В нём делается акцент на основные этапы редактирования <filename +>Makefile</filename +>. </para +></listitem> + <listitem +><para +>Более подробное руководство можно найти в большом сборнике руководств <ulink url="http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual_toc.html" +><quote +>Разработка ПО с GNU</quote +></ulink +>. </para +></listitem> + <listitem +><para +>Книжку про <quote +>Autoconf, Automake, and Libtool</quote +> можно найти по адресу <ulink url="http://sources.redhat.com/autobook" +></ulink +>. Это наиболее полное введение в &GNU; Autotools. Также прочитать о GNU Automake на русском вы можете здесь: <ulink url="http://www.asmodeus.com.ua/library/soft/GNU/automake/automake-ru_toc.html" +></ulink +> </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-references --> + +<sect2 id="automake-manager-basics"> +<title +>Что делает &automanag;?</title> + +<para +><link linkend="applicationwizard" +>Мастеру приложений</link +> потребуется инициализировать файлы <filename +>Makefile.am</filename +> при создании проекта, использующего Систему сборки &GNU;, например <menuchoice +><guimenuitem +>C++</guimenuitem +> <guimenuitem +>KDE</guimenuitem +></menuchoice +>. В процессе разработки, &automanag; создаёт файлы <filename +>Makefile.am</filename +> для проектов, использующих Систему сборки &GNU;, и сопровождает их. </para> +<para +>В каждом каталоге вашего проекта, содержащего файлы, которые требуется компилировать или устанавливать, находится один файл <filename +>Makefile.am</filename +>. В нём находятся указания ко компиляции, сборки и установке, а также список подкаталогов, также имеющих <filename +>Makefile.am</filename +>. </para> + +<note +><para +>Каталоги вашего проекта и исходники могут быть разбросаны в структуре любой глубины, или же в подкаталогах одного уровня. </para +></note> + +<para +>Цель Системы сборки &GNU; — создать структуру исходников, которую можно скомпилировать, построить и установить на любой системе &UNIX; или &Linux;, используя простые команды: </para> + +<screen +>./configure +make +make install # с правами "root". +</screen> + +<para +>и удалить установленную программу командой <command +>make uninstall</command +> (также от root). </para> + +<para +>Как это работает? <command +>configure</command +> — это сценарий, который <itemizedlist> + <listitem +><para +>собирает информацию о системе, на которой работает, например, какой компилятор в ней установлен и какие библиотеки доступны и где, а потом </para +></listitem> + <listitem +><para +>рекурсивно создаёт файлы <filename +>Makefile</filename +> используя <filename +>Makefile.in</filename +> как шаблон. </para +></listitem> +</itemizedlist> +</para> +<para +>Файлы <filename +>Makefile.in</filename +> — это <quote +>входные</quote +> файлы, шаблоны с базовой информацией для файлов <filename +>Makefile</filename +>, которые будут созданы из них путём заполнения в них определённой, зависимой от системы, информации. Всё это происходит под управлением <command +>Automake</command +>. </para> +<para +>Процесс перехода от <filename +>Makefile.am</filename +> (<filename +>.am</filename +> означает шаблон <quote +>Automake</quote +>) к <filename +>Makefile</filename +> управляется &promanag;, через утилиту <command +>Autoconf</command +>, макрос <command +>M4</command +> и пр. </para> +<para +>Когда выполняется <command +>make</command +>, он автоматически собирает информацию об окружении, такую как путь к компиляторам и библиотекам. Аналогично, <command +>make install</command +> перемещает компоненты приложения, такие как исполнимые файлы, документацию, в корректные места окружения. </para> + +<para +>Если вы распространяете ваше приложение как <quote +>tarball</quote +> (архив, который можно создать в KDevelop), в нём будут включены файлы <filename +>Makefile.in</filename +> и скрипт <filename +>configure</filename +>, чтобы его можно было собрать и установить на системе, где нет <command +>Automake</command +>, <command +>Autoconf</command +> или KDevelop. Файлы <filename +>Makefile.am</filename +> также включаются, для того случая, когда потребуется безболезненно вмешаться в исходный код. </para> +<note +><para +>Правила усложняются если вы также распространяете программу через хранилище, основанное на web, такое как . &cvs; &kde; </para +></note> + +</sect2 +> <!-- automake-manager-basics --> + +<sect2 id="automake-manager-basics-summary"> +<title +>Подытожим возможности Automake Manager</title> + +<itemizedlist> + <listitem +><para +>Генерирование файлов <filename +>Makefile.am</filename +> в подкаталогах (называемых <quote +>subprojects</quote +>). </para +></listitem> + <listitem +><para +>Обновление файлов <filename +>Makefile.am</filename +> при изменении структуры проекта. </para +></listitem> + <listitem +><para +>Обновление файлов <filename +>Makefile.am</filename +> при добавлении или удалении файлов из проекта. </para +></listitem> + <listitem +><para +>Настройка параметров сборки или установки отдельных файлов, изменение <filename +>Makefile.am</filename +> в соответствии с этим. </para +></listitem> + <listitem +><para +>Настройка параметров, используемых при сборке и установке (например имена библиотек). </para +></listitem> +</itemizedlist> + +</sect2 +> <!-- automake-manager-basics-summary --> + +<sect2 id="automake-file-contents"> +<title +>Содержание файлов Automake</title> + +<para +>Файл <filename +>Makefile.am</filename +> содержит строки с именами переменных, знаком равно и списком файлов или значением параметра. Имена <quote +>переменных</quote +> состоят из двух частей, например <varname +>bin_PROGRAMS</varname +>, <varname +>myapp_SOURCES</varname +> или <varname +>kdelnk_DATA</varname +>. Вторая часть называется <emphasis +>первичной</emphasis +> (<emphasis +>primary</emphasis +>) и представляет что-то, что нужно собрать или установить. Первая часть называется <emphasis +>приставкой</emphasis +> (<emphasis +>prefix</emphasis +>) и представляет: </para> +<itemizedlist> + <listitem +><para +><emphasis +>Каталог</emphasis +>, куда нужно устанавливать (например <filename +>bin</filename +>), </para +></listitem> + <listitem +><para +><emphasis +>Спецификатор</emphasis +> (например <varname +>myapp</varname +> для <varname +>SOURCES</varname +>, это говорит о том, что исходные файлы, перечисленные поле <varname +>myapp_SOURCES</varname +> входят в сборку <filename +>myapp</filename +>), </para +></listitem> + <listitem +><para +>Специальная <emphasis +>приставка</emphasis +> <varname +>noinst</varname +> (<quote +>no installation</quote +>), используется для перечисления заголовочных файлов (<filename +>.h</filename +>), </para +></listitem> + <listitem +><para +>Специальная приставка <varname +>EXTRA</varname +> для вещей, зависящих от конфигурации системы. </para +></listitem> +</itemizedlist> + +<para +>Для подробностей о <command +>Automake</command +> и файлах <filename +>Makefile.am</filename +> см. <userinput +>info Automake</userinput +>. </para> +<para +>&automanag; создаёт и обновляет переменные и их значения. Далее приведён пример <filename +>Makefile.am</filename +> для приложения с названием <filename +>myapp</filename +>. </para> + +<screen +>## Makefile.am для myapp + +# устанавливаемая программы. её имя используется +# для всех переменных Makefile.am +bin_PROGRAMS = myapp + +# путь include для X, qt и KDE +INCLUDES = $(all_includes) + +# пути к библиотекам. +myapp_LDFLAGS = $(KDE_RPATH) $(all_libraries) + +# библиотеки, с которыми компоновать. +myapp_LDADD = $(LIB_KFILE) $(LIB_KDEPRINT) + +# что компилировать для myapp +myapp_SOURCES = main.cpp myapp.cpp myappview.cpp + +# заголовки +noinst_HEADERS = myapp.h myappview.h + +# разрешить automoc обрабатывать все исходные meta файлы (moc) +METASOURCES = AUTO + +KDE_ICON = myapp + +# куда пойдёт файл kdelnk +kdelnkdir = $(kde_appsdir)/Utilities +kdelnk_DATA = myapp.desktop + +# куда пойдёт XML-GUI файл ресурсов +rcdir = $(kde_datadir)/myapp +rc_DATA = myappui.rc + +AM_CXXFLAGS = -DMY_C++_PREPROCESSOR_OPTION +</screen> + +<para +>Как вы видите, большинство пунктов справа — набор символов в форме <varname +>$(xxx)</varname +>. Это <emphasis +>переменные окружения</emphasis +>, определённые в собственно окружении &kde;. Они заменяются действительными значениями когда <command +>./configure</command +> генерирует файлы <filename +>Makefile</filename +> из шаблонов. </para> + +<para +>Также, команда <command +>./configure --help</command +> отобразит список вещей, которые вы можете изменить во время сборки/компиляции. В частности, команда: <screen> +./configure --prefix=/где/вы/желаете +</screen +> будет перенаправлять устанавливаемые файлы куда вы захотите, сменой значения внутренней переменной <varname +>$(prefix)</varname +> на <filename class="directory" +>/где/вы/желаете</filename +>. </para> + +</sect2 +> <!-- automake-file-contents --> + +</sect1 +> <!-- automake-manager-summary --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="automake-manager-operation"> +<title +>Использование менеджера Automake</title> + +<para +>В этой главе вы найдёте краткое описание элементов &automanag; и как их использовать. В частности: <itemizedlist> + <listitem +><para +><link linkend="automake-manager-operation-window" +>Окно &automanag;</link +> описывает структуру окна &automanag;. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-survey-window" +>Элементы верхнего окна</link +>. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-detail-window" +>Элементы нижнего окна с деталями</link +>. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-navigate" +>Навигация по &automanag;</link +> содержит список основных действий, которые вы можете выполнять в &automanag;. </para +></listitem> + <listitem +><para +><link linkend="automake-manager-operation-popups" +>Контекстные меню в &automanag;</link +> описывает окна, появляющиеся после выбора какого-либо действия в &automanag;. </para +></listitem> +</itemizedlist> +</para> + +<sect2 id="automake-manager-operation-window"> +<title +>Окно &automanag;</title> + +<informaltable frame="none"> +<tgroup cols="2" +><tbody +><row> + <entry +><inlinemediaobject> + <imageobject> + <imagedata fileref="automakemanager.png" format="PNG"/> + </imageobject> + </inlinemediaobject +></entry> + <entry valign="top" +><itemizedlist> + <listitem +><para +>&automanag; запускается в отдельном окне. Верхняя часть называется <emphasis +>Верхним окном</emphasis +>, а нижняя — <emphasis +>окном деталей</emphasis +>. Между ними располагается разделитель, который можно перетаскивать для регулировки размеров верхнего и нижнего окон. В режиме IDEAl можно также изменять ширину окна. </para +></listitem> + <listitem +><para +>Вверху каждого окна есть <emphasis +>панель инструментов</emphasis +>, кнопки на которой активируются, когда выбирается элемент из списка в окне. роме того действия над элементами можно совершать через их контекстные меню. </para +></listitem> + <listitem +><para +>В режиме IDEAl также есть две дополнительные кнопки, слева на заголовке окна – треугольная стрелка вправо и точка. Первая <emphasis +>закрывает окно</emphasis +>, а вторая <emphasis +>сохраняет его открытым</emphasis +> даже если активировано другое окно &kdevelop; (иначе окно &automanag; будет автоматически закрыто сразу после передачи фокуса на другое окно). </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect2 +> <!-- automake-manager-operation-window --> + +<sect2 id="automake-manager-operation-survey-window"> +<title +>Окно Overall View</title> + +<para +>Окно Overall View содержит древовидный список каталогов вашего проекта, содержащих программные файлы, документацию или другие данные. В каждом из них находится файл <filename +>Makefile.am</filename +>, называемый в &automanag; <emphasis +>подпроектом</emphasis +> (<emphasis +>subproject</emphasis +>). Как показано на рисунке, есть три стандартных подпроекта: </para> + +<itemizedlist> + <listitem +><para +><filename +>src</filename +> – исходники вашего приложения, </para +></listitem> + <listitem +><para +><filename +>doc</filename +> – руководство приложения (Handbook), </para +></listitem> + <listitem +><para +><filename +>po</filename +> – файлы перевода, содержащие перевод всей текстовой информации вашего приложения (например, заголовки окон, пункты меню, названия кнопок). </para +></listitem> +</itemizedlist> + +<para +>Обратите внимание, что <filename +>doc</filename +> всегда содержит подкаталог <filename +>en</filename +>. Это потому, что основной язык документации KDE — английский (en). Если ваше приложение станет частью KDE, команды перевода KDE переведёт его с английского на другие языки, размещаемые в других каталогах, например <filename +>ru</filename +> (русский) или <filename +>uk</filename +> (украинский). Сообщения в файле <filename +>po</filename +> также будут переведены, что позволит использовать ваше приложение людям, не знающим английский. </para> + +<note +><para +>Подкаталоги <filename +>doc</filename +> и <filename +>po</filename +> служат для разных целей. <filename +>doc</filename +> содержит <emphasis +>документацию</emphasis +>, такую как руководство, <filename +>po</filename +> содержит сообщения для перевода <emphasis +>пользовательского интерфейса</emphasis +>, встроенного в исходники данного приложения. </para +></note> + +<para +>Окно Общее просмотр (Overall View) также служит как средство навигации. Если вы выберите подпроект, подробности о нём будут отображены в окне Detail View. </para> + +</sect2 +> <!-- automake-manager-operation-survey-window --> + +<sect2 id="automake-manager-operation-detail-window"> +<title +>Окно Detail View</title> + +<para +>Окно Detail View содержит древовидный список файлов подпроекта, выделенного в окне Overall View, а также правила компиляции, сборки и установки для них. </para> + +<sect3> +<title +>Цели</title> + +<para +>Древовидный список в Detail View имеет два уровня. Верхний состоит из т.н. <emphasis +>целей</emphasis +> (target) &automanag;, и нижний содержит списки файлов, составляющие каждую цель. </para> + +<para +>Принцип цели &automanag; отличается от цели <filename +>Makefile</filename +>. Коротко:</para> +<itemizedlist> + <listitem +><para +>Определение способа компиляции, сборки и установки набора файлов, известно как <emphasis +>цель</emphasis +> в &automanag;, и как <emphasis +>переменная</emphasis +> в <command +>Automake</command +>. </para +></listitem> + <listitem +><para +><emphasis +>Цель</emphasis +> в <command +>make</command +> — параметр команды <command +>make</command +> (например <userinput +>make install</userinput +>, <userinput +>make clean</userinput +>). </para> + <para +>Тем не менее, все переменные файла <filename +>Makefile.am</filename +> представляют<emphasis +>подцель</emphasis +> (sub-target) в <command +>make</command +>. </para +></listitem> +</itemizedlist> + +</sect3> +</sect2 +> <!-- automake-manager-operation-detail-window --> + +<sect2 id="automake-manager-operation-navigate"> +<title +>Навигация в &automanag;</title> + +<para +>При щелчке в окне Overall View или Detail View на <symbol +>+</symbol +> или <symbol +>-</symbol +>, рядом с именем подпроекта или цели, приведёт развёртыванию или свёртыванию дерева. </para> + +<variablelist> +<varlistentry> +<term +>Jткрытие файла для правки</term> +<listitem> +<para +>При щелчке на файле в окне "Детали", он откроется в окне редактирования . &kdevelop;</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Активирование кнопок &automanag;</term> +<listitem> +<para +>При щелчке на имени подпроекта в окне Overall View или цели в Detail View, активируются некоторые кнопки панели инструментов.</para> + +<note> + <para +>Рекомендуется использовать <emphasis +>контекстные меню</emphasis +> вместо панели инструментов, т.к. так легче видеть и понимать что вы делаете. </para> + <para +>Действия над подпроектами и целями широко действуют на структуру, компиляцию, сборку и установку вашего приложения. </para> +</note> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Контекстные меню</term> +<listitem> +<para +>В контекстном меню подпроекта, цели или файла можно выбрать действия над ними, например, добавить цель в подпроект, добавить или удалить файл из цели (не с диска). </para> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- automake-manager-operation-navigate --> + +<sect2 id="automake-manager-operation-popups"> +<title +>Контекстные меню &automanag;</title> + +<para +>Далее изложен обзор контекстных меню &automanag;. Более подробное их описание вы найдёте в следующей главе. </para> +<!-- ### add a link to this chapter when ready --> + +<sect3 id="automake-manager-operation-popups-file"> +<title +>Контекстное меню файла</title> + +<para +>На рисунке ниже показано контекстное меню для значка <filename +>hi-16app-myapp.png</filename +> из цели <guilabel +>Icon data in myapp</guilabel +> подпроекта <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 +>Действие по умолчанию — <guimenuitem +>Удалить</guimenuitem +> файл из цели. </para +></listitem> + <listitem +><para +>Подменю <guimenuitem +>CVS</guimenuitem +> содержит действия над файлом, касающиеся CVS. </para +></listitem> + <listitem +><para +><guimenuitem +>Открыть в</guimenuitem +> позволяет открыть файл любой командой (например, в нашем случае, мы можем открыть значок в <application +>KIcon</application +>). </para +></listitem> + <listitem +><para +><guimenuitem +>Perforce</guimenuitem +> — проприетарный пакет, аналогичный CVS. </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-file --> + +<sect3 id="automake-manager-operation-popups-target"> +<title +>Контекстное меню цели</title> + +<para +>На рисунке ниже, выбрана цель <guilabel +>myapp (Program in bin)</guilabel +> подпроекта <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 +><guimenuitem +>Параметры</guimenuitem +> только для целей, содержащих исходные файлы. Вы сможете указать ключи компоновщика и пути, по которым производить поиск библиотек, а также вы можете указать список библиотек, с которыми нужно компоновать ваше приложение. </para +></listitem> + <listitem +><para +><guimenuitem +>Создать файл</guimenuitem +> приведёт к созданию нового файла. </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить существующие файлы</guimenuitem +> приведёт к добавлению файла. </para +></listitem> + <listitem +><para +><guimenuitem +>Удалить</guimenuitem +> приведёт к удалению цели и всех её файлов с диска. </para +></listitem> + <listitem +><para +><guimenuitem +>Сделать цель активной</guimenuitem +> только для целей, содержащих исходные файлы. Активирует текущую цель — новые файлы всегда добавляются в неё </para +></listitem> + <listitem +><para +><guimenuitem +>Собрать цель</guimenuitem +> приведёт к сборке текущей цели. </para +></listitem> + </itemizedlist +></entry> +</row +></tbody +></tgroup> +</informaltable> + +</sect3 +> <!-- automake-manager-operation-popups-target --> + +<sect3 id="automake-manager-operation-popups-subproject"> +<title +>Контекстное меню подпроекта</title> + +<para +>Меню <emphasis +>подпроекта</emphasis +> позволяет делать масштабные изменения в структуре вашего проекта, а также способ его компиляции, сборки и установки. </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 +><guimenuitem +>Параметры</guimenuitem +> содержит параметры компиляции, сборки и установки проекта. В появившемся диалоге будут вкладки Compiler, Includes, Prefixes и Build Order. </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить подпроект</guimenuitem +> создаст новый подкаталог в структуре проекта и начальный файл Makefile.am. </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить цель</guimenuitem +> откроет диалог, где вы сможете установить правила компиляции, сборки и установки файлов подпроекта. </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить сервис</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить приложение</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Добавить существующие подпроекты...</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Удалить подпроект</guimenuitem +> — правильный способ удаления подпроекта. При этом также "подправятся" файлы <filename +>Makefile.am</filename +>. Кроме того, будет предложено удалить все файлы, находящиеся в подкаталоге. Используйте это с осторожностью. </para +></listitem> + <listitem +><para +><guimenuitem +>Собрать</guimenuitem +> приведёт к сборке текущего подпроекта. </para +></listitem> + <listitem +><para +><guimenuitem +>Пересоздать</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Очистить</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Установить</guimenuitem +> (... в процессе написания ...) </para +></listitem> + <listitem +><para +><guimenuitem +>Установить (с правами root)</guimenuitem +> (... в процессе написания ...) </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 +>Automake</title> +<indexterm zone="autoproject" +><primary +><command +>autoproject</command +></primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&automake;</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&autoconf;</primary +></indexterm> +<indexterm zone="autoproject" +><primary +>&libtool;</primary +></indexterm> + +<para +>(... в процессе написания ...) </para> + + +<sect2 id="autoconf"> +<title +>Autoconf</title> +<indexterm zone="autoconf" +><primary +>скрипт <filename +>configure</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +>скрипт <filename +>config.status</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +><filename +>Makefile.in</filename +></primary +></indexterm> +<indexterm zone="autoconf" +><primary +><filename +>config.h.in</filename +></primary +></indexterm> + +<para +><filename +>Makefile.in</filename +> в <filename +>Makefile</filename +> </para> + +<programlisting +>prefix = @prefix@ +INSTALL = @INSTALL@ +build_triplet = @build@ +CXX = @CXX@ +</programlisting> + +<programlisting +>prefix = /home/bernd/kde3 +INSTALL = /usr/bin/ginstall -c -p +build_triplet = i686-pc-linux-gnu +CXX = g++ +</programlisting> + +<para +><filename +>config.h.in</filename +> в <filename +>config.h</filename +> </para> + +<programlisting +>/* Define if you have libz */ +#undef HAVE_LIBZ +/* Размер `int', как подсчитано sizeof. */ +#undef SIZEOF_INT +</programlisting> + +<programlisting +>/* Define if you have libz */ +#define HAVE_LIBZ 1 +/* Размер `int', как подсчитано sizeof. */ +#define SIZEOF_INT 4 +</programlisting> + +</sect2 +> <!-- autoconf --> + + +<sect2 id="automake"> +<title +>Automake</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!--automake --> + + +<sect2 id="automake-manager"> +<title +>&automanag;</title> + +<figure id="screenshot-automake-manager" float="1"> +<title +>Снимок экрана менеджера automake</title> +<mediaobject> +<imageobject +><imagedata fileref="automake-manager.png"/></imageobject> +</mediaobject> +</figure> + +</sect2 +> <!-- automake-manager --> + + +<sect2 id="automakelibrary"> +<title +>Сборка и установка библиотек</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 и сценарии сборки</title> +<indexterm zone="customproject" +><primary +><filename +>Makefile</filename +></primary +></indexterm> +<indexterm zone="customproject" +><primary +><filename +>build.xml</filename +></primary +></indexterm> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- customproject --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="compileroptions"> +<title +>Параметры компилятора</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- compileroptions --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="makeoptions"> +<title +>Параметры make</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- makeoptions --> + +</chapter +> <!-- project-management --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/setup.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/setup.docbook new file mode 100644 index 00000000000..8e4d18c630a --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/setup.docbook @@ -0,0 +1,2923 @@ +<chapter id="setup"> + +<chapterinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</chapterinfo> + +<title +>Настройка &kdevelop;</title> + +<para +>&kdevelop; — очень мощная и гибкая среда, которая предлагает много способов подстроить её под себя. Для начала настройки перейдите в меню <menuchoice +><guimenu +>Настройка</guimenu +><guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>. Появившееся диалоговое окно настройки будет содержать слева названия разделов, а справа — параметры; набор параметров зависит от выбранного раздела. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-select.png" format="PNG"/> + </imageobject> +<textobject> +<phrase +>Выбор параметра</phrase> +</textobject> + <caption +><para +>Выбор параметра </para +></caption> + </mediaobject> +</screenshot> + +<para +>В данном руководстве эти параметры будут описаны в другом порядке, в обобщённых разделах <link linkend="setup-general" +>Общая настройка</link +>, <link linkend="setup-docu" +>Настройка документации</link +> и <link linkend="setup-advanced" +>Расширенная настройка</link +>, что делает чтение более понятным. </para> +<para +>Для того, чтобы сразу перейти к описанию определённых параметров, воспользуйтесь следующими ссылками. </para> + +<simplelist> + <member +><link linkend="setup-main" +>Главное</link +></member> + <member +><link linkend="setup-ui" +>Интерфейс пользователя</link +></member> + <member +><link linkend="setup-templates" +>Шаблоны файлов</link +></member> +<member +><link linkend="setup-editor" +>Редактор</link +></member> + <member +><link linkend="setup-abbrev" +>Автозамена</link +></member> + <member +><link linkend="setup-scripting" +>Поддержка скриптов</link +></member> + <member +><link linkend="setup-menu-standard" +>Меню инструментов</link +></member> + <member +><link linkend="setup-menu-external" +>Внешние инструменты</link +></member> + <member +><link linkend="setup-docu" +>Документация</link +></member> + <member +><link linkend="setup-snippets" +>Заготовки</link +></member> + <member +><link linkend="setup-file-list" +>Файлы</link +></member> + <member +><link linkend="setup-file-selector" +>Файлы</link +></member> + <member +><link linkend="setup-cpp-generator" +>Генератор классов C++</link +></member> + <member +><link linkend="setup-format" +>Форматирование</link +></member> + <member +><link linkend="setup-cpp-parsing" +>Анализ кода C++</link +></member> +</simplelist> + +<sect1 id="setup-general"> +<title +>Общая настройка</title> + +<para +>Здесь описаны самые общие действия по настройке &kdevelop;: </para> +<itemizedlist> + <listitem +><para> + <link linkend="setup-main" +>Основные параметры</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-ui" +>Выбор интерфейса пользователя</link> + </para +></listitem> + <listitem> + <itemizedlist> +<title +>Редактирование исходного кода</title> + <listitem +><para> + <link linkend="setup-editor" +>Выбор редактора</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-format" +>Выбор стиля форматирования кода</link> + </para +></listitem> + <listitem +><para> + <link linkend="setup-snippets" +>Настройка заготовок кода</link> + </para +></listitem> + </itemizedlist> + </listitem> + <listitem +><para> + <link linkend="setup-file-selector" +>Настройка инструмента выбора файлов</link> + </para +></listitem> +</itemizedlist> + +<sect2 id="setup-main"> +<title +>Основные параметры</title> + +<para +>Раздел <guilabel +>Главное</guilabel +> позволяет настроить внешний вид и поведение &kdevelop;, которые в повседневной работе будут меняться редко: </para> + +<variablelist> +<varlistentry> +<term +>Основные параметры проекта, в частности:</term> +<listitem> + <itemizedlist> + <listitem +><para +>определение <link linkend="setup-main-projects" +>каталога проектов по умолчанию</link +>, в котором будут создаваться новые проекты; </para +></listitem> + <listitem +><para +>выбор возможности <link linkend="setup-main-preload" +>загружать автоматически</link +> последний открытый проект при запуске &kdevelop;. </para +></listitem> + </itemizedlist> + </listitem> +</varlistentry> + +<varlistentry> +<term +>Выбор шрифта для наиболее часто используемых информационных окон, называемых:</term> +<listitem> + +<itemizedlist> +<listitem> +<para +>Панель <link linkend="setup-main-messages-font" +>Сообщения</link +>, используемая для показа хода компиляции, к примеру, и</para> +</listitem> +<listitem> +<para +>Панель вывода приложения, показывающая ошибки и вывод запущенного приложения.</para> +</listitem> +</itemizedlist> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Некоторые общие параметры внешнего вида строк на панели <guilabel +>Сообщения</guilabel +>:</term> +<listitem> + <itemizedlist> +<listitem> +<para +><link linkend="setup-main-wrap" +>переносить</link +> ли длинные строки; </para> +</listitem> +<listitem> +<para +>показывать ли <link linkend="setup-main-navigation" +>сообщения о смене каталогов и выводимые сообщения</link +> команды <command +>make</command +>.</para> +</listitem> +</itemizedlist> + +<para +><link linkend="setup-main-compile" +>Уровень детализации</link +> сообщений о ходе компиляции на панели <guilabel +>Сообщения</guilabel +>.</para> +</listitem> +</varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-general.png" format="PNG"/> + </imageobject> + <caption +><para +>Раздел «Главное» </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term id="setup-main-preload" +><guilabel +>Загружать последний открытый проект при запуске</guilabel +></term> +<listitem> +<para +>Установите флажок, чтобы после запуска среды продолжить работу над проектом, с которым вы работали в предыдущий раз. При следующем запуске &kdevelop; автоматически загрузит этот проект. При этом будет восстановлено также и его состояние (открытые файлы, панели инструментов и так далее). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-projects"> +<guilabel +>Каталог проектов по умолчанию</guilabel +></term> +<listitem> +<para +>По умолчанию &kdevelop; использует основной родительский каталог для всех новых проектов. Можно указать абсолютный путь к родительскому каталогу в поле ввода или воспользоваться кнопкой выбора каталога.</para> +<note +><para +>Тем не менее, всегда можно изменить родительский каталог для создаваемого проекта в <link linkend="applicationwizard" +>Мастере создания проекта</link +>. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-messages-font" +><guilabel +>Шрифт окна</guilabel +></term> +<listitem> +<para +>Панель <guilabel +>вывода приложения</guilabel +> используется для вывода информации и ошибок приложений, запущенных из &kdevelop;. Эту информацию приложения обычно выводят в консоли, если запускаются отдельно. Поэтому нет необходимости переключаться из среды при тестировании разрабатываемого приложения. </para> +<para +>Чтобы выбрать подходящий для окна <guilabel +>Сообщения</guilabel +> шрифт, нажмите кнопку <guilabel +>Выбрать...</guilabel +>, слева от которой показывается текущий шрифт (на рисунке выше это «Luxi Sans»). Появится стандартное диалоговое окно &kde; <guilabel +>Выбор шрифта</guilabel +>, в котором можно подобрать нужный. </para> +<note +><para +>При первом запуске &kdevelop; использует шрифт из текущей настройки пользователя &kde;. <emphasis +>Эти параметры зафиксированы</emphasis +>, так что если в <guilabel +>Центре управления</guilabel +> произвести изменения в разделе <menuchoice +><guimenuitem +>Внешний вид и темы</guimenuitem +> <guimenuitem +>Шрифты</guimenuitem +></menuchoice +>, то это не повлияет на шрифты &kdevelop;. Для смены шрифта нужно принудительно выбрать шрифт окна <guilabel +>Сообщения</guilabel +>. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-compile" +><guilabel +>Вывод компилятора</guilabel +></term> +<listitem> +<para +>&kdevelop; фильтрует выводимую в панели <guilabel +>Сообщения</guilabel +> информацию во время процесса сборки. Можно управлять уровнем детализации сообщений &kdevelop; с помощью контекстного меню этой панели. </para> +<variablelist> +<varlistentry> +<term +><guilabel +>Очень краткий</guilabel +></term> +<listitem +><para +>Выводить только предупреждения, ошибки и названия компилируемых файлов. </para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Краткий</guilabel +></term> +<listitem +><para +>Подавлять все флаги компилятора и привести выводимую информацию в более понятную форму. </para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Полный</guilabel +></term> +<listitem +><para +>Выводить все сообщения компилятора в неизменной форме. </para +></listitem> +</varlistentry> +</variablelist> + +<tip +><para +>Существует другой способ переключить детализацию вывода компилятора. Просто щёлкните правой кнопкой на панели <guilabel +>Сообщения</guilabel +> и выберите из контекстного меню подходящий уровень детализации. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-wrap" +><guilabel +>Перенос строк</guilabel +></term> +<listitem> +<para +>По умолчанию &kdevelop; переносит длинные строки в окне <guilabel +>Сообщения</guilabel +>, так что важная информация может быть воспринята не сразу. В некоторых случаях это затрудняет чтение длинных выводимых сообщений. Сняв флажок с этого параметра можно запретить перенос длинных строк. </para> +<tip +><para +>Существует и другой способ переключить перенос строк. Щёлкните правой кнопкой мыши в панели <guilabel +>Сообщения</guilabel +> и выберите в контекстном меню <guimenuitem +>Перенос строк</guimenuitem +>. </para +></tip> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-main-navigation" +><guilabel +>Сообщения о смене каталога</guilabel +></term> +<listitem> +<para +>Программа <command +>make</command +> обычно выводит сообщения типа «Entering directory» (вход в каталог) и «Leaving directory» (выход из каталога) при смене каталогов в ходе компиляции. Поскольку это засоряет выводимую информацию в панели <guilabel +>Сообщения</guilabel +>, &kdevelop; по умолчанию подавляет такие сообщения. Отметьте этот параметр, чтобы включить вывод информации о смене каталогов во время работы программы <command +>make</command +>. </para> +<note +><para +>Включение этого параметра повлияет только на новые сообщения. Выключение параметра не приведёт к удалению уже полученных сообщений. </para +></note> +</listitem> +</varlistentry> + +<varlistentry> +<term id="ui-designer-integration" +><guilabel +>Интеграция с редактором форм</guilabel +></term> +<listitem> +<para +>Этот переключатель позволяет выбрать способ открытия файлов <filename +>.ui</filename +>. &kdevelop; поставляется с собственным редактором форм, KDevDesigner, который может быть запущен или как встроенная, или как отдельная программа. Для редактирования файлов <filename +>.ui</filename +> можно также использовать Qt Designer. </para> +<itemizedlist> + <listitem +><para +>Использовать встроенный редактор форм &kdevelop; </para +><para +>Использование собственного редактора форм, встроенного в &kdevelop;</para +></listitem> + <listitem +><para +>Запускать редактор форм &kdevelop; как отдельную программу </para +><para +>Приложение KDevDesigner будет запущено отдельно в своём окне.</para> +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kdevdesigner.png" format="PNG"/> + </imageobject> + <caption +><para +>KDevDesigner в отдельном окне </para +></caption> + </mediaobject> +</screenshot> +</listitem> + <listitem +><para +>Запускать Qt Designer </para +><para +>Qt Designer из пакета Qt будет запущен отдельно при открытии в &kdevelop; файла <filename +>.ui</filename +>.</para +></listitem> +</itemizedlist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="terminal-emulation" +><guilabel +>Эмулятор терминала</guilabel +></term> +<listitem> +<para +>Здесь можно выбрать, какой терминал будет встроен в KDevelop. </para> +<itemizedlist> + <listitem +><para +>Использовать параметры KDE </para +><para +>Использовать параметры &kde;, установленные в Центре управления в разделе <guilabel +>Компоненты</guilabel +> <guilabel +>Компоненты по умолчанию</guilabel +>, в котором выбирается эмулятор терминала по умолчанию, используемый во всех требующих терминал приложениях &kde;.</para +></listitem> + <listitem +><para +>Другой: </para +><para +>Выберите другой эмулятор терминала, отличный от терминала по умолчанию.</para> +</listitem> +</itemizedlist> +</listitem> +</varlistentry> + +</variablelist> + +</sect2 +> <!-- setup-main --> + +<sect2 id="setup-ui"> +<title +>Выбор интерфейса пользователя</title> + +<indexterm zone="setup-ui"> + <primary +>интерфейс пользователя</primary> + <secondary +>переключение интерфейсов</secondary +></indexterm> +<indexterm zone="setup-ui"> + <primary +>переключение интерфейсов пользователя</primary +></indexterm> + +<para +>Как уже было сказано в разделе <link linkend="uimodes-survey" +>Интерфейсы</link +>, есть пять разных способов настроить рабочую область &kdevelop;: </para> +<itemizedlist> + <listitem +><para> + <link linkend="ideal-desc" +>Простой IDEAl</link> + </para +><para +>Это упрощённая версия интерфейса пользователя IDEA. Она разработана для простоты и удобства. В ней не используются вкладки инструментов.</para +></listitem> + <listitem +><para> + <link linkend="ideal-desc" +>Режим IDEAl</link> + </para +><para +>Это клон пользовательского интерфейса IDEA, установленный по умолчанию и похожий на режим Вкладки.</para +></listitem> + <listitem +><para> + <link linkend="mdi-desc" +>Дочерние окна</link> + </para +><para +>Все инструменты размещены в главном окне. Окна редактора и просмотра будут похожими на окна верхнего уровня внутри рабочей области главного окна. Типичным примером этого режима является интерфейс пользователя в Microsoft Visual Studio 6.0.</para +></listitem> + <listitem +><para> + <link linkend="tabbed-desc" +>Вкладки</link> + </para +><para +>Все инструменты размещены в главном окне. Окна редактора и просмотра будут совмещены в одно окно с соответствующими вкладками. Типичным примером этого режима интерфейса пользователя является KDEStudio, ещё одна среда по разработке на C++ в мире KDE.</para +></listitem> + <listitem +><para> + <link linkend="toplevel-desc" +>Отдельные окна</link> + </para +><para +>Все окна редактора, просмотра и панели будут выглядеть как обычные отдельные окна (непосредственно на рабочем столе). Главный инструмент управления будет содержать только меню, панели инструментов и строку состояния. Типичным примером этого режима интерфейса пользователя является Borland Delphi 6.0.</para +></listitem> +</itemizedlist> + +<para +>Чтобы переключить режим интерфейса, выберите в меню <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> </menuchoice +>. В появившемся диалоговом окне выберите раздел <guilabel +>Интерфейс пользователя</guilabel +>. В появившемся окне справа будут следующие параметры.</para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="select-user-interface-0.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Выбор режима интерфейса пользователя</phrase +></textobject> + <caption +><para +>Выбор режима интерфейса пользователя </para +></caption> + </mediaobject> +</screenshot> + +<para +>Выберите режим интерфейса пользователя и нажмите <guibutton +>OK</guibutton +>. </para> + +<note +><para +>Чтобы изменения вступили в силу необходимо перезапустить &kdevelop;. </para +></note> + +<para +>При выборе режимов <guilabel +>Простой IDEAl</guilabel +>, <guilabel +>IDEAl</guilabel +> или <guilabel +>Вкладки</guilabel +> станут доступными ещё две секции параметров: <link linkend="setup-ui-tabs" +>Использовать вкладки</link +> и <link linkend="setup-ui-hover" +>Кнопка закрытия при наведении</link +>. Эти параметры позволяют настроить условия, при которых вкладки будут показываться сверху окон документов, а также возможность закрыть документ щелчком на значке вкладки. </para> + +<para +>В режимах <guilabel +>Простой IDEAl</guilabel +> и <guilabel +>IDEAl</guilabel +> будет доступна только одна секция, <link linkend="setup-ui-toolview" +>Вкладки инструментов</link +>, в котором можно менять размер вкладок инструментов, расположенных по сторонам от рабочей области. </para> + +<variablelist> +<varlistentry> +<term id="setup-ui-tabs" +>Настройка показа вкладок документов</term> +<listitem> +<para +>По умолчанию, в режимах «Вкладки» и «IDEAl» в верхней части окон документов показываются вкладки с названиями, с помощью которых щелчком левой кнопки мыши можно легко переключаться между разными документами. Чтобы получить в рабочей области больше свободного пространства для окон документов можно изменить внешний вид в секции <guilabel +>Использовать вкладки</guilabel +>. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Всегда</guilabel +></term> + <listitem +><para +>Значение по умолчанию — показывать вкладку, содержащую значок и имя файла вверху окна документа в основной рабочей области &kdevelop;. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>При нескольких совпадениях</guilabel +></term> + <listitem +><para +>Не показывать вкладку, если открыт только один документ. Однако, если открыто более одного документа, &kdevelop; будет показывать панель вкладок так же, как и при выборе значения <guilabel +>Всегда</guilabel +>. Можно выбрать этот режим, если большую часть времени работа ведётся над одним документом, это увеличит рабочее место по вертикали. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Никогда</guilabel +></term> + <listitem +><para +>Никогда не показывать секцию вкладок документов. Это полезно, если вы редко используете мышь для переключения между открытыми документами. Этот режим предоставляет больше места по вертикали для всех окон документов. Чтобы выбрать другое окно документа или закрыть окно, используйте меню <guimenu +>Окно</guimenu +>. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-hover" +>Настройка закрытия файла щелчком по его вкладке</term> +<listitem> +<para +>Настроив &kdevelop; на показ панелей вкладок документов в режимах «Всегда» или «Когда в основной части рабочей области открыто более одного документа», можно кроме возможности выбора документа добавить вкладкам дополнительную функциональность. Для этого используйте секцию <guilabel +>Кнопка закрытия при наведении</guilabel +>. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Нет</guilabel +></term> + <listitem +><para +>Стандартное поведение. Дополнительная функциональность отсутствует. Вкладки используются только для переключения на документ щелчком левой кнопки мыши. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Да</guilabel +></term> + <listitem +><para +>При выборе этого значения &kdevelop; позволит закрывать окно документа щелчком левой кнопки мыши. Наведите указатель мыши на маленький значок в левой части вкладки. Он изменится на значок закрытия. Щёлкните левой кнопкой мыши на этом значке и &kdevelop; закроет соответствующий документ. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Да, с задержкой</guilabel +></term> + <listitem +><para +>После выбора этого значения &kdevelop; позволит закрывать окно документа так же, как при выборе предыдущего значения <guilabel +>Да</guilabel +>. Значок не сменится немедленно, до появления значка закрытия пройдёт немного времени. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-ui-toolview" +>Настройка вкладок инструментов</term> +<listitem> +<para +>Раздел <guilabel +>Вкладки инструментов</guilabel +> доступен только в режиме IDEAl. Используйте эти переключатели для настройки внешнего вида вкладок инструментов, окружающих в этом режиме рабочую область. </para> + +<variablelist> +<varlistentry> + <term +><guilabel +>Значки</guilabel +></term> + <listitem> + <para +>Каждая вкладка будет содержать только значок. Этот режим может быть предпочтителен, если вы работаете на мониторе с низким разрешением. </para> + <para +>Однако, сами значки не всегда понятны. Чтобы узнать, что означает тот или иной значок, наведите курсор мыши на вкладку и подождите. Появится короткая подсказка с названием инструмента. </para> + </listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Текст</guilabel +></term> + <listitem +><para +>Режим обзора инструментов по умолчанию. На каждой вкладки панелей показываются названия соответствующих инструментов. </para +></listitem> +</varlistentry> +<varlistentry> + <term +><guilabel +>Текст и значки</guilabel +></term> + <listitem +><para +>Если стандартное текстовая вкладка инструментов кажется слишком плоским и если вы работаете на мониторе с высоким разрешением, то можно выбрать этот пункт. Названия соответствующих инструментов будут показываться на всех вкладках, кроме того, рядом с названиями для удобства различения будут показываться значки. В качестве примера смотрите раздел <link linkend="folded-toolview-tabs" +>Свёрнутые вкладки</link +>. </para +></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Свёрнутые вкладки</term> +<listitem> +<para +>Если в выбранном режиме IDEAl вкладки инструментов содержат текст (со значками или без них), то не стоит волноваться, что некоторые из них будут скрыты другими вкладками инструментов. Если нижняя вкладка инструментов занимает больше места, чем имеется для показа всех вертикальных вкладок, то они расположатся вокруг, как показано на этом рисунке: </para> + +<screenshot> + <mediaobject id="folded-toolview-tabs"> + <imageobject> + <imagedata fileref="folded-tabs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Вкладки инструментов не перекрываются другими окнами</phrase +></textobject> + <caption +><para +>Вкладки инструментов не перекрываются другими окнами </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>Активная вкладка инструментов должна быть показана зафиксированной (режим неперекрываемости), разделяя рабочую область с другими окнами, чтобы предотвратить перекрытие. Нажмите на небольшой квадратик на границе окна для такой фиксации, как показано в примере. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-ui --> + +<sect2 id="setup-templates"> +<title +>Шаблоны файлов</title> +<!--TODO fill--><para +></para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-file-templates.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка шаблонов файлов</phrase +></textobject> + <caption +><para +>Настройка шаблонов файлов </para +></caption> + </mediaobject> +</screenshot> +</sect2 +> <!-- setup-templates --> + +<sect2 id="setup-editor"> +<title +>Выбор редактора</title> + +<para +>&kdevelop; позволяет выбрать редактор для редактирования исходного кода. Выберите в окне <guilabel +>Настройка KDevelop</guilabel +> раздел <guilabel +>Редактор</guilabel +>. Справа будут показаны следующие параметры: </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-editor.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Редактор</phrase +></textobject> + <caption +><para +>Редактор </para +></caption> + </mediaobject> +</screenshot> + +<para +>Чтобы выбрать новый редактор, щёлкните по небольшому треугольнику в поле выпадающего списка. В зависимости от установленных в данной версии &kde; редакторов будет предложен список доступных (смотрите важное <link linkend="setup-editor-kparts" +>замечание</link +> ниже). Выберите предпочитаемый редактор из списка, затем нажмите <guilabel +>OK</guilabel +>. В настоящий момент существует два варианта: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Встроенный текстовый редактор</guilabel +></term> + <listitem +><para +>Стандартный редактор для &kde; — <application +>Kate</application +>. </para +></listitem> + </varlistentry> + + <varlistentry> + <term +><guilabel +>Редактор из Qt Designer</guilabel +></term> + <listitem +><para +>Этот редактор поставляется &Qt; с компонентом <application +>Designer</application +>. </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Редакторы полностью интегрированы в среду &kdevelop;. В частности, возможно перейти к строке исходного кода простым щелчком на сообщении об ошибке в панели <guilabel +>Сообщения</guilabel +>. </para> + +<note +><para +>Смена редактора никак не повлияет на уже открытые файлы. Есть два варианта решения проблемы. Или закройте все открытые окна с текстом и откройте их заново. Или же просто закройте весь проект и откройте его снова. Окна автоматически будут открыты в интерфейсе нового текстового редактора. </para +></note> + +<important id="setup-editor-kparts" +><para +>KDevelop позволяет использовать интерфейсы редакторов, зарегистрированных в &kde;, и поддерживающих интерфейс KatePart. Если отсутствует один из вариантов, показанных выше, проверьте, установлен ли в &kde; соответствующий компонент KPart. </para +></important> + +<para +>При изменениях извне:</para> +<variablelist> + <varlistentry> + <term +><guilabel +>Ничего не делать</guilabel +></term> + <listitem +><para +>Файл будет отмечен как изменённый внешне, и при сохранении попросят подтвердить его перезапись. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Предупредить пользователя</guilabel +></term> + <listitem +><para +>Диалоговое окно предупредит пользователя, что файл был изменён, и предложит открыть файл заново. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Автоматически перезагрузить файл</guilabel +></term> + <listitem +><para +>Все не изменённые файлы будут открыты заново, в остальных случаях будет выведено предупреждение. </para +></listitem> + </varlistentry> +</variablelist> +</sect2 +> <!-- setup-editor --> + +<sect2 id="setup-abbrev"> +<title +>Автозамена для завершения слов</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- setup-abbrev --> + +<sect2 id="setup-scripting"> +<title +>Поддержка скриптов</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- setup-scripting --> + +<sect2 id="setup-menu-standard"> +<title +>Добавление приложений &kde; в меню «Сервис»</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- setup-menu-standard Tools Menu--> + +<sect2 id="setup-menu-external"> +<title +>Добавление внешних приложений в меню</title> + +<para +>(... в процессе написания ...) </para> + +<sect3 id="setup-menu-external-tools"> +<title +>Добавление в меню «Сервис»</title> + +<para +>(... в процессе написания ...) </para> +</sect3 +> <!-- setup-menu-external-tools --> + +<sect3 id="setup-menu-external-filecontext"> +<title +>Добавление в контекстное меню файлов</title> + +<para +>(... в процессе написания ...) </para> +</sect3 +> <!-- setup-menu-external-filecontext --> + +<sect3 id="setup-menu-external-dircontext"> +<title +>Добавление в контекстное меню каталогов</title> + +<para +>(... в процессе написания ...) </para> +</sect3 +> <!-- setup-menu-external-dircontext --> + +</sect2 +> <!-- setup-menu-external --> + +<sect2 id="setup-format"> +<title +>Выбор стиля форматирования исходного кода</title> + +<para +>&kdevelop; автоматически форматирует исходный код в выбранном стиле. Этот стиль легко настроить. </para> + +<note +><para +>Переформатирование исходного кода в настоящий момент доступно только для языков C, C++ и &Java;. Его невозможно использовать для скриптовых языков, например для PHP. Это вызвано тем, что &kdevelop; для реализации этой возможности использует программу <ulink url="http://astyle.sourceforge.net/" +>astyle</ulink +>. </para +></note> + +<para +>Чтобы настроить специфический стиль форматирования, выберите пункт меню <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>. В появившемся диалоговом окне <guilabel +>Настройка KDevelop</guilabel +> выберите слева раздел <guilabel +>Форматирование</guilabel +>. В этом разделе четыре вкладки: <link linkend="setup-format-general" +>Главное</link +>, <guilabel +>Табуляция и скобки</guilabel +>, <link linkend="setup-format-indent" +>Отступы</link +> и <link linkend="setup-format-other" +>Форматирование</link +>. </para> + +<tip +><para +>Изменение стиля влияет только на вновь вводимый код. Чтобы изменить оформление уже существующего исходного текста воспользуйтесь меню <menuchoice +><guimenu +>Сервис</guimenu +><guimenuitem +>Форматировать исходный код</guimenuitem +></menuchoice +>. </para +></tip> + +<note +><para +>Результат этих определений стиля зависит от используемого <link linkend="setup-editor" +>редактора</link +>. На данный момент большинство параметров ориентировано на «Встроенный текстовый редактор». Некоторые другие редакторы (например, редактор Qt) могут использовать свои собственные параметры настройки. В этом случае необходимо поэкспериментировать, чтобы выяснить результат изменяемых здесь параметров. </para +></note> + +<warning +><para +>Могут быть также несовместимости между имеющимися здесь параметрами оформления и используемым вами нестандартным редактором, что в редких случаях может даже испортить файлы. Убедитесь, что сохранили резервные копии файлов перед проверкой новых параметров форматирования с таким редактором. </para +></warning> + +<sect3 id="setup-format-general"> +<title +>Общая настройка форматирования</title> + +<para +>Вкладка <guilabel +>Главное</guilabel +> в разделе <guilabel +>Форматирование</guilabel +> предлагает пять предустановленных стилей оформления. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Общая настройка стиля форматирования</phrase +></textobject> + <caption +><para +>Общая настройка стиля форматирования </para +></caption> + </mediaobject> +</screenshot> + +<para +>Пример стиля форматирования исходного кода показывается справа. Если ни один из предлагаемых стилей не подходит, то можно выбрать стиль <guilabel +>Определяемый пользователем</guilabel +> и настроить параметры форматирования кода самостоятельно на ставших доступными трёх других вкладках. </para> + +<note +><para +>В настоящее время пример форматирования показывается только для готовых стилей. При определении собственных стилей примеры не будут доступны. Необходимо экспериментировать с имеющимся исходным кодом для получения желаемого форматирования. </para +></note> + +</sect3 +> <!-- setup-format-general --> + +<sect3 id="setup-format-indent"> +<title +>Настройка стиля выставления отступов</title> + +<para +>Правильная расстановка отступов — главный критерий удобочитаемости исходного кода. Вкладка <guilabel +>Отступы</guilabel +> раздела <guilabel +>Форматирование</guilabel +> содержит параметры выставления отступов, сгруппированных в две секции. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-indent.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка стиля выставления отступов</phrase +></textobject> + <caption +><para +>Настройка стиля выставления отступов </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Параметры по умолчанию</term> +<listitem> +<para +>Представленный выбор форматирования сделает текст похожим на стиль 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" +>Установка размера отступов</term> +<listitem> +<para +>Переключатель в секции <guilabel +>Табуляция</guilabel +> определяет символы, которые будут использоваться для выставления отступов.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Использовать табуляцию</guilabel +></term> + <listitem> + <para +>Вставлять символ табуляции для каждого уровня. Длина табуляции определена в настройках редактора (обычно 8 или 4 символа). </para> + <note +><para +>Процедура определения ширины табуляции зависит от выбранного редактора в разделе <link linkend="setup-editor" +>Редактор</link +>. Обратитесь к документации по редактору. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Использовать пробелы</guilabel +></term> + <listitem +><para +>При выборе этого пункта редактор будет вставлять пробелы для каждого уровня отступа. Измените число пробелов от 2 по умолчанию до нужного количества. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Требующие отступов конструкции</term> +<listitem> +<para +>Здесь определяется, какие элементы (C/C++) будут форматированы отступами сверх используемого уровня отступов.</para> + +<para +>По умолчанию это только пространства имён (<guilabel +>namespace</guilabel +>) и метки (<guilabel +>label</guilabel +>). Можно поэкспериментировать с разными вариантами, чтобы настроить их как требуется.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Переносы длинных строк</term> +<listitem> +<para +>Эти параметры отвечают за те случаи, когда при форматировании кода автоматически переносятся длинные строки. Это происходит в двух случаях: когда установлен слишком большой размер отступа, что на глубоких уровнях отступа требует много места для строки, или есть условные операторы, имеющие дополнительный отступ. </para> + +<note +><para +>Это применяется к <emphasis +>статическому переносу слов</emphasis +> только при превышении лимита ширины строки. Если редактор настроен на динамический перенос слов (который возможен в интерфейсе редактора &kate;), то эти параметры не применяются. </para +></note> + +<variablelist> + <varlistentry> + <term +><guilabel +>Максимальная длина выражения</guilabel +></term> + <listitem> + <para +>Ограничить максимально возможный размер отступа для длинных строк, чтобы оставить достаточно места для сохранения удобочитаемости текста. Строки не будут содержать дополнительные отступы при превышении указанного здесь числа. </para> + <para +>Значение по умолчанию — 40 символов (половина стандартной страницы из 80 знаков). При необходимости можно увеличить это число (например, при печати исходного кода в альбомном режиме). Можно также сократить это число для увеличения полей страницы при печати. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Минимум в условном выражении</guilabel +></term> + <listitem> + <para +>Условные операторы или код, следующий, например, за оператором присваивания, должны получать дополнительный отступ в длинных строках. Его величину можно указать здесь. </para> + <para +>По умолчанию указано в два раза больше текущего, означающее, что условные операторы получат дополнительный отступ в размере стандартного отступа, размер которого указан в секции <link linkend="setup-format-indent-filling" +>Табуляция</link +>. Можно изменить дополнительный отступ на другую фиксированную величину (включая ноль), используя стрелки или введя нужное значение вручную. </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-format-indent --> + +<sect3 id="setup-format-other"> +<title +>Другие параметры форматирования</title> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="SF-other.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Другие параметры стиля форматирования кода</phrase +></textobject> + <caption +><para +>Другие параметры стиля форматирования кода </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Расположение фигурных скобок</term> +<listitem> +<para +>Переключатель <guilabel +>Скобки</guilabel +> определяет положение разделителей блоков в коде C и C++. Предлагается оставить без изменения или выбрать из трёх других вариантов.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>На новой строке</guilabel +></term> + <listitem> + <para +>Вставить символ новой строки перед каждой открывающей фигурной скобкой. Обе скобки будут иметь одинаковый с заголовком блока отступ.</para> + +<screen +>namespace foospace +{ + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>На той же строке</guilabel +></term> + <listitem> + <para +>Оставить открывающую скобку на одной строке с заголовком блока. Закрывающие скобки будут иметь отступ одинаковый с заголовком блока. Оператор <token +>else</token +> условия <token +>if</token +> будет оставлен на одной строке с закрывающей скобкой. </para> +<screen +>namespace foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Стиль Linux</guilabel +></term> + <listitem> + <para +>Это совмещение описанных выше стилей. Скобки, отделяющие блок функции, будут переводиться на новую строку, а скобки, открывающие блок условного выражения или цикла, будут оставлены на той же строке. </para> +<screen +>namespace foospace +{ + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } +} +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Дополнительные пробелы</term> +<listitem> +<para +>По умолчанию, &kdevelop; стремится к уменьшению количества пробелов в исходном коде. </para> + + +<screen +>if (isBar(fooArg)==barValue) +</screen> + +<para +>Для улучшения читаемости можно вставить дополнительные пробелы.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Добавлять пробелы внутри круглых скобок</guilabel +></term> + <listitem> + <para +>На самом деле пробелы будут ставиться вокруг текста, заключённого в круглые скобки. Это улучшает читаемость аргументов функций и условных операторов.</para> +<screen +>if ( isBar( fooArg )==barValue ) +</screen> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Добавлять пробелы вокруг операторов</guilabel +></term> + <listitem> + <para +>Вставить пробелы вокруг операторов присваивания и сравнения.</para> +<screen +>if (isBar(fooArg) == barValue) +</screen> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Выражения в одной строке</term> +<listitem> +<para +>В некоторых случаях форматирование кода, разделяющее длинную строку, будет лишним. Для кода C и C++ это может быть настроено здесь.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Сохранять выражения в одной строке</guilabel +></term> + <listitem +><para +>Не разрывать выражения, даже если они превышают ограничение длины строки. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Сохранять блоки в одной строке</guilabel +></term> + <listitem +><para +>Не разрывать блоки, даже если они превышают ограничение длины строки. </para +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + + +</sect3 +> <!-- setup-format-other --> + +</sect2 +> <!-- setup-format --> + +<sect2 id="setup-snippets"> +<title +>Настройка заготовок кода</title> + +<para +>При работе с &kdevelop; можно сохранять часто используемые участки кода в виде <link linkend="editing-snippets" +>заготовок</link +>. Чтобы настроить использование заготовок, выберите пункт <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +> из меню. В появившемся диалоговом окне <guilabel +>Настройка KDevelop</guilabel +> выберите слева раздел <guilabel +>Заготовки</guilabel +>. В правой части появятся параметры настройки. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-snippets.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка заготовок кода</phrase +></textobject> + <caption +><para +>Настройка заготовок кода </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Всплывающие подсказки</term> +<listitem> +<para +>Установите флажок <guilabel +>Показывать содержание заготовки в подсказке</guilabel +> для просмотра кода во всплывающей подсказке при наведении указателя мыши на заготовку.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Работа с переменными в заготовках</term> +<listitem> +<para +>Инструмент <guilabel +>Заготовки</guilabel +> допускает использование переменных в предопределённых местах каждый раз при вставке заготовки в файл. Для реализации этого раздел <guilabel +>Заготовки</guilabel +> предоставляет свой собственный механизм переменных. Их можно настроить в секции <guilabel +>Переменные</guilabel +>.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Разделитель</guilabel +></term> + <listitem +><para +>Инструмент <guilabel +>Заготовки</guilabel +> различает переменные в тексте путём добавления к названию переменной специального символа разделителя. Чтобы использовать другой символ, измените установленный по умолчанию символ <guilabel +>$</guilabel +> в поле <guilabel +>Разделитель</guilabel +>. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Метод задания значений переменных</guilabel +></term> + <listitem +><itemizedlist> + <listitem +><para +><guilabel +>Отдельный диалог для каждой переменной</guilabel +> — вывести отдельный диалог для каждой переменной, которая будет найдена при вставке заготовки в текст. </para +></listitem> + <listitem +><para +><guilabel +>Одно окно для всех переменных заготовки</guilabel +> — вывести при вставке заготовки один общий диалог для указания значений всех переменных. </para +></listitem> + </itemizedlist +></listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-snippets --> + +<sect2 id="setup-file-list"> +<title +>Окна</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- setup-file-list--> + +<sect2 id="setup-file-selector"> +<title +>Файлы</title> + +<para +>&kdevelop; содержит модуль <guilabel +>Выбор файлов</guilabel +>, который позволяет выбрать любой файл или каталог в файловой системе. </para> + +<screenshot id="setup-fileselector-image"> + <mediaobject> + <imageobject> + <imagedata fileref="file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Выбор файлов в режиме IDEAl</phrase +></textobject> + <caption +><para +>Выбор файлов (режим IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<para +>Панель <guilabel +>Файлы</guilabel +> может быть гибко настроено. Откройте <menuchoice +> <guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +> </menuchoice +>. В диалоговом окне <guilabel +>Настройка KDevelop</guilabel +> выберите слева раздел <guilabel +>Файлы</guilabel +>.</para> + + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-file-selector.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка выбора файлов</phrase +></textobject> + <caption +><para +>Настройка выбора файлов </para +></caption> + </mediaobject> +</screenshot> + +<variablelist> +<varlistentry> +<term +>Настройка панели инструментов</term> +<listitem> +<para +><guilabel +>Панель инструментов</guilabel +> выбора файлов можно настроить как обычно.</para> + +<procedure id="setup-fileselector-add-action"> + <title +>Добавление действия на панель инструментов</title> + <step> + <para +>Выберите пункт из списка <guilabel +>Выбранные действия</guilabel +> справа, после которого нужно вставить новое действие. </para> + </step> + <step> + <para +>Выберите действие для вставки из списка <guilabel +>Доступные действия</guilabel +> слева. </para> + </step> + <step> + <para +>Нажмите кнопку со стрелкой вправо, расположенную между списками. </para> + <para +>Действие будет изъято из списка <guilabel +>Доступные действия</guilabel +> и вставлено в список <guilabel +>Выбранные действия</guilabel +> после выбранного пункта. </para> + </step> +</procedure> + +<procedure> + <title +>Удаление действия c панели инструментов</title> + <step> + <para +>Выберите пункт, который нужно удалить, в списке <guilabel +>Выбранные действия</guilabel +>. </para> + </step> + <step> + <para +>Нажмите кнопку со стрелкой влево, расположенную между списками. </para> + <para +>Выбранный пункт будет изъят из списка <guilabel +>Выбранные действия</guilabel +> и перемещён назад в список <guilabel +>Доступные действия</guilabel +>. </para> + </step> +</procedure> + +<procedure> + <title +>Изменение порядка пунктов в панели инструментов</title> + <step> + <para +>Выберите действие, которое нужно переместить, в списке <guilabel +>Выбранные действия</guilabel +> справа. </para> + </step> + <step> + <para +>Нажмите кнопку со стрелкой вверх или стрелкой вниз. </para> + <para +>Выбранный пункт будет перемещён выше или ниже по списку <guilabel +>Выбранные действия</guilabel +>. </para> + </step> +</procedure> +</listitem> +</varlistentry> + +<varlistentry> +<term id="setup-fileselector-autosync" +>Способ обновления содержимого</term> +<listitem> +<para +>Обновление содержимого панели требует времени и ресурсов, особенно, когда осуществляется открытие каталога с большим количеством файлов. Поэтому по умолчанию панель <guilabel +>Файлы</guilabel +> настроена на обновление только по запросу, например, при смене каталога или при намеренном обновлении его содержимого. </para> + +<note +><para +>Нажмите кнопку <guilabel +>Обновить</guilabel +> в панели для обновления содержимого панели. Эта кнопка по умолчанию отсутствует. Нужно сначала <link linkend="setup-fileselector-add-action" +>добавить её</link +>. </para +></note> + +<para +>Можно настроить панель для немедленного показа вносимых изменений в файловую систему. Параметры секции <guilabel +>Автоматическая синхронизация</guilabel +> отвечают за это. </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>При активизации документа</guilabel +></term> + <listitem +><para +>При выборе этого пункта содержимое панели будет обновляться при переходе к другому открытому документу, например, при щелчке на вкладке окне редактируемого файла в режиме IDEAl. Если будет необходимо, панель переключится на каталог, в котором расположен этот файл, и обновит содержимое. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>При открытии документа</guilabel +></term> + <listitem +><para +>При выборе этого пункта содержание панели будет обновляться при открытии файла, например, через меню <menuchoice +><guimenu +>Файл</guimenu +><guimenuitem +>Открыть</guimenuitem +></menuchoice +>. Если будет необходимо, панель переключится на каталог, в котором расположен этот файл, и обновит содержимое. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>При показе панели выбора файла</guilabel +></term> + <listitem +><para +>При выборе этого пункта содержание панели будет обновляться когда панель снова станет видимой. Если будет необходимо, панель переключится на каталог, в котором расположен текущий открытый файл, и обновит содержимое. </para +></listitem> + </varlistentry> +</variablelist> + +<para +>Эти параметры можно как угодно комбинировать для настройки желаемого поведения. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Количество пунктов в выпадающих списках</term> +<listitem> +<para +>Под секцией <guilabel +>Автоматическая синхронизация</guilabel +> находится два счётчика, которые задают максимальное количество пунктов в выпадающих списках каталогов и фильтров на панели, в которые попадают вводимые значения.</para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Максимальное количество запоминаемых каталогов</guilabel +></term> + <listitem +><para +>Введите максимальное количество каталогов, которые должны сохраняться в списке. </para +></listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Максимальное количество запоминаемых фильтров</guilabel +></term> + <listitem +><para +>Введите максимальное количество фильтров, которые должны сохраняться в списке. </para +></listitem> + </varlistentry> + +<varlistentry> +<term +>Что запоминать между сеансами</term> +<listitem> +<para +>По умолчанию панель настроена на восстановление каталога и фильтра при следующем запуске &kdevelop;. Можно изменить эти параметры в секции <guilabel +>Сеанс</guilabel +>. </para> + +<note +><para +>При автоматическом запуске &kdevelop; менеджером сеансов &kde; изменения этих параметров не учитываются. В этом случае каталог и фильтр будут восстанавливаться всегда. </para +></note> +</listitem> +</varlistentry> + + <varlistentry> + <term +><guilabel +>Восстанавливать каталог</guilabel +></term> + <listitem> + <para +>Снимите флажок, если не хотите, чтобы каталог в панели выбора файлов запоминался между сеансами. </para> + <note +><para +>Если вы выбрали один из параметров <link linkend="setup-fileselector-autosync" +>автоматического обновления</link +> содержимого каталога, каталог может автоматически меняться несмотря на сохранённое значение с прошлого сеанса. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Восстанавливать фильтр</guilabel +></term> + <listitem> + <para +>Снимите флажок, если не хотите, чтобы применяемый фильтр запоминался между сеансами. </para> + </listitem> + </varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +</sect2 +> <!-- setup-file-selector --> + +<sect2 id="setup-cpp-generator"> +<title +>Генератор классов C++</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- setup-c++-generator--> + +<sect2 id="setup-formatting"> +<title +>Форматирование</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- setup-formatting--> + +<sect2 id="setup-cpp-parsing"> +<title +>Анализ кода C++</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- setup-c++-parsing--> + +</sect1 +> <!-- setup-general --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-docu"> +<title +>Настройка документации</title> + +<para +>&kdevelop; содержит мощную справочную систему, предоставляющую доступ к нескольким видам справки. Например, в режиме IDEAl есть вкладка <guilabel +>Документация</guilabel +> у правой границы рабочей области. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="documents-contents.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Панель документации в режиме IDEAl</phrase +></textobject> + <caption +><para +>Панель документации (режим IDEAl) </para +></caption> + </mediaobject> +</screenshot> + +<note +><para +>Для доступа к документации &kdevelop; должен быть загружен модуль <guilabel +>Документация</guilabel +>. Смотрите раздел <link linkend="setup-plugins" +>Подключаемые модули</link +>. </para +></note> + +<para +>Можно настроить содержимое и поведение различных частей справочной панели, выбрав в меню <menuchoice +><guimenu +>Настройка</guimenu +> <guimenuitem +>Настроить KDevelop...</guimenuitem +></menuchoice +>. В появившемся диалоговом окне <guilabel +>Настройка KDevelop</guilabel +> выберите слева раздел <guilabel +>Документация</guilabel +>. </para> + +<para +>В этом разделе доступны три вкладки. </para> + +<simplelist> + <member +><link linkend="setup-docu-general" +>Коллекции документации</link +></member> + <member +><link linkend="setup-docu-textsearch" +>Полнотекстовый поиск</link +></member> + <member +><link linkend="setup-docu-other" +>Разное</link +></member> +</simplelist> + +<sect2 id="setup-docu-general"> +<title +>Настройка коллекций документации</title> + +<para +>Документация состоят из коллекций руководств, каждое из которых предоставляет доступ к файлам документации определённых форматов и содержания. Эти параметры отвечают за то, какие коллекции документации будет показываться на панели <guilabel +>Документация</guilabel +>, а также задают способ доступа к справочной информации через индексы и полнотекстовый поиск. </para> +<para +>Вкладка настройки коллекций содержит список всех доступных коллекций документации. &kdevelop; поддерживает различные типы коллекций документации: </para> +<simplelist> + <member +><link linkend="setup-docu-general-qt" +>Коллекция документации &Qt;</link +></member> + <member +><link linkend="setup-docu-general-chm" +>Коллекция документации CHM</link +></member> + <member +><link linkend="setup-docu-general-dox" +>Коллекция документации Doxygen</link +></member> + <member +><link linkend="setup-docu-general-toc" +>Коллекция документации KDevelopTOC</link +></member> + <member +><link linkend="setup-docu-general-devhelp" +>Коллекция документации Devhelp</link +></member> + <member +><link linkend="setup-docu-general-custom" +>Пользовательская коллекция документации</link +></member> +</simplelist> + +<para id="configure-docu-general"> +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка коллекций документации</phrase +></textobject> + <caption +><para +>Настройка коллекций документации </para +></caption> + </mediaobject> +</screenshot> +</para> + +<sect3 id="setup-docu-general-common"> +<title +>Элементы настройки коллекций документации</title> + +<para +>Список доступных коллекций расположен слева, кнопки по управлению элементами списка — справа. </para> + +<variablelist> +<varlistentry> +<term id="setup-docu-buttons" +>Кнопки управления списком коллекций</term> +<listitem> +<para +>Для управления списком доступны три кнопки: </para> + +<variablelist> + <varlistentry> + <term +><guibutton +>Добавить...</guibutton +></term> + <listitem> + <para +>Открыть диалоговое окно <guilabel +>Коллекция документации</guilabel +>, позволяющее указать путь к документации и её название.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Изменить...</guibutton +></term> + <listitem> + <para +>Открыть диалоговое окно <guilabel +>Коллекция документации</guilabel +>, позволяющее изменить путь к ранее выбранной документации и переименовать её.</para> + </listitem> + </varlistentry> + <varlistentry> + <term +><guibutton +>Удалить</guibutton +></term> + <listitem> + <para +>Удалить выбранную коллекцию из списка.</para> + <note +><para +>Коллекция будет удалена только из списка. Файлы документации не будут удалены. Если документация не нужна, удалите её самостоятельно другими средствами. </para +></note> + </listitem> + </varlistentry> +</variablelist> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-edit.png" format="PNG"/> + </imageobject> + <caption +><para +>Добавление или изменение коллекции документации </para +></caption> + </mediaobject> +</screenshot> + +<para +>Кнопка справа от поля <guilabel +>Расположение</guilabel +> открывает диалоговое окно выбора каталога, показывающее файлы в зависимости от выбранного типа. </para> +<para +>Поле <guilabel +>Заголовок</guilabel +> может быть недоступным для некоторых типов коллекций. </para> +</listitem> +</varlistentry> +<varlistentry> +<term id="setup-docu-columns" +>Список коллекций документации</term> +<listitem> +<para +>Список коллекций содержит четыре столбца: </para> + +<variablelist> + <varlistentry> + <term +><guilabel +>Содержание</guilabel +></term> + <listitem> + <para +>Если в этом столбце установлен флажок, данная коллекция будет показана на вкладке <guilabel +>Содержание</guilabel +> панели <guilabel +>Документация</guilabel +>. </para> + <note +><para +>Снятие флажка в столбце <guilabel +>Содержание</guilabel +> приведёт к снятию флажков в столбцах <guilabel +>Индекс</guilabel +> и <guilabel +>Поиск</guilabel +>. Таким образом, нельзя получить доступ к индексу документации, не показанному в содержании. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Индекс</guilabel +></term> + <listitem> + <para +>Если флажок установлен, коллекция будет проиндексирована. Это позволит быстро искать в коллекции на вкладках <guilabel +>Индекс</guilabel +> и <guilabel +>Искать в индексе</guilabel +> панели <guilabel +>Документация</guilabel +>. </para> + <note> + <para +>Внутренний индекс будет построен при первом переходе на вкладку <guilabel +>Индекс</guilabel +>. На это потребуется некоторое время, поскольку индекс должен быть прочтён с диска и затем кэширован. </para> + <para +>При последующих обращениях к индексированному поиску будет использован созданный кэш, это будет намного быстрее. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Поиск</guilabel +></term> + <listitem> + <para +>Если флажок установлен, содержание этого коллекции будет включено в кэш для полнотекстового поиска на вкладке <guilabel +>Поиск</guilabel +> панели документации. </para> + <note> + <para +>&kdevelop; использует утилиту htdig для полнотекстового поиска. Поиск производится по внутреннему индексу, который должен быть создан посредством htdig до первого использования. </para> + <para +>Для вступления изменений в силу нужно будет обновить индекс на вкладке <guilabel +>Поиск</guilabel +> панели документации. </para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term +><guilabel +>Заголовок</guilabel +></term> + <listitem +><para +>Название раздела, показываемого на вкладке <guilabel +>Содержание</guilabel +> панели документации. </para +></listitem> + </varlistentry> +</variablelist> + +<note +><para +>В некоторых прежних версиях &kdevelop; можно было выбирать, какие пункты документации показывать для конкретного проекта. Теперь эта возможность отключена. </para +></note> +</listitem> +</varlistentry> +</variablelist> + +</sect3 +> <!-- setup-docu-general-common --> + +<sect3 id="setup-docu-general-qt"> +<title +>Коллекции документации &Qt;</title> + +<para +>На этой вкладке можно настроить документацию по &Qt;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-general.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка коллекции документации &Qt;</phrase +></textobject> + <caption +><para +>Настройка коллекции документации &Qt; </para +></caption> + </mediaobject> +</screenshot> + +<para +>Как правило, этот пункт заполняется при первом запуске &kdevelop;. Будет произведён поиск файлов документации в формате <filename +>*.xml</filename +> или <filename +>*.dcf</filename +> в каталоге &Qt;. Слева показывается список найденных файлов. </para> + +<para +>Если используется нестандартная установка, то либо информация будет отсутствовать вовсе, либо записи будут ссылаться на неверное место (например, на другую версию &Qt;, установленную в системе). Можно указать пути <link linkend="setup-docu-buttons" +>кнопками</link +> справа. </para> + +<note +><para +>&kdevelop; будет использовать имеющиеся заголовки страниц установленной документации &Qt;. Поэтому поле <guilabel +>Заголовок</guilabel +> в диалоге создания и изменения коллекции недоступно. </para +></note> + +<para +>По умолчанию, на вкладке <guilabel +>Содержание</guilabel +> показывается не вся документация &Qt;. Для выбора показываемой коллекции установите флажок в столбце <guilabel +>Содержание</guilabel +> в <link linkend="setup-docu-columns" +>списке коллекций</link +>. </para> + +<para +>Чтобы использовать документацию &Qt;, включенную в индекс поиска или полнотекстовый поиск, установите флажки в столбцах <guilabel +>Индекс</guilabel +> и <guilabel +>Поиск</guilabel +> на <link linkend="setup-docu-columns" +>соответствующей вкладке настройки</link +>. </para> + +</sect3 +> <!-- setup-docu-general-qt --> + +<sect3 id="setup-docu-general-chm"> +<title +>Настройка коллекции документации CHM</title> + +<para +>На этой вкладке можно настроить просмотр файлов документации в формате &Microsoft; CHM. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-chm.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка документации в формате &Microsoft; CHM</phrase +></textobject> + <caption +><para +>Настройка документации в формате &Microsoft; CHM </para +></caption> + </mediaobject> +</screenshot> + +<para +>По умолчанию, эта вкладка будет пустой (как показано выше). Можно добавить новые элементы соответствующими <link linkend="setup-docu-buttons" +>кнопками</link +> справа от списка. При выборе расположения будут показаны только файлы <filename +>*.chm</filename +>. </para> + +<para +>Дополнительную информацию о формате &Microsoft; <filename +>*.chm</filename +> можно получить, например, на сайте <ulink url="http://de2.php.net/docs-echm.php" +>PHP: Documentation - Extended CHM Format</ulink +>. </para> + +</sect3 +> <!-- setup-docu-general-chm --> + +<sect3 id="setup-docu-general-dox"> +<title +>Документация, сгенерированная Doxygen</title> + +<para +>На этой вкладке можно настроить работу с документацией по &API;, сгенерированной &doxygen;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-dox.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Настройка документации по &API;</phrase +></textobject> + <caption +><para +>Настройка документации по &API; </para +></caption> + </mediaobject> +</screenshot> + +<para +>Документация по &API; содержит описание интерфейсов библиотек. Документация по &API; генерируется внешней программой <ulink url="http://www.stack.nl/~dimitri/doxygen/" +>&doxygen;</ulink +>. </para> +<para +>Сгенерированная &doxygen; документация по &API; состоит из набора файлов <filename +>html</filename +>, в том числе файла <filename +>index.html</filename +>, содержащего содержание. Также в ней могут присутствовать файлы <filename +>tag</filename +> для привязки к уже существующей документации по &API;. &kdevelop; будет искать <filename +>index.html</filename +> и файлы с расширением <filename +>*.tag</filename +> во время поиска документации по &API;. </para> +<para +>Существует ряд ограничений, накладываемых при поиске документации по &API;. Каталог, в которой находится файл <filename +>index.html</filename +>, должен содержать подкаталоги с отдельными коллекциями документации. В каждой из них должен быть файл <filename +>.tag</filename +> и каталог <filename class="directory" +>html/</filename +>. </para> +<para +>Примером такой структуры документации &doxygen; по &API; служит <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/kdelibs-apidocs</filename +>. </para> + +<note +><para +>Старый формат <ulink url="http://sirtaj.net/projects/kdoc/" +>KDoc</ulink +> документации по &API; &kde; больше не поддерживается напрямую. Если всё же требуется воспользоваться документацией в старом формате, добавьте файлы как <link linkend="setup-docu-general-custom" +>пользовательскую коллекцию документации</link +>. </para +></note> + +<para +>&kdevelop; будет содержать найденные в &kde; пути к &API; библиотек. Есть несколько способов для их обнаружения. </para> + +<itemizedlist> + <listitem +><para +>Сообщите путь к документации скрипту <command +>configure</command +> с помощью параметра <option +>--with-kdelibsdoxy-dir</option +> при компиляции &kdevelop; (смотрите раздел <link linkend="make-api" +>Где взять документацию по &API; &kdevelop;</link +>). </para +></listitem> + <listitem +><para +>Обычно команда <command +>configure</command +> автоматически находит пути в стандартных каталогах. </para +></listitem> + <listitem +><para +>Если документация автоматически не обнаружена, при первом запуске &kdevelop; будет проверен каталог <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/doc/HTML/en/kdelibs-apidocs/</filename +>. </para +></listitem> +</itemizedlist> + +<para +>Если &kdevelop; не обнаружил документацию при первом запуске, список <guilabel +>Коллекция документации Doxygen</guilabel +> будет пустым. </para> + +<para +>Добавить записи о своей документации по &API; (например, для своего текущего проекта) можно с помощью <link linkend="setup-docu-buttons" +>кнопок</link +> справа. Если требуется проиндексировать документацию или включить её в полнотекстовый поиск, установите флажки в столбцах <guilabel +>Индекс</guilabel +> или <guilabel +>Поиск</guilabel +> в <link linkend="setup-docu-columns" +>списке коллекций</link +>. </para> + +<note +><para +>&kdevelop; берёт информацию о заголовках из файла <filename +>index.html</filename +>. Поэтому поле <guilabel +>Заголовок</guilabel +> в диалоговом окне <guilabel +>Коллекция документации</guilabel +> недоступно. </para +></note> + +<tip> + <para +>Документация по &API; &kde; не ограничивается только описанием &API; библиотек &kde;. Если вы хотите получить дополнительную информацию об интерфейсах (например, как включить модуль &kate; в ваши программы), установите &kde; Base Libraries &API; из <ulink url="http://developer.kde.org/source/index.html" +>исходного кода</ulink +> командами <command +>make apidox</command +> и <command +>make install</command +> для пакета <filename class="directory" +>kdebase</filename +> и добавьте коллекцию Doxygen. </para> + <screenshot +><mediaobject> + <imageobject> + <imagedata fileref="configure-adddialog-baselibs.png" format="PNG"/> + </imageobject> +<textobject +><phrase +>Добавление базового &API; &kde;</phrase +></textobject> + <caption +><para +>Добавление базового &API; &kde; </para +></caption> + </mediaobject +></screenshot> + <para +>Укажите в поле <guilabel +>Расположение</guilabel +> реальный каталог установки вместо <filename class="directory" +>/home/dev/mykde-system/</filename +>. </para> +</tip> + +<note +><para +>Аналогичным образом можно добавить в список <guilabel +>Коллекция документации Doxygen</guilabel +> документацию по &API; вашего проекта. Предыдущие версии &kdevelop; разрешали указывать коллекцию документации отдельно для каждого проекта. Теперь эта возможность не поддерживается. </para +></note> + +</sect3 +> <!-- setup-docu-general-dox --> + +<sect3 id="setup-docu-general-toc"> +<title +>Иерархическая документация (KDevelopTOC)</title> + +<para +>Система документации &kdevelop; предоставляет немедленный доступ к иерархически расположенной структуре документации, расположенной как локально, так и в Интернете. Это настраивается на странице <guilabel +>Коллекция документации KDevelopTOC</guilabel +> (TOC — Table Of Contents, содержание). </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-toc.png" format="PNG"/> + </imageobject> + <caption +><para +>Документация в формате KDevelopTOC </para +></caption> + </mediaobject> +</screenshot> + +<para +>&kdevelop; поставляется с большим набором готовых файлов KDevelopTOC, автоматически добавляющихся в список коллекций. Чтобы не загромождать экран, показываются только наиболее важные из них. Чтобы обратиться к другой коллекции, установите флажок в столбце <guilabel +>Содержание</guilabel +> в <link linkend="setup-docu-columns" +>списке коллекций</link +>. </para> + +<para +>Файлы KDevelopTOC не могут быть проиндексированы для полнотекстового поиска, так как обычно они содержат ссылки на онлайновую документацию. С другой стороны, содержание в файле <filename +>.toc</filename +> может быть быть задано вручную в теге <computeroutput +><index></computeroutput +>. Поэтому флажок <guilabel +>Индекс</guilabel +> будет доступен только если будет тег <computeroutput +><index></computeroutput +> в файле <filename +>.toc</filename +>. Описание <link linkend="setup-docu-general-toc-files" +>Файлов TOC</link +> приведено ниже. </para> +<para +>Флажок <guilabel +>Поиск</guilabel +> будет всегда недоступен. </para> + +<para +>Новую коллекцию можно добавить соответствующими <link linkend="setup-docu-buttons" +>кнопками</link +> справа от списка. В диалоге выбора расположения будут показаны только файлы <filename +>*.toc</filename +>. </para> + +<note +><para +>В отличие от предыдущих версий &kdevelop; кнопка <guibutton +>Удалить</guibutton +> не удаляет с диска файл <filename +>.toc</filename +>, а лишь убирает его из списка, поэтому операция удаления сейчас безопасна. </para +></note> + +</sect3 +> <!-- setup-docu-general-toc --> + +<sect3 id="setup-docu-general-toc-files"> +<title +>Файлы TOC</title> + +<para +>Для наглядности продемонстрируем преимущества использования файлов TOC на следующем примере. Откройте панель «Документация» и найдите в дереве документации на вкладке «Содержание» пункт «KDevelop API documetation». Нажмите на стрелку слева от названия. Откроется структура, позволяющая перейти к необходимому разделу. При этом &kdevelop; не будет получать информацию из Интернета. Если же вы нажмёте на названии главы, &kdevelop; откроет страницу с этой главой из Интернета. </para> + +<para +>Польза этого не только в возможности локально перемещаться по онлайновой документации без траты трафика, но и в предоставлении разработчику удобного и простого доступа к требуемой информации. Используя этот инструмент, любой может получить доступ к онлайновой документации в режиме структуры, даже если она не содержит элементов или структурирована иным способом. Всё, что нужно — это возможность открытия файлов или потоков в Konqueror. </para> + +<para +>Такой доступ к структуре сделал возможным использование специальных файлов содержания, которые имеют расширение <filename +>.toc</filename +>. Любой файл TOC содержит структурированное описание документа в формате &XML;. </para> + +<variablelist> +<varlistentry> +<term +>Стандартный каталог файлов TOC</term> +<listitem> +<para +>При установке &kdevelop; устанавливает обычно серию готовых файлов <filename +>.toc</filename +> в каталог <filename class="directory" +>$KDEDIR/share/apps/kdevdocumentation/tocs</filename +>. Это очень простые структурированные текстовые файлы. Можно просмотреть их, используя текстовый редактор или другую программу просмотра текста. </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 +>Структура файлов TOC</title> + <varlistentry> + <term +>заголовок</term> + <listitem> + <simplelist> + <member> + <computeroutput +><!DOCTYPE kdeveloptoc></computeroutput> + </member> + <member> + <computeroutput +><kdeveloptoc></computeroutput> + </member> + <member> + <emphasis +>(заголовок)</emphasis> + </member> + <member> + <emphasis +>(базовый адрес)</emphasis> + </member> + <member> + <emphasis +>(структура содержимого)</emphasis> + </member> + <member> + <emphasis +>(структура индекса)</emphasis> + </member> + <member> + <computeroutput +></kdeveloptoc></computeroutput> + </member> + </simplelist> + <para +>Структура &XML; будет анализироваться модулем &kdevelop; <guilabel +>Документация</guilabel +> для генерации содержания в дереве документации и для помощи пользователю в навигации. Она содержит всю информацию, необходимую для показа заголовков и доступа к содержимому файлов документации. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>заголовок</term> + <listitem> + <simplelist> + <member +><computeroutput +><title></computeroutput +> <emphasis +>(некоторая строка)</emphasis +> <computeroutput +></title></computeroutput +> </member> + </simplelist> + <para +>Заголовок раздела на верхнем уровне дерева документации. </para> + <note +><para +>Показываемые здесь заголовки пользователь не может изменить. Если нужно показать другой текст, отредактируйте вручную тег <computeroutput +><title></computeroutput +> в файле <filename +>.toc</filename +>. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>базовый адрес</term> + <listitem> + <simplelist> + <member +><computeroutput +><base href="</computeroutput +> <emphasis +>(&URL; документов)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + </simplelist> + <para +>Этот адрес указывает на расположение всех файлов документации. Он будет использован для генерации полного адреса при вызове страниц онлайновой документации. </para> + </listitem> + </varlistentry> + <varlistentry> + <term +>структура содержимого</term> + <listitem> + <simplelist> + <member +><computeroutput +><tocsect1 name="</computeroutput +> <emphasis +>(заголовок раздела)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; раздела)</emphasis +> <computeroutput +>"></computeroutput +> </member> + <member +>...</member> + <member +><computeroutput +><tocsectn name="</computeroutput +> <emphasis +>(заголовок раздела)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; раздела)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member +>...</member> + <member> + <computeroutput +></tocsect1></computeroutput> + </member> + </simplelist> + <para +>Вся оставшаяся информация о навигации и доступе записывается в серию пар <computeroutput +><tocsecti></computeroutput +> ... <computeroutput +></tocsecti></computeroutput +>. Каждый <emphasis +>i</emphasis +> обозначает уровень навигации вниз к номеру <emphasis +>n</emphasis +>, который связан с показываемым разделом документации. </para> + <para +>Любой тег <computeroutput +><tocsecti></computeroutput +> должен иметь атрибут <computeroutput +>name="xxx"</computeroutput +>, ассоциированный с ней ("xxx" обозначает строку заголовка). Это название будет показываться как заголовок уровня в дереве документации. Оно должно быть быть связан с определённым разделом документации. </para> + <para +>Привязка может осуществляться через атрибут <computeroutput +>url=""</computeroutput +>, который ассоциируется с любым уровнем вложенности <emphasis +>i</emphasis +>. Если пользователь щёлкает на заголовке раздела в дереве документации, то &kdevelop; будет пытаться обратиться к файлу через &URL;, составленный из базового и &URL; данного раздела. </para> + <para +>Тег <computeroutput +><tocsectn/></computeroutput +> должен содержать атрибут <computeroutput +>url=""</computeroutput +>. Последний вложенный <computeroutput +><tocsectn/></computeroutput +> будет закрыт<computeroutput +>/</computeroutput +> перед скобкой <computeroutput +>></computeroutput +>. </para> + <note +><para +>Любой адрес, составленный из базового &URL; и &URL; раздела, должен указывать на какой-то показываемый файл. Обычно это файл HTML. Можно сделать ссылку внутри такого файла с помощью стандартного знака # в таком формате: <filename +>/base-url/section-url#anchor-mark</filename +>. </para +></note> + </listitem> + </varlistentry> + <varlistentry> + <term +>структура индекса</term> + <listitem> + <simplelist> + <member> + <computeroutput +><index></computeroutput> + </member> + <member +><computeroutput +><entry name="</computeroutput +> <emphasis +>(заголовок индекса)</emphasis +> <computeroutput +>" url="</computeroutput +> <emphasis +>(&URL; раздела индекса)</emphasis +> <computeroutput +>"/></computeroutput +> </member> + <member> + <computeroutput +></index></computeroutput> + </member> + </simplelist> + <para +>Индекс — это простой список индексных записей — пар заголовок и &URL;. Индекс не обязателен. </para> + </listitem> + </varlistentry> +</variablelist> +<!-- FIXME: End --> + +</sect3 +> <!-- setup-docu-general-toc-files --> + +<sect3 id="setup-docu-general-devhelp"> +<title +>Документация DevHelp</title> + +<para +>Документация DevHelp — другой способ доступа к структурированной информации. Она использует структурную таблицу содержания файлов, в файле с расширением <filename +>.devhelp</filename +>, сходным с <link linkend="setup-docu-general-toc-files" +>файлами TOC</link +> для доступа к документации по GNOME 2. </para> +<para +>На вкладке настройки <guilabel +>Коллекция документации DevHelp</guilabel +> можно выбрать, какие файлы DevHelp будут доступны. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-devhelp.png" format="PNG"/> + </imageobject> + <caption +><para +>Предоставление документации DevHelp </para +></caption> + </mediaobject> +</screenshot> + +<para +>Файлы DevHelp были доступны на сайте <ulink url="http://lidn.sourceforge.net/" +>LiDN</ulink +>, но похоже, что им больше никто не занимается. Более свежую документацию DevHelp можно найти на странице <ulink url="http://htmlhelp.berlios.de/books/devhelp.php" +>DevHelp Books Download</ulink +>. </para> + +<para +>При установке &kdevelop; попытается найти все файлы <filename +>.devhelp</filename +> в некоторых стандартных каталогах системы, например в <filename class="directory" +>/opt/gnome/share/</filename +>. Найденные файлы не будут показываться по умолчанию, но это можно изменить, установив флажок в столбце <guilabel +>Содержание</guilabel +> в <link linkend="setup-docu-columns" +>списке коллекций</link +>. </para> + +<para +>Новую коллекцию можно добавить соответствующими <link linkend="setup-docu-buttons" +>кнопками</link +> справа от списка. В диалоге выбора расположения будут показаны только файлы <filename +>*.toc</filename +>. </para> + +</sect3 +> <!-- setup-docu-general-devhelp --> + +<sect3 id="setup-docu-general-custom"> +<title +>Настройка пользовательской коллекции документации</title> + +<para +>Этот тип предназначен для документации в других форматах. Можно добавить файл документации любого формата, который можно открыть в &konqueror;. </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-docu-custom.png" format="PNG"/> + </imageobject> + <caption +><para +>Документация в нестандартном формате </para +></caption> + </mediaobject> +</screenshot> + +<para +>При первом запуске &kdevelop; коллекций такого типа нет. </para> +<para +>Добавить документацию такого типа довольно просто. Используйте <link linkend="setup-docu-buttons" +>кнопки</link +> справа для добавления, изменения или удаления коллекций. &kdevelop; не будет фильтровать файлы в окне выбора файла. </para> + +<para +>Просто выберите файл для показа в панели документации &kdevelop;. Установите флажок в столбце <guilabel +>Содержание</guilabel +> в <link linkend="setup-docu-columns" +>списке коллекций</link +>. </para> + +<note +><para +>Документацию такого типа невозможно проиндексировать или осуществить по ней поиск средствами &kdevelop;. Поэтому отметка флажков в столбцах <guilabel +>Индекс</guilabel +> и <guilabel +>Поиск</guilabel +> не будет иметь эффекта, как для других типов коллекций. </para +></note> + +</sect3 +> <!--- setup-docu-general-custom --> + +</sect2 +> <!-- setup-docu-general --> + +<sect2 id="setup-docu-textsearch"> +<title +>Индексирование документации</title> + +<para +>(... в процессе написания ...) </para> + +<screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="configure-doctree-textsearch.png" format="PNG"/> + </imageobject> + <caption +><para +>Индексирование документации </para +></caption> + </mediaobject> +</screenshot> + +</sect2 +> <!-- setup-docu-textsearch --> + +<sect2 id="setup-docu-other"> +<title +>Другие параметры настройки коллекций документации</title> + +<para +>(... в процессе написания ...) </para> + +</sect2 +> <!-- setup-docu-other --> + +</sect1 +> <!-- setup-docu --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="setup-advanced"> +<title +>Расширенная настройка</title> + +<para +>(... в процессе написания ...) </para> + +<sect2 id="setup-plugins"> +<title +>Подключаемые модули</title> + +<para +>(... в процессе написания ...) </para> +</sect2 +> <!-- setup-plugins --> + +</sect1 +> <!-- setup-advanced --> + +</chapter +> <!-- setup --> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/survey-manual.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/survey-manual.docbook new file mode 100644 index 00000000000..544f0edc9c5 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/survey-manual.docbook @@ -0,0 +1,329 @@ +<chapter id="survey-manual"> +<title +>Что есть в этом руководстве</title> + +<para +>В руководстве описывается использование элементов среды &kdevelop; &kdevrelease; с точки зрения пользователя. Это не руководство по программированию, и не описание подробностей разработки. Здесь описывается лишь среда создания программ. </para> +<para +>В руководстве затронуты следующие темы: </para> +<variablelist> +<varlistentry> +<term +><link linkend="getting-started" +>Начало работы с &kdevelop;</link +> </term> +<listitem> +<para +>Позволит быстро освоиться с базовой функциональностью &IDE;, в том числе с основами работы с проектами.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="kdevelop-survey" +>Обзор возможностей &kdevelop;</link +></term> +<listitem> +<para +>Знание всех элементов, встроенных в &IDE;, поможет вам повысить свою производительность.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="setup" +>Настройка &kdevelop;</link +></term> +<listitem> +<para +>Поможет вам подстроить &IDE; под себя.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="applicationwizard" +>Начало работы: Мастер приложений</link +></term> +<listitem> +<para +>Создание нового проекта с помощью Мастера приложений.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="editing" +>Средства редактирования</link +></term> +<listitem> +<para +>Всё, что вам нужно для написания исходного кода: начиная с редактора, поиска текста (как локально, так и в рамках всего проекта), и заканчивая включением новых файлов и классов в существующий проект.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="file-browsers" +>Обзор файлов</link +></term> +<listitem> +<para +>Демонстрация различных средств обзора структуры вашего проекта, упрощающих доступ к файлам, с которыми вы желаете работать.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="class-browsers" +>Обзор классов</link +></term> +<listitem> +<para +>Один из самых мощных инструментов &kdevelop;, обеспечивающий навигацию по зависимостям между классами, создание новых классов и методов. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="documentation" +>Документация</link +></term> +<listitem> +<para +>Здесь описано как получить доступ богатой встроенной документации &kdevelop;, как создать документацию для вашего проекта, чёткое и полное описание &API; (Application Progamming Interface), содержащее обзор исходных кодов вашего проекта, а также написание руководства в формате DocBook.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="project-management" +>Сборка и управление проектом</link +></term> +<listitem> +<para +>Описание процедур создания и управления проектом, основы autoconf и automake, как создать собственные файлы make, а также использование ключей компилятора и make для тонкой подстройки вашего приложения.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="adv-build-management" +>Расширенное использование менеджера проектов</link +></term> +<listitem> +<para +>Обзор путей создания нескольких конфигураций сборки, обеспечения кросс-платформенности и создания встроенных систем с использованием библиотеки <application +>Qt/embedded</application +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="debugger" +>Интерфейс отладчика</link +></term> +<listitem> +<para +>Использование интегрированного отладчика <application +>gdb</application +>, благодаря которому вы сможете локализовать ошибки в программе, не покидая &kdevelop;.</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" +>Использование CVS</link +></term> +<listitem> +<para +>Применение системы, без которой не обойтись ни одному проекту, особенно с несколькими разработчиками.</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 +>Некоторая общая информция помещена в <emphasis +>приложение</emphasis +>. Среди прочего, это: </para> + +<variablelist> +<varlistentry> +<term +><link linkend="kdevelop-install" +>Установка &kdevelop;</link +></term> +<listitem> +<para +>Поскольку автоматизация сборки и установки программного обеспечения под UNIX не доведена до совершенства, такая глава продолжает быть востребованной.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<varlistentry> +<term +><link linkend="nutshell" +>Вкратце — Советы и подсказки</link +></term> +<listitem> +<para +>Краткий перечень наиболее часто используемых команд и действий, а также краткое руководство по решению общих проблем при работе в &kdevelop;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><link linkend="unixdev" +>Разработка программ в &UNIX;</link +></term> +<listitem> +<para +>Краткий экскурс в историю разработки в &UNIX;, основные инструменты и почему вам не обойтись без &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" +>Конфигурационные файлы &kdevelop;</link +></term> +<listitem +><para +>Обзор всех файлов, хранящих разнообразные внутренние параметры. Это может быть полезно если с инсталляцией среды случилось что-то непредвиденное.</para> +</listitem> +</varlistentry> + +<varlistentry +><term> +<link linkend="plugin-tools" +>Подключаемый инструментарий</link> +</term +><listitem +><para +>Обзор компонентов, формирующих &kdevelop;, которые вы можете подстроить под свои нужды посредством загрузки необходимых из них, как для работы в &IDE;, так и в рамках конкретного проекта. </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" +>KDevelop в разных режимах интерфейса интерфейса </link> +</term +><listitem +><para +>Примеры режимов графического интерфейса. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-misc-info" +>Дополнительная информация </link +> </term +><listitem +><para +>Получение дополнительной информации, создание отчётов об ошибках и т.д. </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-changelog" +>История изменений </link> +</term +><listitem +><para +>История изменений, вносимых в документ </para +></listitem +></varlistentry> + +<varlistentry +><term> +<link linkend="app-bibliography" +>Библиография </link +> +</term +><listitem +><para +>Библиография </para +></listitem +></varlistentry> + +</variablelist +> + <!-- + <listitem +><para> + <link linkend="documentation-index" +>Index </link +> — + </para +></listitem> +--> + + +</chapter> diff --git a/tde-i18n-ru/docs/kdevelop/kdevelop/unixdev.docbook b/tde-i18n-ru/docs/kdevelop/kdevelop/unixdev.docbook new file mode 100644 index 00000000000..c2ea70daf70 --- /dev/null +++ b/tde-i18n-ru/docs/kdevelop/kdevelop/unixdev.docbook @@ -0,0 +1,646 @@ +<appendix id="unixdev"> + +<appendixinfo> + <authorgroup> + <author +><firstname +>Bernd</firstname +><surname +>Pol</surname +></author> + <!-- ROLES_OF_TRANSLATORS --> + </authorgroup> +</appendixinfo> + +<title +>Разработка ПО в &UNIX;</title> + +<indexterm zone="unixdev" +><primary +>разработка</primary +></indexterm> +<indexterm zone="unixdev"> + <primary +>&UNIX;</primary> + <secondary +>программирование</secondary +></indexterm> + +<sect1 id="history"> +<title +>Исторические замечания</title> + +<indexterm zone="history" +><primary +>история</primary +></indexterm> +<indexterm zone="history" +><primary +>языки сценариев</primary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>история</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>конфейер</secondary +></indexterm> +<indexterm zone="history"> + <primary +>&UNIX;</primary> + <secondary +>оболочка</secondary +></indexterm> +<indexterm zone="history"> + <primary +>shell</primary> + <secondary +>&UNIX;</secondary +></indexterm> + +<para +>С самого начала, программы в &UNIX; разделились на два разных типа. Один тип — это мир <emphasis +>языков программирования системы и приложений</emphasis +>, где некоторый исходный код транслируется в машинный транслирующей программой, <emphasis +>компилятором</emphasis +> или <emphasis +>интерпретатором</emphasis +>. Примером является язык программирования C. &UNIX; была первой ОС, написанной на таком языке высокого уровня (относительно), вместо ассемблера, ориентированного на конкретную машину (на самом деле одним из изначальных назначений языка C было написание ядра &UNIX; и вспомогательных программ на машинах DEC PDP-11). </para> +<para +>Второй тип — это мир <emphasis +>сценариев</emphasis +> (скриптов). Он развился с приходом оболочки &UNIX; (shell), которая являлась интерфейсом пользователя к ОС — и в то же время языком программирования очень высокого уровня. Сценарии используют набор маленьких утилит, таких как <command +>grep</command +>, <command +>sed</command +> и <command +>find</command +>, каждая из которых создана для конкретной задачи. Хитрость заключается в том, что любая такая программа может быть соединена с другой посредством простого транспортного механизма, который называется <emphasis +>конвейером</emphasis +>, суть его заключается в том, что он перенаправляет вывод одной программы на ввод другой. Это есть основа многофункциональности и гибкости инструмента. </para> +<para +>С течением времени, оба мира бурно развивались. Язык C до сих пор используется преимущественно в качестве системного язык программирования, тогда как C++ — дальнейшее развитие C, воплощающее объектно-ориентированную модель программирования, — с начала 90-ых используется при программировании сложных структурированных систем. Кроме того, осталась поддержка многих других языков программирования, даже таких, как FORTRAN77 и Ada, которые всё ещё используются в некоторых областях. </para> +</sect1 +> <!-- history --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-scripting-languages"> +<title +>Современные языки сценариев</title> +<para +>Ну, а в мире сценариев произошла перестановка, от оболочки, недостатком которой было отсутствие полной переносимости, до языков, которые унифицируют всю общую необходимую функциональность в своих стандартных библиотеках, оставляя возможность прибегать к конвейерному механизму. </para> +<para +>Общее всех этих сценарных языков — их переносимость между клонами &UNIX;, Microsoft &Windows;, &MacOS;, или даже VMS. Также, для всех их доступны свободно распространяемые реализации. </para> + +<sect2 id="unixdev-SL-Perl"> +<title +>&perl;</title> + +<indexterm zone="unixdev-SL-Perl" +><primary +>Perl</primary +></indexterm> +<indexterm zone="unixdev-SL-Perl"> + <primary +>языки сценариев</primary> + <secondary +>Perl</secondary +></indexterm> + +<para +><ulink url="http://www.perl.com" +>&perl;</ulink +> популярен как язык обработки текста и, следовательно, системного администрирования. На заре World Wide Web, CGI-скрипты на &perl; использовались для генерирования динамических web-страниц на основе базы данных. Сегодня такой метод реализован в виде модуля <command +>mod_perl</command +> web-сервера &apache;. Среди сильных сторон &perl;'а — его встроенная поддержка расширенных регулярных выражений и богатый архив свободных модулей к нему, для подробностей см.: <ulink url="http://cpan.org" +>Comprehensive Perl Archive Network (CPAN)</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 +>языки сценариев</primary> + <secondary +>Python</secondary +></indexterm> + +<para +><ulink url="http://www.python.org" +>&python;</ulink +> отличается элегантностью классовой системы, лёгкостью и гибкостью, с которой можно внешние библиотеки могут быть подключены — к ним можно обращаться как к стандартным классам и функциям &python;. В отличие от &perl;, &python; имеет прозрачный и сконцентрированный встроенный &API;, что делает его прекрасным средством поддержки сценариев для программ, написанных на C и 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 +>языки сценариев</primary> + <secondary +>PHP</secondary +></indexterm> + +<para +><ulink url="http://www.php.net" +>&php;</ulink +> встраивается прямо в &HTML;-страницы, и, следовательно, применяется для генерирования динамических web-страниц. </para> +</sect2 +> <!-- unixdev-SL-PHP --> +</sect1 +> <!-- unixdev-scripting-languages --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<sect1 id="unixdev-hl-script"> +<title +>Высокоуровневые сценарии</title> + +<para +>Высокоуровневые приложения обычно более медлительные и не так гибки в применении. Это проявляется в мире программ с графическим пользовательским интерфейсом (GUI), таких как &kde;. </para> +<para +>Потребность в некоем подобии конвейеров низкоуровневых консольных программ для высокоуровневых приложений привела к появлению <link linkend="unixdev-corba" +>CORBA</link +> и, позже в среде &kde;, <link linkend="unixdev-dcop" +>&DCOP;</link +>. </para> + +<sect2 id="unixdev-corba"> +<title +>Протокол CORBA</title> + +<indexterm zone="unixdev-corba" +><primary +>CORBA</primary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>языки сценариев</primary> + <secondary +>CORBA</secondary +></indexterm> +<indexterm zone="unixdev-corba"> + <primary +>связь</primary> + <secondary +>CORBA</secondary +></indexterm> + +<para +><ulink url="http://www.omg.org/gettingstarted/corbafaq.htm" +>CORBA</ulink +> (<emphasis +>Common Object Request Broker Architecture</emphasis +>) - это механизм, позволяющий разным программам работать совместно через сеть. Он разработан комитетом стандартов <ulink url="http://www.omg.org" +>OMG</ulink +> (Object Management Group). </para> +<para +>Программы, поддерживающие CORBA, используют протокол IIOP для связи. Реализации, основанные на IIOP, есть для многих операционных систем, языков программирования, и сетей, что делает его хорошо переносимым. </para> +<para +>Основной недостаток CORBA - это его очень низкая скорость. Возможно это не так существенно. в сетях с мощными серверами, но на обычных компьютерах, для которых предназначен &kde;, это является главным. </para> + +</sect2 +> <!-- unixdev-corba --> + +<sect2 id="unixdev-dcop"> +<title +>Интерфейс &DCOP;</title> + +<indexterm zone="unixdev-dcop" +><primary +>DCOP</primary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>языки сценариев</primary> + <secondary +>DCOP</secondary +></indexterm> +<indexterm zone="unixdev-dcop"> + <primary +>связь</primary> + <secondary +>DCOP</secondary +></indexterm> + +<para +>Протокол <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +><emphasis +>DCOP</emphasis +></ulink +> разработан для связи и более тесной интеграции между приложениями &kde;, т.к. использование медленного CORBA, имеющего ряд ограничений, привело бы к всеобщей "неподъёмности" &kde; на обычных компьютерах. </para> +<para +>&DCOP; расшифровывается как <emphasis +>Desktop COmmuniсation Protocol</emphasis +> (протокол связи рабочих станций). Он реализован как простой механизм IPC/RPC, построенный для оперирования сокетами. Словом, он обеспечивает удобства схожие с традиционным конвейерным механизмом &UNIX;. </para> +<para +>Традиционные сценарии основываются на очень маленьких программах, которые были созданы для работы на строго текстовой основе. &DCOP; позволяет графическим программам связываться между собой схожим путём. Т.е. одна &kde;-программа может посылать сообщения другой (возможно своей копии), и сама получать и обрабатывать данные от неё. </para> +<para +>Однако у такого метода всё же есть и недостатки — для использования &DCOP; в программу нужно встроить специальный код интерфейса &DCOP;. Кроме того, связь происходит несколько медленно (но значительно быстрее CORBA), хотя, в свою очередь, она даёт мощь и гибкость сценариев &UNIX; высокоуровневым программам с графическим пользовательским интерфейсом. </para> +<para +>Для подробностей см. <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html" +>DCOP: Desktop COmmunications Protocol</ulink +> или <ulink url="developer.kde.org/documentation/library/cvs-api/dcop/html/index.html" +> &API;-справочник библиотеки &DCOP;</ulink +>. </para> +</sect2 +> <!-- unixdev-dcop --> + +</sect1 +> <!-- unixdev-hl-script --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-buildsystems"> +<title +>Системы сборки</title> + +<para +>Кроме самых простых случаев, ваш проект будет состоять из множества блоков исходного кода, разделённых по нескольким файлам для удобства сопровождения. Для преобразования исходного кода в машинный, нужно транслировать всё это в несколько машинных модулей в удобном для чтения операционной системой формате. </para> +<para +>Для этого как минимум требуется <itemizedlist> + <listitem +><para +><emphasis +>текстовый редактор</emphasis +> — для написания исходного кода, </para +></listitem> + <listitem +><para +>транслирующая программа, обычно это <emphasis +>компилятор</emphasis +>, — для преобразования исходного кода в объектные файлы, </para +></listitem> + <listitem +><para +><emphasis +>библиотекарь</emphasis +> — для сборки объектных файлов в библиотеки для последующего их использования без необходимости перекомпилирования, </para +></listitem> + <listitem +><para +><emphasis +>компоновщик</emphasis +> — связки нескольких объектных файлов и библиотек в один исполнимый файл, </para +></listitem> + <listitem +><para +><emphasis +>система сборки</emphasis +>, претендующая на управление всем этим "добром", и </para +></listitem> + <listitem +><para +><emphasis +>отладчик</emphasis +> — чтобы найти (надеемся) все ошибки в исходных кодах, и, возможно, другие диагностические утилиты для последующей оптимизации кода. </para +></listitem> +</itemizedlist> +</para> + +<para +>Когда у вас имеется большой проект, состоящий из возможно сотен исходных файлов, процесс компиляции может быть медлительным. Не нужно компилировать заново все файлы когда был изменён только один, вместо этого следует компилировать файлы, которые были затронуты изменениями. На самом деле это не так очевидно, как кажется на первый взгляд. </para> +<para +>Например, если вы изменили прототип функции в заголовке, нужно перекомпилировать каждый файл, включающий этот заголовок. И если в проекте таких файлов много, легко пропустить один делая это вручную. Сборочная система обеспечивает автоматизацию такой работы. </para> + +<sect2 id="unixdev-buildsystems-make"> +<title +>Процесс сборки</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 +>правило</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>перекомпиляция</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>target (целевой)</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>зависимости</primary +></indexterm> +<indexterm zone="unixdev-buildsystems-make"> + <primary +>команды</primary +></indexterm> + +<para +>Инструмент, выполняющий перекомпиляцию называется <command +>make</command +>. Его работа управляется специальными <emphasis +>правилами</emphasis +>, которые описывают необходимые действия в случае изменения определённой информации (обычно объектного файла или файла исходного кода). Все правила, принадлежащие определённому проекту записываются в т.н. <filename +>Makefile</filename +>, который обрабатывается командой <command +>make</command +> в любое время когда вы хотите обновить вашу работу. </para> +<para +>Каждое правило состоит из нескольких сборочных блоков, а именно <itemizedlist> + <listitem +><para +><emphasis +>целевого</emphasis +>(<emphasis +>target</emphasis +>), т.е. файла, который нужно собрать </para +></listitem> + <listitem +><para +>набора <emphasis +>зависимостей</emphasis +>, обычно это имена файлов, от которых зависит целевой (target), например это может быть имя исходного файла, где целевой будет упомянут как объектный, </para +></listitem> + <listitem +><para +><emphasis +>команд</emphasis +>, которые выполняются для <quote +>сборки</quote +> целевого файла (например его компиляции или компоновки нескольких объектных файлов). </para +></listitem> +</itemizedlist> +</para> +<para +>Обычно команда <command +>make</command +> читает правила, одно за другим, проверяет каждый файл из списка зависимостей конечного файла и собирает его заново если хотя бы один файл из списка зависимостей был изменён. </para> +<para +>В больших проектах <filename +>Makefile</filename +> может стать очень большим и сложным. Мы не можем здесь углубляться в подробности, однако рекомендуем вам изучить хотя бы основы синтаксиса <command +>make</command +>. Даже если вы не используете его напрямую, понимание принципов системы сборки вам должно пригодиться. Для подробностей см. <ulink url="info://make/Top" +> <quote +>GNU Make Manual</quote +></ulink +>. </para> +<para +>Для подробностей, касающихся &kdevelop;, см. главу <link linkend="project-management" +>Сборка и управление проектом</link +>. </para> +<para +>Доступно несколько руководств, см. в главе <link linkend="automake-references" +>Сборка и управление проектом</link +>. </para> +</sect2 +> <!-- unixdev-buildsystems-make --> + +</sect1 +> <!-- unixdev-buildsystems --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-guidevelopment"> +<title +>Объектно-ориентированное программирование</title> + +<indexterm zone="unixdev-guidevelopment"> + <primary +>GUI</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>графический пользовательский интерфейс</primary +></indexterm> +<indexterm zone="unixdev-guidevelopment"> + <primary +>пользовательский интерфейс</primary> + <secondary +>GUI</secondary +></indexterm> + +<para +>Разработчики программного обеспечения вынуждены создавать не только библиотеки и алгоритмы, но и удобный пользовательский интерфейс, гибкий и интуитивный. Однако большинство программистов не удаляют этому большого внимания, и, как результат, хорошие программы имеют <ulink url="http://www.rha.com/ui_hall_of_shame.htm" +>бедный дизайн</ulink +>. </para> +<para +>На протяжении годов, были выработаны некоторые общие принципы реализации интерфейса. Настоятельно рекомендуется придерживаться их. Таким образом ваши пользовательские интерфейсы будут сохранять общий вид и интуитивность, что непременно будет оценено пользователями. </para> +<para +>Визуальная разработка &kde; также имеет свои принципы. Их можно найти на <ulink url="http://developer.kde.org/documentation/standards/kde/style/basics/index.html" +>странице принципов дизайна пользовательского интерфейса</ulink +> в уголке разработчика &kde;. </para> +<para +>Краткое введение в дизайн графического пользовательского интерфейса можно найти <ulink url="http://axp16.iie.org.mx/Monitor/v01n03/ar_ihc2.htm" +>здесь</ulink +>, либо <ulink url="http://russian.joelonsoftware.com/" +>здесь</ulink +> (больший уклон в сторону умирающей ОС). </para> + +</sect1 +> <!-- unixdev-guidevelopment --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id="unixdev-ide"> +<title +>Концепции и средства интегрирования: IDE</title> + +<indexterm zone="unixdev-ide"> + <primary +>IDE</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>интегрированная среда разработки</primary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>разработка</primary> + <secondary +>IDE</secondary +></indexterm> +<indexterm zone="unixdev-ide"> + <primary +>окружение</primary> + <secondary +>IDE</secondary +></indexterm> + +<para +>Для каждого этапа процесса программирования существует множество отдельных инструментов — планирование, редактирование, управление файлами и компилирование (сборка), отладка, документирование и т.д. Однако по мере роста проекта, он (почти всегда) становится громоздким, и процесс его дальнейшего программирования становится затруднительным. </para> +<para +>Наиболее повторяющаяся работа проделывается при проектировании, компилировании и отладке программы. Большую часть такой работы можно автоматизировать используя шаблоны и сценарии. Другую большую часть — наличием инструментов. способных связываться один с другим через общий визуальный интерфейс (GUI). </para> +<para +>К примеру, действительно удобно, когда отладчик может открыть исходный код в редакторе и расположить курсор в месте, где произошла ошибка. </para> +<para +>Такую схему совершенствуют <emphasis +>интегрированные среды разработки</emphasis +> (&IDE;). Они собирают воедино все шаблоны, инструменты и сценарии, необходимые для продуктивного процесса разработки. </para> +<para +>Для всевозрастающей платформы &kde; таким &IDE; является &kdevelop;. Эта среда разработки содержит широкий набор инструментов, обеспечивая простое окружение разработки и сопровождения ПО, использующего разные языки программирования и платформы. </para> + +<sect2 id="unixdev-ide-kdevelop"> +<title +>Основные возможности &kdevelop; &kdevrelease;</title> + +<indexterm zone="unixdev-ide-kdevelop"> + <primary +>&kdevelop;</primary> + <secondary +>возможности</secondary +></indexterm> +<indexterm zone="unixdev-ide-kdevelop"> + <primary +>возможности</primary +></indexterm> + +<!-- ### copied from web page, needs to be updated --> + +<itemizedlist> + <listitem> + <para +>Управление всеми <emphasis +>средствами разработки</emphasis +> на языке C++, такими как компилятор, компоновщик, отладчик и система сборки</para> + </listitem> + <listitem> + <para +><emphasis +>Мастер приложений</emphasis +>, упрощающий создание новых программ</para> + </listitem> + <listitem> + <para +><emphasis +>Интегрированный редактор</emphasis +>, основанный на редакторе &kwrite;, <application +>QEditor</application +> от Trolltec или другой.</para> + </listitem> + <listitem> + <para +><emphasis +>Генератор классов</emphasis +>, для создания новых классов и интегрирования их в проект</para> + </listitem> + <listitem> + <para +><emphasis +>Управление</emphasis +> исходными, заголовочными <emphasis +>файлами</emphasis +>, документацией и т.д.</para> + </listitem> + <listitem> + <para +>Помощь при <emphasis +>написании руководства приложения</emphasis +> средствами &kde;</para> + </listitem> + <listitem> + <para +>Автоматическое генерирование <emphasis +>&API;-документации</emphasis +> в формате &HTML;, включающей описания классов проекта и перечня используемых библиотек</para> + </listitem> + <listitem> + <para +><emphasis +>Поддержка интернационализации</emphasis +>, &kbabel;</para> + </listitem> + <listitem> + <para +>Поддержка управления проектом через <emphasis +>систему управления версиями</emphasis +> (например, &CVS;)</para> + </listitem> + <listitem> + <para +>Встроенный интерфейс к <emphasis +>отладчику</emphasis +>.</para> + </listitem> + <listitem> + <para +>Встроенный эмулятор <emphasis +>консоли</emphasis +>.</para> + </listitem> + <listitem> + <para +><emphasis +>Синтаксическая подсветка</emphasis +> в файлах исходного кода.</para> + </listitem> + <listitem> + <para +><emphasis +>Автодополнение кода</emphasis +> для переменных класса, его методов, аргументов функций и т.п.</para> + </listitem> + <listitem> + <para +><emphasis +>Шаблоны для конкретных задач</emphasis +> (написание модулей &kcontrol;, &konqueror;, апплетов &kicker;, KIO, а также стилей рабочего стола)</para> + </listitem> + <listitem> + <para +>Четыре <emphasis +>дерева информации</emphasis +>, для наглядного разделения исходных, заголовочных файлов, классов и документации, что позволяет отказаться от внешнего проводника</para> + </listitem> + <listitem> + <para +><emphasis +>Кросс-компилирование</emphasis +>, с возможностью указания разных компиляторов, их ключей, архитектуры процессора и т.п.</para> + </listitem> + <listitem> + <para +>Поддержка проектов <emphasis +>Qt/Embedded</emphasis +> (таких как Zaurus и iPAQ).</para> + </listitem> + <listitem> + <para +>Простота использования <emphasis +>внешних программ</emphasis +>, в виде добавления их в меню <guimenuitem +>Сервис</guimenuitem +>.</para> + </listitem> +</itemizedlist> + +</sect2 +> <!-- unixdev-ide-kdevelop --> + +</sect1 +> <!-- unixdev-ide --> + +</appendix +> <!-- unixdev --> + |