Mercurial > hg > octave-nkf
changeset 16896:498b2dd1bd56 classdef
periodic merge of default to classdef
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 04 Jul 2013 10:09:58 -0400 |
parents | 13b3b92ea99c (current diff) b8c37a855074 (diff) |
children | 20d1b911b4e7 |
files | doc/interpreter/dynamic.txi examples/firstmexdemo.c examples/hello.cc libinterp/Makefile.am libinterp/corefcn/load-path.cc libinterp/corefcn/load-path.h libinterp/corefcn/ls-mat5.cc libinterp/corefcn/pt-jit.cc libinterp/corefcn/pt-jit.h libinterp/corefcn/symtab.cc libinterp/corefcn/symtab.h libinterp/interp-core/Cell.cc libinterp/interp-core/Cell.h libinterp/interp-core/action-container.h libinterp/interp-core/c-file-ptr-stream.cc libinterp/interp-core/c-file-ptr-stream.h libinterp/interp-core/comment-list.cc libinterp/interp-core/comment-list.h libinterp/interp-core/cutils.c libinterp/interp-core/cutils.h libinterp/interp-core/defun-dld.h libinterp/interp-core/defun-int.h libinterp/interp-core/display.cc libinterp/interp-core/display.h libinterp/interp-core/dynamic-ld.cc libinterp/interp-core/dynamic-ld.h libinterp/interp-core/event-queue.h libinterp/interp-core/gl-render.cc libinterp/interp-core/gl-render.h libinterp/interp-core/gl2ps-renderer.cc libinterp/interp-core/gl2ps-renderer.h libinterp/interp-core/gl2ps.c libinterp/interp-core/gl2ps.h libinterp/interp-core/gripes.cc libinterp/interp-core/gripes.h libinterp/interp-core/jit-ir.cc libinterp/interp-core/jit-ir.h libinterp/interp-core/jit-typeinfo.cc libinterp/interp-core/jit-typeinfo.h libinterp/interp-core/jit-util.cc libinterp/interp-core/jit-util.h libinterp/interp-core/ls-ascii-helper.cc libinterp/interp-core/ls-ascii-helper.h libinterp/interp-core/ls-hdf5.cc libinterp/interp-core/ls-hdf5.h libinterp/interp-core/ls-mat-ascii.cc libinterp/interp-core/ls-mat-ascii.h libinterp/interp-core/ls-mat4.cc libinterp/interp-core/ls-mat4.h libinterp/interp-core/ls-mat5.cc libinterp/interp-core/ls-mat5.h libinterp/interp-core/ls-oct-binary.cc libinterp/interp-core/ls-oct-binary.h libinterp/interp-core/ls-utils.cc libinterp/interp-core/ls-utils.h libinterp/interp-core/matherr.c libinterp/interp-core/mex.cc libinterp/interp-core/mex.h libinterp/interp-core/mexproto.h libinterp/interp-core/module.mk libinterp/interp-core/mxarray.in.h libinterp/interp-core/oct-errno.h libinterp/interp-core/oct-errno.in.cc libinterp/interp-core/oct-fstrm.cc libinterp/interp-core/oct-fstrm.h libinterp/interp-core/oct-hdf5.h libinterp/interp-core/oct-iostrm.cc libinterp/interp-core/oct-iostrm.h libinterp/interp-core/oct-lvalue.cc libinterp/interp-core/oct-lvalue.h libinterp/interp-core/oct-map.cc libinterp/interp-core/oct-map.h libinterp/interp-core/oct-obj.cc libinterp/interp-core/oct-obj.h libinterp/interp-core/oct-prcstrm.cc libinterp/interp-core/oct-prcstrm.h libinterp/interp-core/oct-procbuf.cc libinterp/interp-core/oct-procbuf.h libinterp/interp-core/oct-stdstrm.h libinterp/interp-core/oct-stream.cc libinterp/interp-core/oct-stream.h libinterp/interp-core/oct-strstrm.cc libinterp/interp-core/oct-strstrm.h libinterp/interp-core/oct.h libinterp/interp-core/procstream.cc libinterp/interp-core/procstream.h libinterp/interp-core/pt-jit.cc libinterp/interp-core/pt-jit.h libinterp/interp-core/siglist.c libinterp/interp-core/siglist.h libinterp/interp-core/sparse-xdiv.cc libinterp/interp-core/sparse-xdiv.h libinterp/interp-core/sparse-xpow.cc libinterp/interp-core/sparse-xpow.h libinterp/interp-core/txt-eng-ft.cc libinterp/interp-core/txt-eng-ft.h libinterp/interp-core/txt-eng.h libinterp/interp-core/unwind-prot.cc libinterp/interp-core/unwind-prot.h libinterp/interp-core/xdiv.cc libinterp/interp-core/xdiv.h libinterp/interp-core/xgl2ps.c libinterp/interp-core/xnorm.cc libinterp/interp-core/xnorm.h libinterp/interp-core/xpow.cc libinterp/interp-core/xpow.h libinterp/interp-core/zfstream.cc libinterp/interp-core/zfstream.h libinterp/interpfcn/data.cc libinterp/interpfcn/data.h libinterp/interpfcn/debug.cc libinterp/interpfcn/debug.h libinterp/interpfcn/defaults.cc libinterp/interpfcn/defaults.in.h libinterp/interpfcn/defun.cc libinterp/interpfcn/defun.h libinterp/interpfcn/dirfns.cc libinterp/interpfcn/dirfns.h libinterp/interpfcn/error.cc libinterp/interpfcn/error.h libinterp/interpfcn/file-io.cc libinterp/interpfcn/file-io.h libinterp/interpfcn/graphics.cc libinterp/interpfcn/graphics.in.h libinterp/interpfcn/help.cc libinterp/interpfcn/help.h libinterp/interpfcn/hook-fcn.cc libinterp/interpfcn/hook-fcn.h libinterp/interpfcn/input.cc libinterp/interpfcn/input.h libinterp/interpfcn/load-path.cc libinterp/interpfcn/load-path.h libinterp/interpfcn/load-save.cc libinterp/interpfcn/load-save.h libinterp/interpfcn/ls-oct-ascii.cc libinterp/interpfcn/ls-oct-ascii.h libinterp/interpfcn/module.mk libinterp/interpfcn/oct-hist.cc libinterp/interpfcn/oct-hist.h libinterp/interpfcn/octave-link.cc libinterp/interpfcn/octave-link.h libinterp/interpfcn/pager.cc libinterp/interpfcn/pager.h libinterp/interpfcn/pr-output.cc libinterp/interpfcn/pr-output.h libinterp/interpfcn/profiler.cc libinterp/interpfcn/profiler.h libinterp/interpfcn/sighandlers.cc libinterp/interpfcn/sighandlers.h libinterp/interpfcn/symtab.cc libinterp/interpfcn/symtab.h libinterp/interpfcn/sysdep.cc libinterp/interpfcn/sysdep.h libinterp/interpfcn/toplev.cc libinterp/interpfcn/toplev.h libinterp/interpfcn/utils.cc libinterp/interpfcn/utils.h libinterp/interpfcn/variables.cc libinterp/interpfcn/variables.h libinterp/interpfcn/workspace-element.h libinterp/octave-value/ov-usr-fcn.cc libinterp/octave.cc libinterp/parse-tree/lex.ll libinterp/parse-tree/oct-parse.in.yy scripts/deprecated/setstr.m scripts/help/gen_doc_cache.m src/Makefile.am |
diffstat | 473 files changed, 16269 insertions(+), 7082 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore +++ b/.hgignore @@ -26,7 +26,7 @@ ^build-.*($|/) ^configure$ ^autom4te\.cache($|/) -^config\.h\.in$ +^config\.in\.h$ # e.g. doc/faq/OctaveFAQ.info # doc/interpreter/octave.info-4
--- a/Makefile.am +++ b/Makefile.am @@ -69,16 +69,21 @@ include m4/module.mk -# Subdirectories in which to run `make all'. Including "." here -# is an attempt to force all preceding directories in the list to -# be processed before the current directory so that the +# Subdirectories in which to run `make all'. Including "." before +# @DOCDIR@ is an attempt to force all preceding directories in the list +# to be processed before the current directory so that the # scripts/DOCSTRINGS libinterp/DOCSTRINGS files are built before -# attempting to build AUTHORS and BUGS. +# attempting to build AUTHORS and BUGS. Including "." again at the end +# of the list ensures that we display the "Octave sucessfully built..." +# message at the very end of the output from Make. Another fix for +# these problems would be to continue eliminating the recursive make +# invocations so that we have better control over the dependencies and +# the order that things are built. SUBDIRS = libgnu liboctave libinterp if AMCOND_BUILD_GUI SUBDIRS += libgui endif -SUBDIRS += src scripts . @DOCDIR@ examples test +SUBDIRS += src scripts . @DOCDIR@ examples test . if ! AMCOND_BUILD_DOCS dist-hook:
--- a/NEWS +++ b/NEWS @@ -17,41 +17,6 @@ Summary of important user-visible changes for version 3.8: --------------------------------------------------------- - ** strsplit has been modified to be compatible with Matlab. There - are two instances where backward compatibility is broken. - - (1) Delimiters are now string vectors, not scalars. - - Octave's legacy behavior - - strsplit ("1 2, 3", ", ") - ans = - { - [1,1] = 1 - [1,2] = 2 - [1,3] = - [1,4] = 3 - } - - Matlab compatible behavior - - strsplit ("1 2, 3", ", ") - ans = - { - [1,1] = 1 2 - [1,2] = 3 - } - - (2) By default, Matlab treats consecutive delimiters are as a single - delimiter. By default, Octave's legacy behavior was to return an - empty string for the part between the delmiters. - - Where the legacy behavior is desired, the call to strsplit() should - specify that the delimitertype is "legacy". - - strsplit (str, del, "collapsedelimiters", false, - "delimitertype", "legacy") - ** Octave now supports nested functions with scoping rules that are compatible with Matlab. A nested function is one declared and defined within the body of another function. The nested function is only @@ -117,12 +82,6 @@ Octave:array-as-scalar => Octave:array-to-scalar Octave:array-as-vector => Octave:array-to-vector - ** The colormap function now provides new options--"list", "register", - and "unregister"--to list all available colormap functions, and to - add or remove a function name from the list of known colormap - functions. Packages that implement extra colormaps should use these - commands with PKG_ADD and PKG_DEL statements. - ** The m-files in the image directory have been overhauled. The principal benefit is that Octave will now no longer automatically @@ -135,6 +94,45 @@ colormap depending on the image class (integer images have a -1 offset to the colormap row number). + ** The colormap function now provides new options--"list", "register", + and "unregister"--to list all available colormap functions, and to + add or remove a function name from the list of known colormap + functions. Packages that implement extra colormaps should use these + commands with PKG_ADD and PKG_DEL statements. + + ** strsplit has been modified to be compatible with Matlab. There + are two instances where backward compatibility is broken. + + (1) Delimiters are now string vectors, not scalars. + + Octave's legacy behavior + + strsplit ("1 2, 3", ", ") + ans = + { + [1,1] = 1 + [1,2] = 2 + [1,3] = + [1,4] = 3 + } + + Matlab compatible behavior + + strsplit ("1 2, 3", ", ") + ans = + { + [1,1] = 1 2 + [1,2] = 3 + } + + (2) By default, Matlab treats consecutive delimiters are as a single + delimiter. By default, Octave's legacy behavior was to return an + empty string for the part between the delmiters. + + Where the legacy behavior is desired, the call to strsplit() may be + replaced by ostrsplit(), which is Octave's original implementation of + strsplit(). + ** The datevec function has been extended for better Matlab compatibility. It now accepts string inputs in the following numerical formats: 12, 21, 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior. @@ -178,20 +176,28 @@ ** Other new functions added in 3.8.0: - betaincinv ellipj findfigs polyeig tetramesh - cmpermute ellipke fminsearch rgbplot waterfall - cmunique erfcinv importdata shrinkfaces gallery - colorcube erfi iscolormap splinefit - dawson expint lines strjoin + base64_decode ellipke lines + base64_encode erfcinv polyeig + betaincinv erfi readline_re_read_init_file + built_in_docstrings_file expint readline_read_init_file + cmpermute findfigs rgbplot + cmunique fminsearch save_default_options + colorcube gallery shrinkfaces + copyobj gco splinefit + dawson hdl2struct stemleaf + dblist history_save strjoin + debug_jit importdata struct2hdl + doc_cache_create iscolormap tetramesh + ellipj jit_enable waterfall ** Deprecated functions. The following functions were deprecated in Octave 3.4 and have been removed from Octave 3.8. - autocor dispatch is_global strerror - autocov fstat krylovb values - betai gammai perror + autocor dispatch is_global setstr + autocov fstat krylovb strerror + betai gammai perror values cellidx glpkmex replot cquad is_duplicate_entry saveimage @@ -199,16 +205,14 @@ be removed from Octave 3.12 (or whatever version is the second major release after 3.8): - java_convert_matrix - java_debug - java_get - java_invoke - java_new - java_set - java_unsigned_conversion - javafields - javamethods - + default_save_options java_set + gen_doc_cache java_unsigned_conversion + java_convert_matrix javafields + java_debug javamethods + java_get re_read_readline_init_file + java_invoke read_readline_init_file + java_new saving_history + The following keywords have been deprecated in Octave 3.8 and will be removed from Octave 3.12 (or whatever version is the second major release after 3.8):
--- a/configure.ac +++ b/configure.ac @@ -2645,7 +2645,7 @@ ## Let's assume Qscintilla library is at the same location as ## other regular Qt libraries. QT_LIBS="$QT_LIBS -lqscintilla2" - OCTAVE_CHECK_FUNC_FINDFIRST_MODERN + OCTAVE_CHECK_VERSION_2_6_0 AC_DEFINE(HAVE_QSCINTILLA, 1, [Define to 1 if the QScintilla library and header files are available])
--- a/doc/interpreter/Makefile.am +++ b/doc/interpreter/Makefile.am @@ -58,7 +58,6 @@ $(top_srcdir)/examples/addtwomatrices.cc \ $(top_srcdir)/examples/celldemo.cc \ $(top_srcdir)/examples/embedded.cc \ - $(top_srcdir)/examples/firstmexdemo.c \ $(top_srcdir)/examples/fortdemo.cc \ $(top_srcdir)/examples/fortsub.f \ $(top_srcdir)/examples/funcdemo.cc \ @@ -67,6 +66,7 @@ $(top_srcdir)/examples/mycell.c \ $(top_srcdir)/examples/myfeval.c \ $(top_srcdir)/examples/myfunc.c \ + $(top_srcdir)/examples/myhello.c \ $(top_srcdir)/examples/mypow2.c \ $(top_srcdir)/examples/mysparse.c \ $(top_srcdir)/examples/mystring.c \ @@ -125,7 +125,7 @@ debug.texi \ diffeq.texi \ diagperm.texi \ - dynamic.texi \ + external.texi \ emacs.texi \ errors.texi \ eval.texi \
--- a/doc/interpreter/arith.txi +++ b/doc/interpreter/arith.txi @@ -311,7 +311,7 @@ @DOCSTRING(legendre) -@anchor{doc-gammaln} +@anchor{docXgammaln} @DOCSTRING(lgamma) @node Rational Approximations
--- a/doc/interpreter/basics.txi +++ b/doc/interpreter/basics.txi @@ -67,6 +67,13 @@ @table @code + +@item --built-in-docstrings-file @var{filename} +@cindex @code{--built-in-docstrings-file @var{filename}} +Specify the name of the file containing documentation strings for the +built-in functions of Octave. This value is normally correct and should +only need to specified in extraordinary situations. + @item --debug @itemx -d @cindex @code{--debug} @@ -75,6 +82,10 @@ parser to print a lot of information about the commands it reads, and is probably only useful if you are actually trying to debug the parser. +@item --debug-jit +@cindex @code{--debug-jit} +Enable JIT compiler debugging and tracing. + @item --doc-cache-file @var{filename} @cindex @code{--doc-cache-file @var{filename}} Specify the name of the doc cache file to use. The value of @var{filename} @@ -145,10 +156,6 @@ remote shell command or inside an Emacs shell buffer. For another way to run Octave within Emacs, see @ref{Emacs Octave Support}. -@item --jit-debug -@cindex @code{--jit-debug} -Enable JIT compiler debugging and tracing. - @item --line-editing @cindex @code{--line-editing} Force readline use for command-line editing. @@ -185,7 +192,8 @@ @cindex @code{--no-site-file} Don't read the site-wide @file{octaverc} initialization files. -@item --no-window-system +@item --no-window-system +@itemx -W @cindex @code{--no-window-system} Disable use of a windowing system including graphics. This forces a strictly terminal-only environment. @@ -240,7 +248,7 @@ beep_on_error = true confirm_recursive_rmdir = false crash_dumps_octave_core = false -default_save_options = "-mat-binary" +save_default_options = "-mat-binary" do_braindead_shortcircuit_evaluation = true fixed_point_format = true history_timestamp_format_string = "%%-- %D %I:%M %p --%%" @@ -264,8 +272,8 @@ @noindent Note that this does not enable the @code{Octave:matlab-incompatible} warning, which you might want if you want to be told about writing code -that works in Octave but not Matlab (@pxref{doc-warning}, -@pxref{doc-warning_ids}). +that works in Octave but not @sc{matlab} (@pxref{docXwarning}, +@pxref{docXwarning_ids}). @item --verbose @itemx -V @@ -425,13 +433,15 @@ @DOCSTRING(doc_cache_file) +@DOCSTRING(built_in_docstrings_file) + @DOCSTRING(suppress_verbose_help_message) The following functions are principally used internally by Octave for generating the documentation. They are documented here for completeness and because they may occasionally be useful for users. -@DOCSTRING(gen_doc_cache) +@DOCSTRING(doc_cache_create) @DOCSTRING(get_help_text) @@ -712,7 +722,7 @@ Octave also allows you customize the details of when, where, and how history is saved. -@DOCSTRING(saving_history) +@DOCSTRING(history_save) @DOCSTRING(history_control) @@ -739,9 +749,9 @@ Octave provides two commands for initializing Readline and thereby changing the command line behavior. -@DOCSTRING(read_readline_init_file) +@DOCSTRING(readline_read_init_file) -@DOCSTRING(re_read_readline_init_file) +@DOCSTRING(readline_re_read_init_file) @node Customizing the Prompt @subsection Customizing the Prompt
--- a/doc/interpreter/container.txi +++ b/doc/interpreter/container.txi @@ -38,7 +38,7 @@ @cindex structures @cindex data structures -Octave includes support for organizing data in structures. The current +Octave includes support for organizing data in structures. The current implementation uses an associative array with indices limited to strings, but the syntax is more like C-style structures. @@ -392,7 +392,7 @@ @noindent Dynamic indexing also allows you to use arbitrary strings, not merely -valid Octave identifiers (note that this does not work on @sc{Matlab}): +valid Octave identifiers (note that this does not work on @sc{matlab}): @example @group @@ -410,7 +410,7 @@ @noindent The warning id @code{Octave:matlab-incompatible} can be enabled to warn -about this usage. @xref{doc-warning_ids}. +about this usage. @xref{docXwarning_ids}. More realistically, all of the functions that operate on strings can be used to build the correct field name before it is entered into the data structure. @@ -529,7 +529,7 @@ The simplest way to process data in a structure is within a @code{for} loop (@pxref{Looping Over Structure Elements}). A similar effect can be achieved with the @code{structfun} function, where a user defined -function is applied to each field of the structure. @xref{doc-structfun}. +function is applied to each field of the structure. @xref{docXstructfun}. Alternatively, to process the data in a structure, the structure might be converted to another type of container before being treated. @@ -683,10 +683,10 @@ @end example @noindent -As can be seen, the @ref{doc-size, @code{size}} function also works +As can be seen, the @ref{docXsize, @code{size}} function also works for cell arrays. As do other functions describing the size of an -object, such as @ref{doc-length, @code{length}}, @ref{doc-numel, -@code{numel}}, @ref{doc-rows, @code{rows}}, and @ref{doc-columns, +object, such as @ref{docXlength, @code{length}}, @ref{docXnumel, +@code{numel}}, @ref{docXrows, @code{rows}}, and @ref{docXcolumns, @code{columns}}. @DOCSTRING(cell) @@ -907,7 +907,7 @@ is to iterate through it using one or more @code{for} loops. The same idea can be implemented more easily through the use of the @code{cellfun} function that calls a user-specified function on all elements of a cell -array. @xref{doc-cellfun}. +array. @xref{docXcellfun}. An alternative is to convert the data to a different container, such as a matrix or a data structure. Depending on the data this is possible
--- a/doc/interpreter/contrib.txi +++ b/doc/interpreter/contrib.txi @@ -41,7 +41,7 @@ development of Octave core, i.e., code that goes to Octave directly. You may consider developing and publishing a package instead; a great place for this is the allied Octave-Forge project -(@url{http://octave.sourceforge.net}). Note that the Octave project is +(@url{http://octave.sourceforge.net}). Note that the Octave core project is inherently more conservative and follows narrower rules. @node Building the Development Sources @@ -56,8 +56,8 @@ @section Basics of Generating a Changeset The preferable form of contribution is creating a Mercurial changeset -and submit it to the @uref{http://savannah.gnu.org/bugs/?group=octave, bug} or -@uref{http://savannah.gnu.org/patch/?func=additem&group=octave, patch} +and submit it to the @url{http://savannah.gnu.org/bugs/?group=octave, bug} or +@url{http://savannah.gnu.org/patch/?func=additem&group=octave, patch} trackers@footnote{Please use the patch tracker only for patches which add new features. If you have a patch to submit that fixes a bug, you should use the bug tracker instead.}. @@ -89,7 +89,18 @@ @end example You may want to get familiar with Mercurial queues to manage your -changesets. Here is a slightly more complex example using Mercurial +changesets. For working with queues you have to activate the extension +@nospell{mq} with the following entry in Mercurial's configuration file +@file{.hgrc} (or @file{Mercurial.ini} on Windows): + +@example +@group +[extensions] +mq= +@end group +@end example + +Here is a slightly more complex example using Mercurial queues, where work on two unrelated changesets is done in parallel and one of the changesets is updated after discussion on the bug tracker: @@ -122,6 +133,60 @@ # attach ../nasty2.diff to your bug report @end example +Mercurial has a more useful extensions that really should be enabled. +They are not enabled by default due to a number of factors +(mostly because they don't work in all terminal types). + +The following entries in the @file{.hgrc} are recommended + +@example +@group +[extensions] +graphlog= +color= +progress= +pager= +@end group +@end example + +For the color extension, default color and formatting +of @code{hg status} can be modified by + +@example +@group +[color] +status.modified = magenta bold +status.added = green bold +status.removed = red bold +status.deleted = cyan bold +status.unknown = black bold +status.ignored = black bold +@end group +@end example + +Sometimes a few further improvements for the pager extension are +necessary. The following options should not be enabled unless paging +isn't working correctly: + +@example +@group +[pager] +# Some options for the less pager, see less(1) for their meaning. +pager = LESS='FSRX' less + +# Some commands that aren't paged by default; also enable paging +# for them +attend = tags, help, annotate, cat, diff, export, status, \ + outgoing, incoming +@end group +@end example + +Enabling the described extensions should immediately lead to a difference +when using the command line version of @nospell{hg}. Of these options, the +only one that enables a new command is @nospell{graphlog}. It is recommanded +that you use the command @code{hg glog} instead of @code{hg log} for a better +feel what commits are being based on. + @node General Guidelines @section General Guidelines @@ -364,7 +429,7 @@ @node Other Sources @section Other Sources Apart from C++ and Octave language (m-files), Octave's sources include -files written in C, Fortran, M4, Perl, Unix shell, AWK, Texinfo and +files written in C, Fortran, M4, Perl, Unix shell, AWK, Texinfo, and @TeX{}. There are not many rules to follow when using these other languages; some of them are summarized below. In any case, the golden rule is: if you modify a source file, try to follow any conventions you
--- a/doc/interpreter/contributors.in +++ b/doc/interpreter/contributors.in @@ -36,6 +36,7 @@ Clinton Chee Albert Chin-A-Young Carsten Clark +Catalin Codreanu J. D. Cole Martin Costabel Michael Creel
--- a/doc/interpreter/data.txi +++ b/doc/interpreter/data.txi @@ -27,10 +27,10 @@ It is also possible to define new specialized data types by writing a small amount of C++ code. On some systems, new data types can be loaded dynamically while Octave is running, so it is not necessary to recompile -all of Octave just to add a new type. @xref{Dynamically Linked -Functions}, for more information about Octave's dynamic linking -capabilities. @ref{User-defined Data Types} describes what you must do -to define a new data type for Octave. +all of Octave just to add a new type. @xref{External Code Interface}, for +more information about Octave's dynamic linking capabilities. +@ref{User-defined Data Types} describes what you must do to define a +new data type for Octave. @DOCSTRING(typeinfo)
--- a/doc/interpreter/debug.txi +++ b/doc/interpreter/debug.txi @@ -91,32 +91,33 @@ @example @group dbstop ("asind", 1) -@result{} 28 +@result{} 29 @end group @end example @noindent -Note that the return value of @code{27} means that the breakpoint was -effectively set to line 27. The status of breakpoints in a function can +Note that the return value of @code{29} means that the breakpoint was +effectively set to line 29. The status of breakpoints in a function can be queried with the @code{dbstatus} function. @DOCSTRING(dbstatus) @noindent -Taking the above as an example, @code{dbstatus ("asind")} should return -28. The breakpoints can then be cleared with the @code{dbclear} function +Reusing the previous example, @code{dbstatus ("asind")} will return +29. The breakpoints listed can then be cleared with the @code{dbclear} +function. @DOCSTRING(dbclear) @noindent -These functions can be used to clear all the breakpoints in a function. For -example: +These functions can be used together to clear all the breakpoints in a +particular function. For example: @example dbclear ("asind", dbstatus ("asind")); @end example -A breakpoint can be set in a subfunction. For example if a file contains +A breakpoint may also be set in a subfunction. For example, if a file contains the functions @example @@ -151,13 +152,13 @@ @noindent The @code{keyboard} function is typically placed in a script at the -point where the user desires that the execution is stopped. It +point where the user desires that the execution be stopped. It automatically sets the running script into the debug mode. @node Debug Mode @section Debug Mode -There are two additional support functions that allow the user to +There are three additional support functions that allow the user to interrogate where in the execution of a script Octave entered the debug mode and to print the code in the script surrounding the point where Octave entered debug mode. @@ -166,16 +167,23 @@ @DOCSTRING(dbtype) +@DOCSTRING(dblist) + You may also use @code{isdebugmode} to determine whether the debugger is currently active. @DOCSTRING(isdebugmode) Debug mode also allows single line stepping through a function using -the commands @code{dbstep}. +the command @code{dbstep}. @DOCSTRING(dbstep) +When in debug mode the @key{RETURN} will execute the last entered command. +This is useful, for example, after hitting a breakpoint and entering +@code{dbstep}. After that one can advance line by line through the code +with only a single key stroke. + @node Call Stack @section Call Stack
--- a/doc/interpreter/diagperm.txi +++ b/doc/interpreter/diagperm.txi @@ -519,6 +519,7 @@ @item permutation matrix * matrix is equivalent to permuting rows @end itemize + all of these natural mathematical truths would be invalidated by treating assumed zeros as numerical ones.
--- a/doc/interpreter/diffeq.txi +++ b/doc/interpreter/diffeq.txi @@ -69,6 +69,7 @@ @example @group +## oregonator differential equation function xdot = f (x, t) xdot = zeros (3,1); @@ -109,6 +110,10 @@ Solvers}, in Scientific Computing, R. S. Stepleman, editor, (1983) for more information about the inner workings of @code{lsode}. +An m-file for the differential equation used above is included with the +Octave distribution in the examples directory under the name +@file{oregonator.m}. + @node Differential-Algebraic Equations @section Differential-Algebraic Equations
--- a/doc/interpreter/doccheck/aspell-octave.en.pws +++ b/doc/interpreter/doccheck/aspell-octave.en.pws @@ -20,8 +20,11 @@ anova Anymap API +APIs +appdata approximant arg +args ARMA arpack ascii @@ -49,6 +52,7 @@ Backends backends bartlett +BaseValue Bateman BDF bdf @@ -82,6 +86,7 @@ boxxyerrorbars bracketx brackety +braindead breakpoint Brenan broadcastable @@ -97,11 +102,10 @@ CallbackObject callee's camd +CancelString cauchy caxis ccolamd -CCR -CCS cd cdata CDF @@ -116,6 +120,7 @@ changesets Chaves chdir +Chebyshev chisq chisquare chol @@ -129,6 +134,7 @@ classpath classpaths Clenshaw +CLI clim cloglog clubsuit @@ -136,6 +142,7 @@ cmd cmember cntrl +codebases cof coffset colamd @@ -176,6 +183,7 @@ cumprod cumsum cURL +CurrentObject Cuthill cxsparse Cygwin @@ -192,7 +200,6 @@ davis ddd dddd -dddddddddd deallocate deallocated deconv @@ -206,18 +213,18 @@ demi Demmel DeskJet -Deskjet det diag diamondsuit dir disp +DisplayName +DisplayNames displayrange dMatrix dmperm -DMS -Dn Dobkin +docstrings dOmega dotall dotexceptnewline @@ -260,6 +267,7 @@ equispaced erf erfc +erfi errno Errorbar errorbar @@ -290,7 +298,7 @@ fftpack FFTs fftw -FG +Fiedler fieldname fieldnames filename @@ -309,6 +317,7 @@ forall foregroundcolor formfeed +Forsythe Fortran fpdf fprintf @@ -337,7 +346,6 @@ geoinv geopdf geornd -GEP geq gesdd gesvd @@ -394,6 +402,7 @@ Hessenberg heteroscedascity hggroup +hggroups hh HH Higham @@ -417,13 +426,12 @@ Hyndman Hypergeometric hypergeometric +IEC IEEE ifelse -iff ifft ifftn ignorecase -IIP ij Im imag @@ -433,6 +441,7 @@ indices infty init +InitialValue inline Inline inpolygon @@ -446,6 +455,7 @@ Interpolants interquartile inv +involutory ipermute ishandle ishghandle @@ -458,17 +468,19 @@ iter ith iy +iz Jacobian Jacobians javaaddpath javamem -ji JIT jpeg JPEG jpg jvm JVM's +Kac +Kahan keybindings keypress Kolmogorov @@ -487,6 +499,7 @@ laplace Larimore LaserJet +Lauchli lceil ldiv ldivide @@ -496,6 +509,7 @@ leftarrow Leftrightarrow leftrightarrow +Lehmer Lehoucq leq Levinson @@ -515,6 +529,8 @@ linespoints linkprop listdlg +ListSize +ListString literalspacing Liu LLVM @@ -532,6 +548,7 @@ Lookup lookups Los +Lotkin Lovato lpx lr @@ -594,7 +611,6 @@ mmmm mmmyy mmmyyyy -modelled Moler Montanet mpoles @@ -614,6 +630,8 @@ myclass myfun nabla +namespace +NAMESPACE NaN NaNs nargin @@ -638,11 +656,13 @@ nnls nnz nocompute +nodither nolabel noncommercially nonconformant nonsmooth nonzeros +NOP noperm normcdf normest @@ -655,13 +675,13 @@ notin nthargout NTSC -nul +ntsc Numpy -Nx nzmax oct octaverc ODEPACK +OKString OLS onCleanup online @@ -680,6 +700,7 @@ papersize paperunits parseparams +Parter pbm PBM PBMplus @@ -693,6 +714,7 @@ pcx pdf PDF +pentadiagonal periodogram perp Petzold's @@ -719,6 +741,7 @@ postorder PostScript Pothen +powerset pre preconditioner premultiplied @@ -729,6 +752,8 @@ priori Profiler profiler +prolate +PromptString propto proven ps @@ -736,11 +761,10 @@ pseudonorm pseudorandom Pseudospectra +pseudospectrum ptrace punct -PWS Pxx -Qci Qhull qhull QP @@ -773,10 +797,10 @@ Readline readline recursing +Redheffer reentrant regex regressor -reimported Reindent relicensing ren @@ -793,6 +817,7 @@ RET returnonerror rfloor +rgb RGB Riccati Rightarrow @@ -806,13 +831,11 @@ Rossum rpath RPMs -rr runtime sa Saad Sandia SAS -sB Schafer schar Schur @@ -821,6 +844,7 @@ se sed seealso +SelectionMode semidefinite Sep Shampine @@ -886,6 +910,7 @@ strncmpi strread strread's +strsplit struct structs subarrays @@ -936,6 +961,7 @@ symamd symbfact symrcm +Szego tcdf Tcv terminal's @@ -944,6 +970,7 @@ Texinfo TextAlphaBits textfield +textread textscan th ths @@ -972,6 +999,7 @@ triplot trnd Tsang +Tukey tuples Tx txi @@ -988,7 +1016,6 @@ Ultrix umfpack uminus -un Unary unary uncomment @@ -1009,6 +1036,7 @@ univariate unnormalized unpadded +unpermuted unpivoted unregister unshare @@ -1038,11 +1066,12 @@ Villadsen voronoi Voronoi -Wa waitbar waitbars wallis warndlg +Wathen +WAV wblcdf wblinv wblpdf @@ -1066,7 +1095,6 @@ windowstyle WinRand WIPO -Wl wp wspace xb @@ -1085,6 +1113,7 @@ xPBTRF xPOTRF xPTSV +xtest xTRTRS xu xwd @@ -1104,7 +1133,6 @@ yyyymmdd yyyymmddTHHMMSS Zechner -zer Ziggurat zlib zlim
--- a/doc/interpreter/errors.txi +++ b/doc/interpreter/errors.txi @@ -189,7 +189,7 @@ "Octave" is used for Octave's own errors. Any other string is available as a namespace for user's own errors. -The next example counts indexing errors. The errors are catched using the +The next example counts indexing errors. The errors are caught using the field identifier of the structure returned by the function @code{lasterror}. @example
--- a/doc/interpreter/expr.txi +++ b/doc/interpreter/expr.txi @@ -768,7 +768,7 @@ For complex numbers, the following ordering is defined: @var{z1} < @var{z2} -iff +if and only if @example @group
rename from doc/interpreter/dynamic.txi rename to doc/interpreter/external.txi --- a/doc/interpreter/dynamic.txi +++ b/doc/interpreter/external.txi @@ -17,50 +17,91 @@ @c along with Octave; see the file COPYING. If not, see @c <http://www.gnu.org/licenses/>. -@node Dynamically Linked Functions -@appendix Dynamically Linked Functions +@node External Code Interface +@appendix External Code Interface @cindex dynamic-linking +@cindex Dynamically Linked Functions +@cindex Octave API + +“The sum of human wisdom is not contained in any one language" + ---Ezra Pound -Octave has the possibility of including compiled code as dynamically -linked extensions and then using these extensions as if they were part -of Octave itself. Octave can call C++ code -through its native oct-file interface or C code through its mex -interface. It can also indirectly call functions written in any other -language through a simple wrapper. The reasons to write code in a -compiled language might be either to link to an existing piece of code -and allow it to be used within Octave, or to allow improved performance -for key pieces of code. +Octave is a fantastic language for solving many problems in science and +engineering. However, it is not the only computer language and there +are times when you may want to use code written in other languages. +Good reasons for doing so include: 1) not re-inventing the wheel; existing +function libraries which have been thoroughly tested and debugged or +large scale simulation codebases are a good example, 2) accessing unique +capabilities of a different language; for example the well-known regular +expression functions of Perl (but don't do that because @code{regexp} +already exists in Octave). -Before going further, you should first determine if you really need to -use dynamically linked functions at all. Before proceeding with writing -any dynamically linked function to improve performance you should -address ask yourself +Performance should generally @strong{not} be a reason for using compiled +extensions. Although compiled extensions can run faster, particularly +if they replace a loop in Octave code, this is almost never the best path +to take. First, there are many techniques to speed up Octave performance while +remaining within the language. Second, Octave is a high-level language that +makes it easy to perform common mathematical tasks. Giving that up means +shifting the focus from solving the real problem to solving a computer +programming problem. It means returning to low-level constructs such as +pointers, memory management, mathematical overflow/underflow, etc. Because +of the low level nature, and the fact that the compiled code is executed outside +of Octave, there is the very real possibility of crashing the interpreter and +losing work. + +Before going further, you should first determine if you really need to bother +writing code outside of Octave. @itemize @bullet @item -Can I get the same functionality using the Octave scripting language only? +Can I get the same functionality using the Octave scripting language alone? + +Even when a function already exists outside the language, it may be +better to simply reproduce the behavior in an m-file rather than attempt to +interface to the outside code. @item -Is it thoroughly optimized Octave code? Vectorization of Octave code, -doesn't just make it concise, it generally significantly improves its -performance. Above all, if loops must be used, make sure that the -allocation of space for variables takes place outside the loops using an -assignment to a matrix of the right size, or zeros. +Is the code thoroughly optimized for Octave? + +If performance is an issue you should always start with the in-language +techniques for getting better performance. Chief among these is vectorization +(@pxref{Vectorization and Faster Code Execution}) which not only makes the +code concise and more understandable but improves performance (10X-100X). +If loops must be used, make sure that the allocation of space for variables +takes place outside the loops using an assignment to a matrix of the right +size, or zeros. @item -Does it make as much use as possible of existing built-in library -routines? These are highly optimized and many do not carry the overhead +Does the code make as much use as possible of existing built-in library +routines? + +These routines are highly optimized and many do not carry the overhead of being interpreted. @item -Does writing a dynamically linked function represent useful investment +Does writing a dynamically linked function represent a useful investment of your time, relative to staying in Octave? + +It will take time to learn Octave's interface for external code and +there will inevitably be issues with tools such as compilers. @end itemize -Also, as oct- and mex-files are dynamically linked to Octave, they -introduce the possibility of Octave crashing due to errors in -the user code. For example a segmentation violation in the user's code -will cause Octave to abort. +With that said, Octave offers a versatile interface for including chunks +of compiled code as dynamically linked extensions. These dynamically linked +functions can be called from the interpreter in the same manner as any +ordinary function. The interface is bi-directional and external code can +call Octave functions (like @code{plot}) which otherwise might be very +difficult to develop. + +The interface is centered around supporting the languages C++, C, and Fortran. +Octave itself is written in C++ and can call external C++/C code through its +native oct-file interface. The C language is also supported through the +mex-file interface for compatibility with @sc{matlab}. Fortran code is easiest +to reach through the oct-file interface. + +Because many other languages provide C or C++ APIs it is relatively simple +to build bridges between Octave and other languages. This is also a way to +bridge to hardware resources which often have device drivers written in C. @menu * Oct-Files:: @@ -94,12 +135,19 @@ @node Getting Started with Oct-Files @subsection Getting Started with Oct-Files -The basic command to build oct-files is @code{mkoctfile} and it can be -call from within octave or from the command line. +Oct-files are pieces of C++ code that have been compiled with the Octave +API into a dynamically loadable object. They take their name from the file +which contains the object which has the extension @file{.oct}. + +Finding a C++ compiler, using the correct switches, adding the right include +paths for header files, etc. is a difficult task. Octave automates this by +providing the @code{mkoctfile} command with which to build oct-files. The +command is available from within Octave or at the shell command line. @DOCSTRING(mkoctfile) -Consider the short C++ example: +Consider the following short example which introduces the basics of +writing a C++ function that can be linked to Octave. @example @group @@ -107,17 +155,14 @@ @end group @end example -This example although short introduces the basics of writing a C++ -function that can be dynamically linked to Octave. The easiest way to -make available most of the definitions that might be necessary for a C++ -oct-file in Octave is to use the @code{#include <octave/oct.h>} header. +The first critical line is @code{#include <octave/oct.h>} which +makes available most of the definitions necessary for a C++ oct-file. Note that @file{octave/oct.h} is a C++ header and cannot be directly -@code{#include}'ed in a C source file, nor any other language. What -follows is mostly C++, with a discussion of other languages in section -@ref{Calling External Code from Oct-Files}. +@code{#include}'ed in a C source file, nor any other language. -The macro that defines the entry point into the dynamically loaded -function is @w{@code{DEFUN_DLD}}. This macro takes four arguments, these being +Included by @file{oct.h} is a definition for the macro +@w{@code{DEFUN_DLD}} which creates a dynamically loaded function. This +macro takes four arguments: @enumerate 1 @item The function name as it will be seen in Octave, @@ -127,36 +172,35 @@ @item The number of output arguments, which can and often is omitted if not used, and -@item The string that will be seen as the help text of the function. +@item The string to use for the help text of the function. @end enumerate The return type of functions defined with @w{@code{DEFUN_DLD}} is always @code{octave_value_list}. There are a couple of important considerations in the choice of function -name. Firstly, it must be a valid Octave function name and so must be a -sequence of letters, digits and underscores, not starting with a -digit. Secondly, as Octave uses the function name to define the filename +name. First, it must be a valid Octave function name and so must be a +sequence of letters, digits, and underscores not starting with a +digit. Second, as Octave uses the function name to define the filename it attempts to find the function in, the function name in the @w{@code{DEFUN_DLD}} macro must match the filename of the oct-file. Therefore, -the above function should be in a file @file{helloworld.cc}, and it should be +the above function should be in a file @file{helloworld.cc}, and would be compiled to an oct-file using the command @example mkoctfile helloworld.cc @end example -This will create a file called @file{helloworld.oct}, that is the compiled +This will create a file called @file{helloworld.oct} that is the compiled version of the function. It should be noted that it is perfectly acceptable to have more than one @w{@code{DEFUN_DLD}} function in a source file. However, there must either be a symbolic link to the oct-file for each of the functions defined in the source code with the @w{@code{DEFUN_DLD}} -macro or the autoload (@ref{Function Files}) function should be used. +macro or the @code{autoload} (@ref{Function Files}) function should be used. -The rest of this function then shows how to find the number of input -arguments, how to print through the octave pager, and return from the -function. After compiling this function as above, an example of its use -is +The rest of the function shows how to find the number of input arguments, +how to print through the Octave pager, and return from the function. After +compiling this function as above, an example of its use is @example @group @@ -165,6 +209,13 @@ @end group @end example +Subsequent sections show how to use specific classes from Octave's core +internals. Base classes like dMatrix (a matrix of double values) are +found in the directory @file{liboctave/array}. The definitive reference for +how to use a particular class is the header file itself. However, it is +often enough just to study the examples in the manual in order to be able +to use the class. + @node Matrices and Arrays in Oct-Files @subsection Matrices and Arrays in Oct-Files @@ -175,18 +226,17 @@ @table @code @item Matrix -A double precision matrix class defined in dMatrix.h, +A double precision matrix class defined in @file{dMatrix.h}, @item ComplexMatrix -A complex matrix class defined in CMatrix.h, and +A complex matrix class defined in @file{CMatrix.h}, and @item BoolMatrix -A boolean matrix class defined in boolMatrix.h. +A boolean matrix class defined in @file{boolMatrix.h}. @end table -These are the basic two-dimensional matrix types of octave. In -additional there are a number of multi-dimensional array types, these -being +These are the basic two-dimensional matrix types of Octave. In +addition there are a number of multi-dimensional array types including @table @code @item NDArray @@ -198,49 +248,48 @@ @item boolNDArray A boolean array class defined in @file{boolNDArray.h} -@item int8NDArray +@item int8NDArray @itemx int16NDArray @itemx int32NDArray @itemx int64NDArray -8, 16, 32 and 64-bit signed array classes defined in +8, 16, 32, and 64-bit signed array classes defined in @file{int8NDArray.h}, @file{int16NDArray.h}, etc. -@item uint8NDArray +@item uint8NDArray @itemx uint16NDArray @itemx uint32NDArray @itemx uint64NDArray -8, 16, 32 and 64-bit unsigned array classes defined in +8, 16, 32, and 64-bit unsigned array classes defined in @file{uint8NDArray.h}, @file{uint16NDArray.h}, etc. @end table -There are several basic means of constructing matrices of -multi-dimensional arrays. Considering the @code{Matrix} type as an -example +There are several basic ways of constructing matrices or +multi-dimensional arrays. Using the class @code{Matrix} as an example +one can @itemize @bullet @item -We can create an empty matrix or array with the empty constructor. For -example +Create an empty matrix or array with the empty constructor. For example: @example Matrix a; @end example -This can be used on all matrix and array types +This can be used for all matrix and array types. @item -Define the dimensions of the matrix or array with a dim_vector. For -example +Define the dimensions of the matrix or array with a dim_vector which has +the same characteristics as the vector returned from @code{size}. For example: @example @group dim_vector dv (2); -dv(0) = 2; dv(1) = 2; +dv(0) = 2; dv(1) = 3; // 2 rows, 3 columns Matrix a (dv); @end group @end example -This can be used on all matrix and array types +This can be used on all matrix and array types. @item Define the number of rows and columns in the matrix. For example: @@ -249,11 +298,12 @@ Matrix a (2, 2) @end example -However, this constructor can only be used with the matrix types. +However, this constructor can only be used with matrix types. @end itemize -These types all share a number of basic methods and operators, a -selection of which include +These types all share a number of basic methods and operators. Many bear +a resemblance to functions that exist in the interpreter. A selection of +useful methods include @deftypefn Method T& {operator ()} (octave_idx_type) @deftypefnx Method T& elem (octave_idx_type) @@ -269,7 +319,7 @@ circumstances the user might prefer to access the data of the array or matrix directly through the @nospell{fortran_vec} method discussed below. -@deftypefn Method octave_idx_type nelem (void) const +@deftypefn Method octave_idx_type numel (void) const The total number of elements in the matrix or array. @end deftypefn @@ -281,6 +331,11 @@ The dimensions of the matrix or array in value of type dim_vector. @end deftypefn +@deftypefn Method int ndims (void) const +The number of dimensions of the matrix or array. Matrices are 2-D, +but arrays can be N-dimensional. +@end deftypefn + @deftypefn Method void resize (const dim_vector&) A method taking either an argument of type @code{dim_vector}, or in the case of a matrix two arguments of type @code{octave_idx_type} defining @@ -288,14 +343,14 @@ @end deftypefn @deftypefn Method T* fortran_vec (void) -This method returns a pointer to the underlying data of the matrix or a +This method returns a pointer to the underlying data of the matrix or array so that it can be manipulated directly, either within Octave or by an external library. @end deftypefn Operators such an @code{+}, @code{-}, or @code{*} can be used on the -majority of the above types. In addition there are a number of methods -that are of interest only for matrices such as @code{transpose}, +majority of the matrix and array types. In addition there are a number of +methods that are of interest only for matrices such as @code{transpose}, @code{hermitian}, @code{solve}, etc. The typical way to extract a matrix or array from the input arguments of @@ -307,7 +362,7 @@ @end group @end example -To avoid segmentation faults causing Octave to abort, this function +To avoid segmentation faults causing Octave to abort this function explicitly checks that there are sufficient arguments available before accessing these arguments. It then obtains two multi-dimensional arrays of type @code{NDArray} and adds these together. Note that the array_value @@ -320,22 +375,22 @@ @code{A + B}, operating on two @code{NDArray}'s returns an @code{NDArray}, which is cast to an @code{octave_value} on the return -from the function. An example of the use of this demonstration function -is +from the function. An example of the use of this demonstration function is @example @group -addtwomatrices (ones (2, 2), ones (2, 2)) - @result{} 2 2 - 2 2 +addtwomatrices (ones (2, 2), eye (2, 2)) + @result{} 2 1 + 1 2 @end group @end example A list of the basic @code{Matrix} and @code{Array} types, the methods to -extract these from an @code{octave_value} and the associated header is +extract these from an @code{octave_value}, and the associated header file is listed below. @multitable @columnfractions .3 .4 .3 +@headitem Type @tab Function @tab Source Code @item @code{RowVector} @tab @code{row_vector_value} @tab @file{dRowVector.h} @item @code{ComplexRowVector} @tab @code{complex_row_vector_value} @tab @file{CRowVector.h} @item @code{ColumnVector} @tab @code{column_vector_value} @tab @file{dColVector.h} @@ -361,7 +416,7 @@ @node Character Strings in Oct-Files @subsection Character Strings in Oct-Files -In Octave a character string is just a special @code{Array} class. +A character string in Octave is just a special @code{Array} class. Consider the example: @example @@ -389,20 +444,19 @@ One additional complication of strings in Octave is the difference between single quoted and double quoted strings. To find out if an -@code{octave_value} contains a single or double quoted string an example is +@code{octave_value} contains a single or double quoted string use +one of the predicate tests shown below. @example @group - if (args(0).is_sq_string ()) - octave_stdout << - "First argument is a singularly quoted string\n"; - else if (args(0).is_dq_string ()) - octave_stdout << - "First argument is a doubly quoted string\n"; +if (args(0).is_sq_string ()) + octave_stdout << "First argument is a single quoted string\n"; +else if (args(0).is_dq_string ()) + octave_stdout << "First argument is a double quoted string\n"; @end group @end example -Note however, that both types of strings are represented by the +Note, however, that both types of strings are represented by the @code{charNDArray} type, and so when assigning to an @code{octave_value}, the type of string should be specified. For example: @@ -412,19 +466,21 @@ charNDArray c; @dots{} // Create single quoted string -retval(1) = octave_value (ch, true, '\''); +retval(1) = octave_value (ch); // default constructor is sq_string + OR +retval(1) = octave_value (ch, '\''); // explicitly create sq_string // Create a double quoted string -retval(0) = octave_value (ch, true); +retval(0) = octave_value (ch, '"'); @end group @end example @node Cell Arrays in Oct-Files @subsection Cell Arrays in Oct-Files -Octave's cell type is equally accessible within oct-files. A cell -array is just an array of @code{octave_value}s, and so each element of the cell -array can then be treated just like any other @code{octave_value}. A simple +Octave's cell type is also available from within oct-files. A cell +array is just an array of @code{octave_value}s, and thus each element of the +cell array can be treated just like any other @code{octave_value}. A simple example is @example @@ -434,9 +490,9 @@ @end example Note that cell arrays are used less often in standard oct-files and so -the @file{Cell.h} header file must be explicitly included. The rest of this +the @file{Cell.h} header file must be explicitly included. The rest of the example extracts the @code{octave_value}s one by one from the cell array and -returns be as individual return arguments. For example consider +returns them as individual return arguments. For example: @example @group @@ -454,9 +510,9 @@ @node Structures in Oct-Files @subsection Structures in Oct-Files -A structure in Octave is map between a number of fields represented and +A structure in Octave is a map between a number of fields represented and their values. The Standard Template Library @code{map} class is used, -with the pair consisting of a @code{std::string} and an octave +with the pair consisting of a @code{std::string} and an Octave @code{Cell} variable. A simple example demonstrating the use of structures within oct-files is @@ -475,28 +531,31 @@ @end group @end example -The commented code above demonstrates how to iterate over all of the -fields of the structure, where as the following code demonstrates finding -a particular field in a more concise manner. - -As can be seen the @code{contents} method of the @code{Octave_map} class -returns a @code{Cell} which allows structure arrays to be represented. -Therefore, to obtain the underlying @code{octave_value} we write +The example above specifically uses the @code{octave_scalar_map} class which +is for representing a single struct. For structure arrays the +@code{octave_map} class is used instead. The commented code shows how the +demo could be modified to handle a structure array. In that case the +@code{contents} method returns a @code{Cell} which may have more than one +element. Therefore, to obtain the underlying @code{octave_value} in +this single-struct example we write @example -octave_value tmp = arg0.contents (p1) (0); +octave_value tmp = arg0.contents (arg1)(0); @end example @noindent -where the trailing (0) is the () operator on the @code{Cell} object. We -can equally iterate of the elements of the Cell array to address the -elements of the structure array. +where the trailing (0) is the () operator on the @code{Cell} object. If +this were a true structure array with multiple elements we could iterate +over the elements using the () operator. + +Structures are a relatively complex data container and there are more +functions available in @file{oct-map.h} which make coding with them easier +than relying on just @code{contents}. @node Sparse Matrices in Oct-Files @subsection Sparse Matrices in Oct-Files -There are three classes of sparse objects that are of interest to the -user. +There are three classes of sparse objects that are of interest to the user. @table @code @item SparseMatrix @@ -511,19 +570,18 @@ All of these classes inherit from the @code{Sparse<T>} template class, and so all have similar capabilities and usage. The @code{Sparse<T>} -class was based on Octave @code{Array<T>} class, and so users familiar +class was based on Octave's @code{Array<T>} class, and so users familiar with Octave's @code{Array} classes will be comfortable with the use of the sparse classes. The sparse classes will not be entirely described in this section, due to their similarity with the existing @code{Array} classes. However, there are a few differences due the different nature of sparse objects, -and these will be described. Firstly, although it is fundamentally +and these will be described. First, although it is fundamentally possible to have N-dimensional sparse objects, the Octave sparse classes do -not allow them at this time. So all operations of the sparse classes -must be 2-dimensional. This means that in fact @code{SparseMatrix} is -similar to Octave's @code{Matrix} class rather than its -@code{NDArray} class. +not allow them at this time; All instances of the sparse classes +must be 2-dimensional. This means that @code{SparseMatrix} is actually +more similar to Octave's @code{Matrix} class than its @code{NDArray} class. @menu * Array and Sparse Differences:: @@ -571,8 +629,7 @@ @dots{} for (int j = 0; j < nc; j++) for (int i = 0; i < nr; i++) - std::cerr << " (" << i << "," << j << "): " << sm(i,j) - << std::endl; + std::cerr << " (" << i << "," << j << "): " << sm(i,j) << std::endl; @end group @end example @@ -594,32 +651,30 @@ const SparseMatrix tmp (sm); for (int j = 0; j < nc; j++) for (int i = 0; i < nr; i++) - std::cerr << " (" << i << "," << j << "): " << tmp(i,j) - << std::endl; + std::cerr << " (" << i << "," << j << "): " << tmp(i,j) << std::endl; @end group @end example -Finally, as the sparse types aren't just represented as a contiguous +Finally, as the sparse types aren't represented by a contiguous block of memory, the @nospell{@code{fortran_vec}} method of the @code{Array<T>} -is not available. It is however replaced by three separate methods +is not available. It is, however, replaced by three separate methods @code{ridx}, @code{cidx} and @code{data}, that access the raw compressed -column format that the Octave sparse matrices are stored in. -Additionally, these methods can be used in a manner similar to @code{elem}, -to allow the matrix to be accessed or filled. However, in that case it is -up to the user to respect the sparse matrix compressed column format -discussed previous. +column format that Octave sparse matrices are stored in. These methods can be +used in a manner similar to @code{elem} to allow the matrix to be accessed or +filled. However, in that case it is up to the user to respect the sparse +matrix compressed column format. @node Creating Sparse Matrices in Oct-Files @subsubsection Creating Sparse Matrices in Oct-Files -You have several alternatives for creating a sparse matrix. -You can first create the data as three vectors representing the -row and column indexes and the data, and from those create the matrix. -Or alternatively, you can create a sparse matrix with the appropriate +There are several useful alternatives for creating a sparse matrix. +The first is to create three vectors representing the row index, column index, +and data values, and from these create the matrix. +The second alternative is to create a sparse matrix with the appropriate amount of space and then fill in the values. Both techniques have their advantages and disadvantages. -Here is an example of how to create a small sparse matrix with the first +Below is an example of creating a small sparse matrix using the first technique @example @@ -630,10 +685,10 @@ ColumnVector cidx (nz); ColumnVector data (nz); -ridx(0) = 0; ridx(1) = 0; ridx(2) = 1; ridx(3) = 2; -cidx(0) = 0; cidx(1) = 1; cidx(2) = 3; cidx(3) = 3; -data(0) = 1; data(1) = 2; data(2) = 3; data(3) = 4; - +ridx(0) = 0; cidx(0) = 0; data(0) = 1; +ridx(1) = 0; cidx(1) = 1; data(1) = 2; +ridx(2) = 1; cidx(2) = 3; data(2) = 3; +ridx(3) = 2; cidx(3) = 3; data(3) = 4; SparseMatrix sm (data, ridx, cidx, nr, nc); @end group @end example @@ -642,21 +697,21 @@ which creates the matrix given in section @ref{Storage of Sparse Matrices}. Note that the compressed matrix format is not used at the time of the creation of the matrix itself, -however it is used internally. +but is used internally. -As previously mentioned, the values of the sparse matrix are stored -in increasing column-major ordering. Although the data passed by the -user does not need to respect this requirement, the pre-sorting the -data significantly speeds up the creation of the sparse matrix. +As discussed in the chapter on Sparse Matrices, the values of the sparse +matrix are stored in increasing column-major ordering. Although the data +passed by the user need not respect this requirement, pre-sorting the +data will significantly speed up creation of the sparse matrix. -The disadvantage of this technique of creating a sparse matrix is -that there is a brief time where two copies of the data exists. Therefore -for extremely memory constrained problems this might not be the right -technique to create the sparse matrix. +The disadvantage of this technique for creating a sparse matrix is +that there is a brief time when two copies of the data exist. For +extremely memory constrained problems this may not be the best +technique for creating a sparse matrix. -The alternative is to first create the sparse matrix with the desired -number of non-zero elements and then later fill those elements in. The -easiest way to do this is +The alternative is to first create a sparse matrix with the desired +number of non-zero elements and then later fill those elements in. +Sample code: @example @group @@ -666,17 +721,16 @@ @end group @end example -That creates the same matrix as previously. Again, although it is not +This creates the same matrix as previously. Again, although not strictly necessary, it is significantly faster if the sparse matrix is -created in this manner that the elements are added in column-major -ordering. The reason for this is that if the elements are inserted -at the end of the current list of known elements then no element -in the matrix needs to be moved to allow the new element to be -inserted. Only the column indexes need to be updated. +created and the elements are added in column-major ordering. The reason +for this is that when elements are inserted at the end of the current list +of known elements then no element in the matrix needs to be moved to allow +the new element to be inserted; Only the column indexes need to be updated. -There are a few further points to note about this technique of creating -a sparse matrix. Firstly, it is possible to create a sparse matrix -with fewer elements than are actually inserted in the matrix. Therefore +There are a few further points to note about this method of creating +a sparse matrix. First, it is possible to create a sparse matrix +with fewer elements than are actually inserted in the matrix. Therefore, @example @group @@ -687,57 +741,52 @@ @end example @noindent -is perfectly valid. However it is a very bad idea. The reason is that -as each new element is added to the sparse matrix the space allocated -to it is increased by reallocating the memory. This is an expensive -operation, that will significantly slow this means of creating a sparse -matrix. Furthermore, it is possible to create a sparse matrix with -too much storage, so having @var{nz} above equaling 6 is also valid. -The disadvantage is that the matrix occupies more memory than strictly -needed. +is perfectly valid. However, it is a very bad idea because as each new +element is added to the sparse matrix the matrix needs to request more +space and reallocate memory. This is an expensive operation, that will +significantly slow this means of creating a sparse matrix. Furthermore, +it is possible to create a sparse matrix with too much storage, so having +@var{nz} greater than 4 is also valid. The disadvantage is that the matrix +occupies more memory than strictly needed. -It is not always easy to know the number of non-zero elements prior -to filling a matrix. For this reason the additional storage for the -sparse matrix can be removed after its creation with the -@dfn{maybe_compress} function. Furthermore, the maybe_compress can -deallocate the unused storage, but it can equally remove zero elements +It is not always possible to know the number of non-zero elements prior +to filling a matrix. For this reason the additional unused storage of +a sparse matrix can be removed after its creation with the +@code{maybe_compress} function. In addition, @code{maybe_compress} can +deallocate the unused storage, but it can also remove zero elements from the matrix. The removal of zero elements from the matrix is -controlled by setting the argument of the @dfn{maybe_compress} function -to be @samp{true}. However, the cost of removing the zeros is high because it -implies resorting the elements. Therefore, if possible it is better -is the user doesn't add the zeros in the first place. An example of -the use of @dfn{maybe_compress} is +controlled by setting the argument of the @code{maybe_compress} function +to be @code{true}. However, the cost of removing the zeros is high because it +implies re-sorting the elements. If possible, it is better +if the user does not add the unnecessary zeros in the first place. +An example of the use of @code{maybe_compress} is @example @group - int nz = 6, nr = 3, nc = 4; +int nz = 6, nr = 3, nc = 4; - SparseMatrix sm1 (nr, nc, nz); - sm1(0,0) = 1; sm1(0,1) = 2; sm1(1,3) = 3; sm1(2,3) = 4; - sm1.maybe_compress (); // No zero elements were added +SparseMatrix sm1 (nr, nc, nz); +sm1(0,0) = 1; sm1(0,1) = 2; sm1(1,3) = 3; sm1(2,3) = 4; +sm1.maybe_compress (); // No zero elements were added - SparseMatrix sm2 (nr, nc, nz); - sm2(0,0) = 1; sm2(0,1) = 2; sm(0,2) = 0; sm(1,2) = 0; - sm1(1,3) = 3; sm1(2,3) = 4; - sm2.maybe_compress (true); // Zero elements were added +SparseMatrix sm2 (nr, nc, nz); +sm2(0,0) = 1; sm2(0,1) = 2; sm(0,2) = 0; sm(1,2) = 0; +sm1(1,3) = 3; sm1(2,3) = 4; +sm2.maybe_compress (true); // Zero elements were added @end group @end example -The use of the @dfn{maybe_compress} function should be avoided if -possible, as it will slow the creation of the matrices. +The use of the @code{maybe_compress} function should be avoided if +possible as it will slow the creation of the matrix. A third means of creating a sparse matrix is to work directly with the data in compressed row format. An example of this technique might be -@c Note the @verbatim environment is a relatively new addition to Texinfo. -@c Therefore use the @example environment and replace @, with @@, -@c { with @{, etc - @example octave_value arg; @dots{} -int nz = 6, nr = 3, nc = 4; // Assume we know the max no nz +int nz = 6, nr = 3, nc = 4; // Assume we know the max # nz SparseMatrix sm (nr, nc, nz); Matrix m = arg.matrix_value (); @@ -757,12 +806,11 @@ @} sm.cidx(j+1) = ii; @} -sm.maybe_compress (); // If don't know a-priori - // the final no of nz. +sm.maybe_compress (); // If don't know a-priori the final # of nz. @end example @noindent -which is probably the most efficient means of creating the sparse matrix. +which is probably the most efficient means of creating a sparse matrix. Finally, it might sometimes arise that the amount of storage initially created is insufficient to completely store the sparse matrix. Therefore, @@ -772,7 +820,7 @@ @example octave_value arg; @dots{} -int nz = 6, nr = 3, nc = 4; // Assume we know the max no nz +int nz = 6, nr = 3, nc = 4; // Assume we know the max # nz SparseMatrix sm (nr, nc, nz); Matrix m = arg.matrix_value (); @@ -797,23 +845,22 @@ @} sm.cidx(j+1) = ii; @} -sm.maybe_mutate (); // If don't know a-priori - // the final no of nz. +sm.maybe_mutate (); // If don't know a-priori the final # of nz. @end example Note that both increasing and decreasing the number of non-zero elements in -a sparse matrix is expensive, as it involves memory reallocation. Also as -parts of the matrix, though not its entirety, exist as the old and new copy -at the same time, additional memory is needed. Therefore if possible this +a sparse matrix is expensive as it involves memory reallocation. Also as +parts of the matrix, though not its entirety, exist as old and new copies +at the same time, additional memory is needed. Therefore, if possible this should be avoided. @node Using Sparse Matrices in Oct-Files @subsubsection Using Sparse Matrices in Oct-Files Most of the same operators and functions on sparse matrices that are -available from the Octave are equally available with oct-files. +available from the Octave command line are also available within oct-files. The basic means of extracting a sparse matrix from an @code{octave_value} -and returning them as an @code{octave_value}, can be seen in the +and returning it as an @code{octave_value}, can be seen in the following example. @example @@ -831,20 +878,19 @@ @end group @end example -The conversion to an octave-value is handled by the sparse +The conversion to an @code{octave_value} is handled by the sparse @code{octave_value} constructors, and so no special care is needed. @node Accessing Global Variables in Oct-Files @subsection Accessing Global Variables in Oct-Files Global variables allow variables in the global scope to be -accessed. Global variables can easily be accessed with oct-files using -the support functions @code{get_global_value} and -@code{set_global_value}. @code{get_global_value} takes two arguments, -the first is a string representing the variable name to obtain. The -second argument is a boolean argument specifying what to do in the case -that no global variable of the desired name is found. An example of the -use of these two functions is +accessed. Global variables can be accessed within oct-files by using +the support functions @code{get_global_value} and @code{set_global_value}. +@code{get_global_value} takes two arguments, the first is a string representing +the variable name to obtain. The second argument is a boolean argument +specifying what to do if no global variable of the desired name is found. +An example of the use of these two functions is @example @EXAMPLEFILE(globaldemo.cc) @@ -868,9 +914,9 @@ @node Calling Octave Functions from Oct-Files @subsection Calling Octave Functions from Oct-Files -There is often a need to be able to call another octave function from -within an oct-file, and there are many examples of such within octave -itself. For example the @code{quad} function is an oct-file that +There is often a need to be able to call another Octave function from +within an oct-file, and there are many examples of such within Octave +itself. For example, the @code{quad} function is an oct-file that calculates the definite integral by quadrature over a user supplied function. @@ -894,8 +940,8 @@ @EXAMPLEFILE(funcdemo.cc) @end example -The first argument to this demonstration is the user supplied function -and the following arguments are all passed to the user function. +The first argument to this demonstration is the user-supplied function +and the remaining arguments are all passed to the user function. @example @group @@ -912,40 +958,41 @@ @end group @end example -When the user function is passed as a string, the treatment of the -function is different. In some cases it is necessary to always have the +When the user function is passed as a string the treatment of the +function is different. In some cases it is necessary to have the user supplied function as an @code{octave_function} object. In that -case the string argument can be used to create a temporary function like +case the string argument can be used to create a temporary function +as demonstrated below. @example @group std::octave fcn_name = unique_symbol_name ("__fcn__"); -std::string fname = "function y = "; -fname.append (fcn_name); -fname.append ("(x) y = "); +std::string fcode = "function y = "; +fcode.append (fcn_name); +fcode.append ("(x) y = "); fcn = extract_function (args(0), "funcdemo", fcn_name, - fname, "; endfunction"); + fcode, "; endfunction"); @dots{} if (fcn_name.length ()) clear_function (fcn_name); @end group @end example -There are two important things to know in this case. The number of input -arguments to the user function is fixed, and in the above is a single -argument, and secondly to avoid leaving the temporary function in the -Octave symbol table it should be cleared after use. +There are two important things to know in this case. First, the number of +input arguments to the user function is fixed, and in the above example is +a single argument. Second, to avoid leaving the temporary function in the +Octave symbol table it should be cleared after use. Also, by convention +internal function names begin and end with the character sequence @samp{__}. @node Calling External Code from Oct-Files @subsection Calling External Code from Oct-Files Linking external C code to Octave is relatively simple, as the C functions can easily be called directly from C++. One possible issue is -the declarations of the external C functions might need to be explicitly +that the declarations of the external C functions may need to be explicitly defined as C functions to the compiler. If the declarations of the -external C functions are in the header @code{foo.h}, then the manner in -which to ensure that the C++ compiler treats these declarations as C -code is +external C functions are in the header @file{foo.h}, then the tactic to +ensure that the C++ compiler treats these declarations as C code is @example @group @@ -960,10 +1007,10 @@ @end group @end example -Calling Fortran code however can pose some difficulties. This is due to -differences in the manner in compilers treat the linking of Fortran code -with C or C++ code. Octave supplies a number of macros that allow -consistent behavior across a number of compilers. +Calling Fortran code, however, can pose more difficulties. This is due to +differences in the manner in which compilers treat the linking of Fortran code +with C or C++ code. Octave supplies a number of macros that allow consistent +behavior across a number of compilers. The underlying Fortran code should use the @code{XSTOPX} function to replace the Fortran @code{STOP} function. @code{XSTOPX} uses the Octave @@ -971,15 +1018,15 @@ explicitly. Note that Octave supplies its own replacement @sc{blas} @code{XERBLA} function, which uses @code{XSTOPX}. -If the underlying code calls @code{XSTOPX}, then the @w{@code{F77_XFCN}} +If the code calls @code{XSTOPX}, then the @w{@code{F77_XFCN}} macro should be used to call the underlying Fortran function. The Fortran exception state can then be checked with the global variable @code{f77_exception_encountered}. If @code{XSTOPX} will not be called, then the @w{@code{F77_FCN}} macro should be used instead to call the Fortran code. -There is no harm in using @w{@code{F77_XFCN}} in all cases, except that for -Fortran code that is short running and executes a large number of times, +There is no great harm in using @w{@code{F77_XFCN}} in all cases, except that +for Fortran code that is short running and executes a large number of times, there is potentially an overhead in doing so. However, if @w{@code{F77_FCN}} is used with code that calls @code{XSTOP}, Octave can generate a segmentation fault. @@ -1000,18 +1047,18 @@ This example demonstrates most of the features needed to link to an external Fortran function, including passing arrays and strings, as well -as exception handling. An example of the behavior of this function is +as exception handling. Both the Fortran and C++ files need to be compiled +in order for the example to work. @example @group +mkoctfile fortdemo.cc fortsub.f [b, s] = fortdemo (1:3) @result{} b = 1.00000 0.50000 0.33333 s = There are 3 values in the input vector [b, s] = fortdemo (0:3) -error: fortsub:divide by zero -error: exception encountered in Fortran subroutine fortsub_ -error: fortdemo: error in Fortran +error: fortdemo: fortsub: divide by zero @end group @end example @@ -1019,7 +1066,7 @@ @subsection Allocating Local Memory in Oct-Files Allocating memory within an oct-file might seem easy as the C++ -new/delete operators can be used. However, in that case care must be +new/delete operators can be used. However, in that case great care must be taken to avoid memory leaks. The preferred manner in which to allocate memory for use locally is to use the @w{@code{OCTAVE_LOCAL_BUFFER}} macro. An example of its use is @@ -1032,27 +1079,32 @@ that returns a pointer @code{tmp} of type @code{double *} of length @code{len}. +In this case Octave itself will worry about reference counting and variable +scope and will properly free memory without programmer intervention. + @node Input Parameter Checking in Oct-Files @subsection Input Parameter Checking in Oct-Files -As oct-files are compiled functions they have the possibility of causing -Octave to abort abnormally. It is therefore important that -each and every function has the minimum of parameter -checking needed to ensure that Octave behaves well. +As oct-files are compiled functions they open up the possibility of +crashing Octave through careless function calls or memory faults. +It is quite important that each and every function have a sufficient level +of parameter checking to ensure that Octave behaves well. The minimum requirement, as previously discussed, is to check the number -of input arguments before using them to avoid referencing a non existent -argument. However, it some case this might not be sufficient as the -underlying code imposes further constraints. For example an external +of input arguments before using them to avoid referencing a non-existent +argument. However, in some cases this might not be sufficient as the +underlying code imposes further constraints. For example, an external function call might be undefined if the input arguments are not -integers, or if one of the arguments is zero. Therefore, oct-files often -need additional input parameter checking. +integers, or if one of the arguments is zero, or if the input is complex +and a real value was expected. Therefore, oct-files often need additional +input parameter checking. -There are several functions within Octave that might be useful for the +There are several functions within Octave that can be useful for the purposes of parameter checking. These include the methods of the -octave_value class like @code{is_real_matrix}, etc., but equally include -more specialized functions. Some of the more common ones are -demonstrated in the following example. +octave_value class like @code{is_real_matrix}, @code{is_numeric_type}, etc. +Often, with a knowledge of the Octave m-file language, you can guess at what +the corresponding C++ routine will. In addition there are some more +specialized input validation functions of which a few are demonstrated below. @example @EXAMPLEFILE(paramdemo.cc) @@ -1075,10 +1127,10 @@ @subsection Exception and Error Handling in Oct-Files Another important feature of Octave is its ability to react to the user -typing @kbd{Control-C} even during calculations. This ability is based on the +typing @key{Control-C} even during calculations. This ability is based on the C++ exception handler, where memory allocated by the C++ new/delete methods are automatically released when the exception is treated. When -writing an oct-file, to allow Octave to treat the user typing @kbd{Control-C}, +writing an oct-file, to allow Octave to treat the user typing @key{Control-C}, the @w{@code{OCTAVE_QUIT}} macro is supplied. For example: @example @@ -1092,9 +1144,9 @@ @end example The presence of the @w{@code{OCTAVE_QUIT}} macro in the inner loop allows -Octave to treat the user request with the @kbd{Control-C}. Without this macro, +Octave to treat the user request with the @key{Control-C}. Without this macro, the user must either wait for the function to return before the interrupt is -processed, or press @kbd{Control-C} three times to force Octave to exit. +processed, or press @key{Control-C} three times to force Octave to exit. The @w{@code{OCTAVE_QUIT}} macro does impose a very small speed penalty, and so for loops that are known to be small it might not make sense to include @@ -1122,7 +1174,7 @@ The Octave unwind_protect mechanism (@ref{The unwind_protect Statement}) can also be used in oct-files. In conjunction with the exception handling of Octave, it is important to enforce that certain code is run -to allow variables, etc. to be restored even if an exception occurs. An +to allow variables, etc.@: to be restored even if an exception occurs. An example of the use of this mechanism is @example @@ -1141,7 +1193,7 @@ @end group @end example -The division by zero (and in fact all warnings) is disabled in the +The warning for division by zero (and in fact all warnings) are disabled in the @code{unwinddemo} function. @node Documentation and Test of Oct-Files @@ -1154,9 +1206,9 @@ help strings within oct-files. The major issue is that the help string will typically be longer than a -single line of text, and so the formatting of long help strings need to -be taken into account. There are several manners in which to treat this -issue, but the most common is illustrated in the following example, +single line of text, and so the formatting of long help strings needs to +be taken into account. There are several possible solutions, but the most +common is illustrated in the following example, @example @group @@ -1173,32 +1225,29 @@ @end example @noindent -where, as can be seen, end line of text within the help string is -terminated by @code{\n\} which is an embedded new-line in the string -together with a C++ string continuation character. Note that the final -@code{\} must be the last character on the line. +where, as can be seen, each line of text is terminated by @code{\n\} +which is an embedded new-line in the string together with a C++ string +continuation character. Note that the final @code{\} must be the last +character on the line. -Octave also includes the ability to embed the test and demonstration +Octave also includes the ability to embed test and demonstration code for a function within the code itself (@ref{Test and Demo Functions}). This can be used from within oct-files (or in fact any file) with -certain provisos. Firstly, the test and demo functions of Octave look -for a @code{%!} as the first characters on a new-line to identify test -and demonstration code. This is equally a requirement for -oct-files. Furthermore the test and demonstration code must be included -in a comment block of the compiled code to avoid it being interpreted by -the compiler. Finally, the Octave test and demonstration code must have -access to the source code of the oct-file and not just the compiled code -as the tests are stripped from the compiled code. An example in an -oct-file might be +certain provisos. First, the test and demo functions of Octave look +for @code{%!} as the first two characters of a line to identify test +and demonstration code. This is a requirement for oct-files as well. +In addition, the test and demonstration code must be wrapped in a comment +block to avoid it being interpreted by the compiler. Finally, the Octave +test and demonstration code must have access to the original source code +of the oct-file and not just the compiled code as the tests are stripped +from the compiled code. An example in an oct-file might be @example @group /* - +%!assert (sin ([1,2]), [sin(1),sin(2)]) %!error (sin ()) %!error (sin (1,1)) -%!assert (sin ([1,2]),[sin(1),sin(2)]) - */ @end group @end example @@ -1215,14 +1264,14 @@ Octave includes an interface to allow legacy mex-files to be compiled and used with Octave. This interface can also be used to share code -between Octave and @sc{matlab} users. However, as mex-files expose the +between Octave and @sc{matlab} users. However, as mex-files expose @sc{matlab}'s internal API, and the internal structure of Octave is different, a mex-file can never have the same performance in Octave as -the equivalent oct-file. In particular to support the manner in which -mex-files access the variables passed to mex functions, there are a -significant number of additional copies of memory when calling or -returning from a mex function. For this reason, new code should be -written using the oct-file interface discussed above if possible. +the equivalent oct-file. In particular, to support the manner in which +variables are passed to mex functions there are a significant number of +additional copies of memory blocks when calling or returning from a +mex-file function. For this reason, it is recommended that any new code +be written with the oct-file interface previously discussed. @menu * Getting Started with Mex-Files:: @@ -1239,59 +1288,73 @@ @subsection Getting Started with Mex-Files The basic command to build a mex-file is either @code{mkoctfile --mex} -or @code{mex}. The first can either be used from within Octave or from +or @code{mex}. The first command can be used either from within Octave or from the command line. However, to avoid issues with @sc{matlab}'s own @code{mex} command, the use of the command @code{mex} is limited to within Octave. +Compiled mex-files have the extension @file{.mex}. @DOCSTRING(mex) @DOCSTRING(mexext) -One important difference with the use of @code{mex} between @sc{matlab} and -Octave is that the header file "matrix.h" is implicitly included through -the inclusion of "mex.h". This is to avoid a conflict with the Octave -file "Matrix.h" with operating systems and compilers that don't -distinguish between filenames in upper and lower case - -Consider the short example: +Consider the following short example: @example @group -@EXAMPLEFILE(firstmexdemo.c) +@EXAMPLEFILE(myhello.c) @end group @end example -This simple example demonstrates the basics of writing a mex-file. The -entry point into the mex-file is defined by @code{mexFunction}. Note -that the function name is not explicitly included in the +The first line @code{#include "mex.h"} makes available all of the definitions +necessary for a mex-file. One important difference between Octave and +@sc{matlab} is that the header file @code{"matrix.h"} is implicitly included +through the inclusion of @code{"mex.h"}. This is necessary to avoid a conflict +with the Octave file @code{"Matrix.h"} for operating systems and compilers that +don't distinguish between filenames in upper and lower case. + +The entry point into the mex-file is defined by @code{mexFunction}. The +function takes four arguments: + +@enumerate 1 +@item The number of return arguments (# of left-hand side args). + +@item An array of pointers to return arguments. + +@item The number of input arguments (# of right-hand side args). + +@item An array of pointers to input arguments. +@end enumerate + +Note that the function name definition is not explicitly included in @code{mexFunction} and so there can only be a single @code{mexFunction} -entry point per-file. Also the name of the function is determined by the -name of the mex-file itself. Therefore if the above function is in the -file @file{firstmexdemo.c}, it can be compiled with +entry point per file. Instead, the name of the function as seen in Octave is +determined by the name of the mex-file itself minus the extension. Therefore, +if the above function is in the file @file{myhello.c}, it can be compiled with @example -mkoctfile --mex firstmexdemo.c +mkoctfile --mex myhello.c @end example @noindent -which creates a file @file{firstmexdemo.mex}. The function can then be run -from Octave as +which creates a file @file{myhello.mex}. The function can then be run from +Octave as @example @group -firstmexdemo () -@result{} 1.2346 +myhello (1,2,3) +@result{} Hello, World! +@result{} I have 3 inputs and 0 outputs @end group @end example It should be noted that the mex-file contains no help string for the functions it contains. To document mex-files, there should exist an m-file in the same directory as the mex-file itself. Taking the above as -an example, we would therefore have a file @file{firstmexdemo.m} that might +an example, we would therefore have a file @file{myhello.m} that might contain the text @example -%FIRSTMEXDEMO Simple test of the functionality of a mex-file. +%MYHELLO Simple test of the functionality of a mex-file. @end example In this case, the function that will be executed within Octave will be @@ -1299,10 +1362,10 @@ m-file. This can also be useful to allow a sample implementation of the mex-file within the Octave language itself for testing purposes. -Although we cannot have multiple entry points into a single mex-file, -we can use the @code{mexFunctionName} function to determine what name +Although there cannot be multiple entry points in a single mex-file, +one can use the @code{mexFunctionName} function to determine what name the mex-file was called with. This can be used to alter the behavior of -the mex-file based on the function name. For example if +the mex-file based on the function name. For example, if @example @group @@ -1320,7 +1383,8 @@ @end group @end example -Then as can be seen by +@noindent +then as can be seen by @example @group @@ -1336,34 +1400,34 @@ the behavior of the mex-file can be altered depending on the functions name. -Allow the user should only include @code{mex.h} in their code, Octave +Although the user should only include @file{mex.h} in their code, Octave declares additional functions, typedefs, etc., available to the user to -write mex-files in the headers @code{mexproto.h} and @code{mxarray.h}. +write mex-files in the headers @file{mexproto.h} and @file{mxarray.h}. @node Working with Matrices and Arrays in Mex-Files @subsection Working with Matrices and Arrays in Mex-Files -The basic mex type of all variables is @code{mxArray}. All variables, -such as matrices, cell arrays or structures are all stored in this basic -type, and this type serves basically the same purpose as the -octave_value class in oct-files. That is it acts as a container for the +The basic mex type of all variables is @code{mxArray}. Any object, +such as a matrix, cell array, or structure is stored in this basic +type. As such, @code{mxArray} serves basically the same purpose as the +octave_value class in oct-files in that it acts as a container for the more specialized types. -The @code{mxArray} structure contains at a minimum, the variable it -represents name, its dimensions, its type and whether the variable is -real or complex. It can however contain a number of additional fields +The @code{mxArray} structure contains at a minimum, the name of the +variable it represents, its dimensions, its type, and whether the variable is +real or complex. It can also contain a number of additional fields depending on the type of the @code{mxArray}. There are a number of functions to create @code{mxArray} structures, including -@code{mxCreateCellArray}, @code{mxCreateSparse} and the generic -@code{mxCreateNumericArray}. +@code{mxCreateDoubleMatrix}, @code{mxCreateCellArray}, @code{mxCreateSparse}, +and the generic @code{mxCreateNumericArray}. -The basic functions to access the data contained in an array is -@code{mxGetPr}. As the mex interface assumes that the real and imaginary +The basic function to access the data contained in an array is +@code{mxGetPr}. As the mex interface assumes that real and imaginary parts of a complex array are stored separately, there is an equivalent -function @code{mxGetPi} that get the imaginary part. Both of these -functions are for use only with double precision matrices. There also -exists the generic function @code{mxGetData} and @code{mxGetImagData} -that perform the same operation on all matrix types. For example: +function @code{mxGetPi} that gets the imaginary part. Both of these +functions are only for use with double precision matrices. The generic +functions @code{mxGetData} and @code{mxGetImagData} perform the same operation +on all matrix types. For example: @example @group @@ -1372,27 +1436,25 @@ UINT32_T *pr; dims = (mwSize *) mxMalloc (2 * sizeof (mwSize)); -dims[0] = 2; -dims[1] = 2; +dims[0] = 2; dims[1] = 2; m = mxCreateNumericArray (2, dims, mxUINT32_CLASS, mxREAL); -pr = = (UINT32_T *) mxGetData (m); +pr = (UINT32_T *) mxGetData (m); @end group @end example There are also the functions @code{mxSetPr}, etc., that perform the -inverse, and set the data of an Array to use the block of memory pointed +inverse, and set the data of an array to use the block of memory pointed to by the argument of @code{mxSetPr}. -Note the type @code{mwSize} used above, and @code{mwIndex} are defined +Note the type @code{mwSize} used above, and also @code{mwIndex}, are defined as the native precision of the indexing in Octave on the platform on which the mex-file is built. This allows both 32- and 64-bit platforms -to support mex-files. @code{mwSize} is used to define array dimension -and maximum number or elements, while @code{mwIndex} is used to define +to support mex-files. @code{mwSize} is used to define array dimensions +and the maximum number or elements, while @code{mwIndex} is used to define indexing into arrays. -An example that demonstration how to work with arbitrary real or complex -double precision arrays is given by the file @file{mypow2.c} as given -below. +An example that demonstrates how to work with arbitrary real or complex +double precision arrays is given by the file @file{mypow2.c} shown below. @example @EXAMPLEFILE(mypow2.c) @@ -1409,12 +1471,11 @@ @end group @end example - The example above uses the functions @code{mxGetDimensions}, @code{mxGetNumberOfElements}, and @code{mxGetNumberOfDimensions} to work with the dimensions of multi-dimensional arrays. The functions @code{mxGetM}, and @code{mxGetN} are also available to find the number -of rows and columns in a matrix. +of rows and columns in a 2-D matrix. @node Character Strings in Mex-Files @subsection Character Strings in Mex-Files @@ -1422,8 +1483,8 @@ As mex-files do not make the distinction between single and double quoted strings within Octave, there is perhaps less complexity in the use of strings and character matrices in mex-files. An example of their -use, that parallels the demo in @file{stringdemo.cc}, is given in the -file @file{mystring.c}, as seen below. +use that parallels the demo in @file{stringdemo.cc} is given in the +file @file{mystring.c}, as shown below. @example @EXAMPLEFILE(mystring.c) @@ -1450,10 +1511,10 @@ @node Cell Arrays with Mex-Files @subsection Cell Arrays with Mex-Files -We can perform exactly the same operations in Cell arrays in mex-files -as we can in oct-files. An example that reduplicates the functional of -the @file{celldemo.cc} oct-file in a mex-file is given by -@file{mycell.c} as below +One can perform exactly the same operations on Cell arrays in mex-files +as in oct-files. An example that reduplicates the function of +the @file{celldemo.cc} oct-file in a mex-file is given by @file{mycell.c} +as shown below. @example @group @@ -1462,8 +1523,7 @@ @end example @noindent -which as can be seen below has exactly the same behavior as the oct-file -version. +The output is identical to the oct-file version as well. @example @group @@ -1480,8 +1540,8 @@ Note in the example the use of the @code{mxDuplicateArray} function. This is needed as the @code{mxArray} pointer returned by @code{mxGetCell} -might be deallocated. The inverse function to @code{mxGetCell} is -@code{mcSetCell} and is defined as +might be deallocated. The inverse function to @code{mxGetCell}, used for +setting Cell values, is @code{mxSetCell} and is defined as @example void mxSetCell (mxArray *ptr, int idx, mxArray *val); @@ -1500,7 +1560,7 @@ @subsection Structures with Mex-Files The basic function to create a structure in a mex-file is -@code{mxCreateStructMatrix}, which creates a structure array with a two +@code{mxCreateStructMatrix} which creates a structure array with a two dimensional matrix, or @code{mxCreateStructArray}. @example @@ -1514,7 +1574,7 @@ @end group @end example -Accessing the fields of the structure can then be performed with the +Accessing the fields of the structure can then be performed with @code{mxGetField} and @code{mxSetField} or alternatively with the @code{mxGetFieldByNumber} and @code{mxSetFieldByNumber} functions. @@ -1534,11 +1594,11 @@ A difference between the oct-file interface to structures and the mex-file version is that the functions to operate on structures in mex-files directly include an @code{index} over the elements of the -arrays of elements per @code{field}. Whereas the oct-file structure +arrays of elements per @code{field}; Whereas, the oct-file structure includes a Cell Array per field of the structure. -An example that demonstrates the use of structures in mex-file can be -found in the file @file{mystruct.c}, as seen below +An example that demonstrates the use of structures in a mex-file can be +found in the file @file{mystruct.c} shown below. @example @EXAMPLEFILE(mystruct.c) @@ -1585,10 +1645,9 @@ matrices are required to be two-dimensional. The only difference is that the real and imaginary parts of the matrix are stored separately. -The mex-file interface, as well as using @code{mxGetM}, @code{mxGetN}, +The mex-file interface, in addition to using @code{mxGetM}, @code{mxGetN}, @code{mxSetM}, @code{mxSetN}, @code{mxGetPr}, @code{mxGetPi}, -@code{mxSetPr} and @code{mxSetPi}, the mex-file interface supplies the -functions +@code{mxSetPr}, and @code{mxSetPi}, also supplies the following functions. @example @group @@ -1609,7 +1668,7 @@ additional value than the number of columns in the sparse matrix. The difference between consecutive values of the array returned by @code{mxGetJc} define the number of non-zero elements in each column of -the sparse matrix. Therefore +the sparse matrix. Therefore, @example @group @@ -1629,7 +1688,7 @@ only contain the non-zero values of the matrix, we also need a pointer to the rows of the non-zero elements, and this is given by @code{mxGetIr}. A complete example of the use of sparse matrices in -mex-files is given by the file @file{mysparse.c} as seen below +mex-files is given by the file @file{mysparse.c} shown below. @example @EXAMPLEFILE(mysparse.c) @@ -1638,9 +1697,9 @@ @node Calling Other Functions in Mex-Files @subsection Calling Other Functions in Mex-Files -It is also possible call other Octave functions from within a mex-file -using @code{mexCallMATLAB}. An example of the use of -@code{mexCallMATLAB} can be see in the example below +It is possible to call other Octave functions from within a mex-file +using @code{mexCallMATLAB}. An example of the use of @code{mexCallMATLAB} +can be see in the example below. @example @EXAMPLEFILE(myfeval.c) @@ -1671,9 +1730,9 @@ @node Standalone Programs @section Standalone Programs -The libraries Octave itself uses, can be utilized in standalone +The libraries Octave itself uses can be utilized in standalone applications. These applications then have access, for example, to the -array and matrix classes as well as to all the Octave algorithms. The +array and matrix classes, as well as to all of the Octave algorithms. The following C++ program, uses class Matrix from @file{liboctave.a} or @file{liboctave.so}. @@ -1684,7 +1743,7 @@ @end example @noindent -mkoctfile can then be used to build a standalone application with a +mkoctfile can be used to build a standalone application with a command like @example @@ -1698,10 +1757,10 @@ @end group @end example -Note that the application @code{hello} will be dynamically linked -against the octave libraries and any octave support libraries. The above +Note that the application @code{standalone} will be dynamically linked +against the Octave libraries and any Octave support libraries. The above allows the Octave math libraries to be used by an application. It does -not however allow the script files, oct-files or builtin functions of +not, however, allow the script files, oct-files, or builtin functions of Octave to be used by the application. To do that the Octave interpreter needs to be initialized first. An example of how to do this can then be seen in the code @@ -1713,7 +1772,7 @@ @end example @noindent -which is compiled and run as before as a standalone application with +which, as before, is compiled and run as a standalone application with @example @group
--- a/doc/interpreter/func.txi +++ b/doc/interpreter/func.txi @@ -402,7 +402,7 @@ @DOCSTRING(nargoutchk) -@anchor{doc-varargin} @anchor{doc-varargout} +@anchor{docXvarargin} @anchor{docXvarargout} @node Variable-length Argument Lists @section Variable-length Argument Lists @cindex variable-length argument lists @@ -1150,7 +1150,7 @@ A function that has been defined on the command-line. @item Autoload function -A function that is marked as autoloaded with @xref{doc-autoload}. +A function that is marked as autoloaded with @xref{docXautoload}. @item A Function on the Path A function that can be found on the users load-path. There can also be
--- a/doc/interpreter/install.txi +++ b/doc/interpreter/install.txi @@ -187,7 +187,7 @@ Linear Algebra Package (@url{http://www.netlib.org/lapack}). @item PCRE -The Perl Compatible Regular Expression library (http://www.pcre.org). +The Perl Compatible Regular Expression library (@url{http://www.pcre.org}). @end table The following external package is optional but strongly recommended: @@ -251,7 +251,7 @@ @code{load} and @code{save} commands to read and write HDF data files. @item LLVM -Compiler framework, (@url{http://www.llvm.org}). LLVM is required for +Compiler framework, (@url{http://www.llvm.org}). LLVM is required for Octave's experimental just-in-time (JIT) compilation for speeding up the interpreter. @@ -276,13 +276,13 @@ @code{qrinsert}, @code{qrshift}, and @code{qrupdate}. @item QScintilla -Source code highlighter and manipulator; a Qt port of Scintilla +Source code highlighter and manipulator; a Qt port of Scintilla (@url{http://www.riverbankcomputing.co.uk/software/qscintilla}). QScintilla is used for syntax highlighting and code completion in the GUI. @item Qt -GUI and utility libraries (@url{}). Qt is required for building the GUI. +GUI and utility libraries (@url{}). Qt is required for building the GUI. It is a large framework, but the only components required are the GUI, core, WebKit, and network modules.
--- a/doc/interpreter/intro.txi +++ b/doc/interpreter/intro.txi @@ -617,7 +617,7 @@ The function described is written in a language like C++, C, or Fortran. On systems that support dynamic linking of user-supplied functions, it may be automatically linked while Octave is running, but only if it is -needed. @xref{Dynamically Linked Functions}. +needed. @xref{External Code Interface}. @item Mapping Function @cindex mapping function
--- a/doc/interpreter/io.txi +++ b/doc/interpreter/io.txi @@ -22,7 +22,7 @@ Octave supports several ways of reading and writing data to or from the prompt or a file. The simplest functions for data Input and Output (I/O) are easy to use, but only provide limited control of how -data is processed. For more control, a set of functions modelled +data is processed. For more control, a set of functions modeled after the C standard library are also provided by Octave. @menu @@ -149,7 +149,7 @@ The @code{save} and @code{load} commands allow data to be written to and read from disk files in various formats. The default format of files written by the @code{save} command can be controlled using the functions -@code{default_save_options} and @code{save_precision}. +@code{save_default_options} and @code{save_precision}. As an example the following code creates a 3-by-3 matrix and saves it to the file @samp{myfile.mat}. @@ -180,7 +180,7 @@ There are three functions that modify the behavior of @code{save}. -@DOCSTRING(default_save_options) +@DOCSTRING(save_default_options) @DOCSTRING(save_precision) @@ -388,7 +388,7 @@ This section describes how to call @code{printf} and related functions. The following functions are available for formatted output. They are -modelled after the C language functions of the same name, but they +modeled after the C language functions of the same name, but they interpret the format template differently in order to improve the performance of printing vector and matrix values.
--- a/doc/interpreter/java.txi +++ b/doc/interpreter/java.txi @@ -151,7 +151,7 @@ @c ------------------------------------------------------------------------ @node How to distinguish between Octave and Matlab? @subsection How to distinguish between Octave and Matlab? -@anchor{doc-FAQ} +@anchor{docXFAQ} @c - index - @cindex Octave and @sc{matlab}, how to distinguish between @c - index - @@ -316,7 +316,7 @@ In order to execute Java code Octave creates a Java Virtual Machine (JVM). Such a JVM allocates a fixed amount of initial memory and may expand this pool up to a fixed maximum memory limit. The default values depend on the Java -version (see @ref{doc-javamem,,javamem}). The memory pool is shared by all +version (see @ref{docXjavamem,,javamem}). The memory pool is shared by all Java objects running in the JVM@. This strict memory limit is intended mainly to avoid that runaway applications inside web browsers or in enterprise servers can consume all memory and crash the system. When the maximum memory limit is
--- a/doc/interpreter/macros.texi +++ b/doc/interpreter/macros.texi @@ -40,8 +40,14 @@ @ifnottex @end ifnottex +@ifinfo +@noindent +See also: \args\. +@end ifinfo +@ifnotinfo @noindent @strong{See also:} \args\. +@end ifnotinfo @end macro @c The following macro marks words that aspell should ignore during
--- a/doc/interpreter/matrix.txi +++ b/doc/interpreter/matrix.txi @@ -124,7 +124,7 @@ @DOCSTRING(nth_element) -@anchor{doc-triu} +@anchor{docXtriu} @DOCSTRING(tril) @DOCSTRING(vec)
--- a/doc/interpreter/munge-texi.pl +++ b/doc/interpreter/munge-texi.pl @@ -61,7 +61,7 @@ } $func =~ s/^@/@@/; # Texinfo uses @@ to produce '@' - $docstring =~ s/^$tex_delim$/\@anchor{doc-$func}/m; + $docstring =~ s/^$tex_delim$/\@anchor{docX$func}/m; print $docstring,"\n"; next TXI_LINE; @@ -110,7 +110,7 @@ foreach $func (split (/,/, $func_list)) { $func =~ s/^@/@@/; # Texinfo uses @@ to produce '@' - $repl .= "\@ref{doc-$func,,$func}, "; + $repl .= "\@ref{docX$func,,$func}, "; } substr($repl,-2) = ""; # Remove last ', ' $_ = "\@seealso{$repl}$rest_of_line";
--- a/doc/interpreter/octave.texi +++ b/doc/interpreter/octave.texi @@ -180,7 +180,7 @@ * System Utilities:: * Java Interface:: * Packages:: -* Dynamically Linked Functions:: +* External Code Interface:: * Test and Demo Functions:: * Tips and Standards:: * Contributing Guidelines:: @@ -200,6 +200,7 @@ Preface * Acknowledgements:: +* Citing Octave in Publications:: * How You Can Contribute to Octave:: * Distribution:: @@ -599,6 +600,7 @@ * Broadcasting:: Broadcasting operations * Function Application:: Applying functions to arrays, cells, and structs * Accumulation:: Accumulation functions +* JIT Compiler:: Just-In-Time Compiler for loops * Miscellaneous Techniques:: Other techniques for speeding up code * Examples:: @@ -762,6 +764,7 @@ * FTP Objects:: * URL Manipulation:: +* Base64 and Binary Data Transmission:: Java Interface @@ -790,7 +793,7 @@ * The INDEX File:: * PKG_ADD and PKG_DEL Directives:: -Dynamically Linked Functions +External Code Interface * Oct-Files:: * Mex-Files:: @@ -941,7 +944,7 @@ @c ------------------------------------------------------------------------ @c Appendices start here. -@include dynamic.texi +@include external.texi @include testfun.texi @include tips.texi @include contrib.texi
--- a/doc/interpreter/package.txi +++ b/doc/interpreter/package.txi @@ -24,16 +24,16 @@ installation of extra packages. The `Octave-Forge' project is a community-maintained set of packages that can be downloaded and installed in Octave. At the time of writing the `Octave-Forge' project -can be found online at @uref{http://octave.sourceforge.net}, but +can be found online at @url{http://octave.sourceforge.net}, but since the Internet is an ever-changing place this may not be true at the time of reading. Therefore it is recommended to see the Octave website for an updated reference. @menu -* Installing and Removing Packages:: -* Using Packages:: -* Administrating Packages:: -* Creating Packages:: +* Installing and Removing Packages:: +* Using Packages:: +* Administrating Packages:: +* Creating Packages:: @end menu @findex pkg @@ -112,26 +112,26 @@ @node Using Packages @section Using Packages -By default installed packages are available from the Octave prompt, +By default installed packages are not available from the Octave prompt, but it is possible to control this using the @code{pkg load} and @code{pkg unload} commands. The functions from a package can be -removed from the Octave path by typing +added to the Octave path by typing + +@example +pkg load package_name +@end example + +@noindent +where @code{package_name} is the name of the package to be added +to the path. + +In much the same way a package can be removed from the Octave path by +typing @example pkg unload package_name @end example -@noindent -where @code{package_name} is the name of the package to be removed -from the path. - -In much the same way a package can be added to the Octave path by -typing - -@example -pkg load package_name -@end example - @node Administrating Packages @section Administrating Packages @@ -217,7 +217,7 @@ This is an optional file describing old entries from the @file{NEWS} file. @cindex PKG_ADD -@anchor{doc-PKG_ADD} +@anchor{docXPKG_ADD} @item package/PKG_ADD An optional file that includes commands that are run when the package is added to the users path. Note that @w{@code{PKG_ADD}} directives in the @@ -242,7 +242,7 @@ directives. @cindex PKG_DEL -@anchor{doc-PKG_DEL} +@anchor{docXPKG_DEL} @item package/PKG_DEL An optional file that includes commands that are run when the package is removed from the users path. Note that @w{@code{PKG_DEL}} directives in @@ -252,16 +252,23 @@ directives. @item package/pre_install.m -This is an optional script that is run prior to the installation of a -package. +This is an optional function that is run prior to the installation of a +package. This function is called with a single argument, a struct with +fields names after the data in the @file{DESCRIPTION}, and the paths where +the package functions will be installed. @item package/post_install.m -This is an optional script that is run after the installation of a -package. +This is an optional function that is run after the installation of a +package. This function is called with a single argument, a struct with +fields names after the data in the @file{DESCRIPTION}, and the paths where +the package functions were installed. @item package/on_uninstall.m -This is an optional script that is run prior to the removal of a -package. +This is an optional function that is run prior to the removal of a +package. This function is called with a single argument, a struct with +fields names after the data in the @file{DESCRIPTION}, the paths where +the package functions are installed, and whether the package is currently +loaded. @end table Besides the above mentioned files, a package can also contain on or @@ -270,7 +277,7 @@ @table @code @item package/inst An optional directory containing any files that are directly installed -by the package. Typically this will include any @code{m}-files. +by the package. Typically this will include any @code{m}-files. @item package/src An optional directory containing code that must be built prior to the @@ -299,9 +306,9 @@ @end table @menu -* The DESCRIPTION File:: -* The INDEX File:: -* PKG_ADD and PKG_DEL Directives:: +* The DESCRIPTION File:: +* The INDEX File:: +* PKG_ADD and PKG_DEL Directives:: @end menu @node The DESCRIPTION File @@ -339,7 +346,7 @@ description gets too long for one line it can continue on the next by adding a space to the beginning of the following lines. -License: GPL version 3 or later +License: GPLv3+ @end group @end example @@ -489,7 +496,7 @@ package with @code{pkg describe} but they will be published in the HTML documentation online. Workaround descriptions can use any HTML markup, but -keep in mind that it will be enclosed in a bold-italic environment. +keep in mind that it will be enclosed in a bold-italic environment. For the special case of: @example
--- a/doc/interpreter/plot.txi +++ b/doc/interpreter/plot.txi @@ -253,8 +253,8 @@ The @code{xlim}, @code{ylim}, and @code{zlim} functions may be used to get or set individual axis limits. Each has the same form. -@anchor{doc-ylim} -@anchor{doc-zlim} +@anchor{docXylim} +@anchor{docXzlim} @DOCSTRING(xlim) @node Two-dimensional Function Plotting @@ -464,8 +464,8 @@ See @ref{Text Properties} for the properties that you can set. -@anchor{doc-ylabel} -@anchor{doc-zlabel} +@anchor{docXylabel} +@anchor{docXzlabel} @DOCSTRING(xlabel) @DOCSTRING(clabel) @@ -531,7 +531,9 @@ become children of the current axes object. @DOCSTRING(axes) + @DOCSTRING(line) + @DOCSTRING(patch) @DOCSTRING(fill) @@ -911,7 +913,7 @@ @node Introduction to Graphics Structures @subsection Introduction to Graphics Structures @cindex introduction to graphics structures -@anchor{doc-graphics structures} +@anchor{docXgraphics structures} The graphics functions use pointers, which are of class graphics_handle, in order to address the data structures which control graphical displays. A @@ -931,7 +933,7 @@ @code{contourf}, @code{contour3}, @code{surf}, @code{mesh}, @code{surfc}, @code{meshc}, @code{errorbar}, @code{quiver}, @code{quiver3}, @code{scatter}, @code{scatter3}, @code{stair}, @code{stem}, @code{stem3} each return a handle -as documented in @ref{doc-datasources,, Data Sources}. +as documented in @ref{docXdatasources,, Data Sources}. The graphics objects are arranged in a hierarchy: @@ -947,21 +949,21 @@ @code{line}, @code{text}, @code{patch}, @code{surface}, and @code{image} objects. -Graphics handles may be distinguished from function handles (@ref{Function -Handles}) by means of the function @code{ishandle}. @code{ishandle} returns -true if its argument is a handle of a graphics object. In addition, the figure -object may be tested using @code{isfigure}. @code{isfigure} returns true only -if its argument is a handle of a figure. ishghandle() is synonymous with -ishandle(). The @code{whos} function can be used to show the object type of -each currently defined graphics handle. (Note: this is not true today, but it -is, I hope, considered an error in whos. It may be better to have whos just -show graphics_handle as the class, and provide a new function which, given a +Graphics handles may be distinguished from function handles +(@ref{Function Handles}) by means of the function @code{ishandle}. +@code{ishandle} returns true if its argument is a handle of a graphics object. +In addition, the figure object may be tested using @code{isfigure}. +@code{isfigure} returns true only if its argument is a handle of a figure. The +@code{whos} function can be used to show the object type of each currently +defined graphics handle. (Note: this is not true today, but it is, I hope, +considered an error in whos. It may be better to have whos just show +graphics_handle as the class, and provide a new function which, given a graphics handle, returns its object type. This could generalize the ishandle() functions and, in fact, replace them.) -The @code{get} and @code{set} commands are -used to obtain and set the values of properties of graphics objects. In -addition, the @code{get} command may be used to obtain property names. +The @code{get} and @code{set} commands are used to obtain and set the values of +properties of graphics objects. In addition, the @code{get} command may be +used to obtain property names. For example, the property "type" of the graphics object pointed to by the graphics handle h may be displayed by: @@ -1014,7 +1016,7 @@ @code{get (0, "")}. The uses of @code{get} and @code{set} are further explained in -@ref{doc-get,,get}, @ref{doc-set,,set}. +@ref{docXget,,get}, @ref{docXset,,set}. @DOCSTRING(isprop) @@ -1035,7 +1037,7 @@ @cindex root figure graphics object @cindex graphics object, root figure the top level of the hierarchy and the parent of all figure objects. -The @code{handle} index of the root figure is 0. +The handle index of the root figure is 0. @item figure @cindex figure graphics object @@ -1096,6 +1098,8 @@ @DOCSTRING(gca) +@DOCSTRING(gco) + The @code{get} and @code{set} functions may be used to examine and set properties for graphics objects. For example, @@ -1166,6 +1170,31 @@ @DOCSTRING(findfigs) +@cindex saving graphics objects + +Figures can be printed or saved in many graphics formats with @code{print} and +@code{saveas}. Occasionally, however, it may be useful to save the original +Octave handle graphic directly so that further modifications can be made such +as modifying a title or legend. + +This can be accomplished with the following functions by + +@example +@group +fig_struct = hdl2struct (gcf); +save myplot.fig -struct fig_struct; +@dots{} +fig_struct = load ("myplot.fig"); +struct2hdl (fig_struct); +@end group +@end example + +@DOCSTRING(hdl2struct) + +@DOCSTRING(struct2hdl) + +@DOCSTRING(copyobj) + @node Graphics Object Properties @subsection Graphics Object Properties @cindex graphics object properties @@ -1565,26 +1594,6 @@ @item interruptible -@item key -Toggle display of the legend. --- Values: "on," "off" -Note that this property is not compatible with @sc{matlab} and may be -removed in a future version of Octave. - -@item keybox -Toggle display of a box around the -legend. --- Values: "on," "off" -Note that this property is not compatible with @sc{matlab} and -may be removed in a future version of Octave. - -@item keypos -An integer from 1 to 4 specifying the position of the legend. 1 -indicates upper right corner, 2 indicates upper left, 3 indicates lower -left, and 4 indicates lower right. Note that this property is not -compatible with @sc{matlab} and may be removed in a future version of -Octave. - -@item keyreverse - @item layer @item linestyleorder @@ -2831,7 +2840,7 @@ @node Data Sources in Object Groups @subsubsection Data Sources in Object Groups @cindex data sources in object groups -@anchor{doc-datasources} +@anchor{docXdatasources} All of the group objects contain data source parameters. There are string parameters that contain an expression that is evaluated to update the relevant data property of the group when the @code{refreshdata} @@ -2839,7 +2848,7 @@ @DOCSTRING(refreshdata) -@anchor{doc-linkdata} +@anchor{docXlinkdata} @c add the description of the linkdata function here when it is written @c remove the explicit anchor when you add the corresponding @DOCSTRING @c command
--- a/doc/interpreter/preface.txi +++ b/doc/interpreter/preface.txi @@ -64,6 +64,7 @@ @menu * Acknowledgements:: +* Citing Octave in Publications:: * How You Can Contribute to Octave:: * Distribution:: @end menu @@ -86,7 +87,7 @@ @itemize @bullet @item The United States Department of Energy, through grant number -DE-FG02-04ER25635. +@nospell{DE-FG02-04ER25635}. @item Ashok Krishnamurthy, David Hudak, Juan Carlos Chaves, and Stanley @@ -98,7 +99,7 @@ @item The industrial members of the Texas-Wisconsin Modeling and Control -Consortium (@uref{http://www.che.utexas.edu/twmcc, TWMCC}). +Consortium (@url{http://www.che.utexas.edu/twmcc, TWMCC}). @item The Paul A. Elfers Endowed Chair in Chemical Engineering at the @@ -132,7 +133,7 @@ Noel Bell, Senior Engineer, Texaco Chemical Company, Austin Texas. @item -John A. Turner, Group Leader, Continuum Dynamics (CCS-2), Los Alamos +John A. Turner, Group Leader, Continuum Dynamics @nospell{(CCS-2)}, Los Alamos National Laboratory, for registering the @url{octave.org} domain name. @item @@ -146,6 +147,20 @@ This project would not have been possible without the GNU software used in and to produce Octave. +@node Citing Octave in Publications +@unnumberedsec Citing Octave in Publications +@cindex Citing Octave +@cindex Citations + +In view of the many contributions made by numerous developers over many years +it is common courtesy to cite Octave in publications when it has been used +during the course of research or the preparation of figures. The +@code{citation} function can automatically generate a recommended citation +text for Octave or any of its packages. See the help text below on how to +use @code{citation}. + +@DOCSTRING(citation) + @node How You Can Contribute to Octave @unnumberedsec How You Can Contribute to Octave @cindex contributing to Octave
--- a/doc/interpreter/sparse.txi +++ b/doc/interpreter/sparse.txi @@ -89,13 +89,13 @@ easy to grasp, but requires more storage than is strictly needed. The storage technique used within Octave is the compressed column -format. It is similar to the Yale format. +format. It is similar to the Yale format. @footnote{@url{http://en.wikipedia.org/wiki/Sparse_matrix#Yale_format}} In this format the position of each element in a row and the data are -stored as previously. However, if we assume that all elements in the +stored as previously. However, if we assume that all elements in the same column are stored adjacent in the computers memory, then we only need to store information on the number of non-zero elements in each -column, rather than their positions. Thus assuming that the matrix has +column, rather than their positions. Thus assuming that the matrix has more non-zero elements than there are columns in the matrix, we win in terms of the amount of memory used. @@ -308,7 +308,7 @@ The above problem of memory reallocation can be avoided in oct-files. However, the construction of a sparse matrix from an oct-file is more complex than can be discussed here, and -you are referred to chapter @ref{Dynamically Linked Functions}, to have +you are referred to chapter @ref{External Code Interface}, to have a full description of the techniques involved. @node Information @@ -391,7 +391,7 @@ interconnections between nodes are represented as an adjacency matrix. That is, if the i-th node in a graph is connected to the j-th node. Then the ij-th node (and in the case of undirected graphs the -ji-th node) of the sparse adjacency matrix is non-zero. If each node +@nospell{ji-th} node) of the sparse adjacency matrix is non-zero. If each node is then associated with a set of coordinates, then the @dfn{gplot} command can be used to graphically display the interconnections between nodes. @@ -703,7 +703,7 @@ @float Figure,fig:simplechol @center @image{spchol,4in} -@caption{Structure of the un-permuted Cholesky@tie{}factorization of the above matrix.} +@caption{Structure of the unpermuted Cholesky@tie{}factorization of the above matrix.} @end float @float Figure,fig:simplecholperm @@ -796,20 +796,20 @@ a singular or near singular matrix, find a minimum norm solution using @sc{cxsparse}@footnote{The @sc{cholmod}, @sc{umfpack} and @sc{cxsparse} packages were written by Tim Davis and are available at -http://www.cise.ufl.edu/research/sparse/}. +@url{http://www.cise.ufl.edu/research/sparse/}}. @end enumerate The band density is defined as the number of non-zero values in the band -divided by the total number of values in the full band. The banded +divided by the total number of values in the full band. The banded matrix solvers can be entirely disabled by using @dfn{spparms} to set @code{bandden} to 1 (i.e., @code{spparms ("bandden", 1)}). The QR@tie{}solver factorizes the problem with a Dulmage-Mendelsohn decomposition, to separate the problem into blocks that can be treated as over-determined, multiple well determined blocks, and a final -over-determined block. For matrices with blocks of strongly connected +over-determined block. For matrices with blocks of strongly connected nodes this is a big win as LU@tie{}decomposition can be used for many -blocks. It also significantly improves the chance of finding a solution +blocks. It also significantly improves the chance of finding a solution to over-determined problems rather than just returning a vector of @dfn{NaN}'s.
--- a/doc/interpreter/stats.txi +++ b/doc/interpreter/stats.txi @@ -42,8 +42,8 @@ It should be noted that the statistics functions don't test for data containing NaN, NA, or Inf. These values need to be detected and dealt -with explicitly. See @ref{doc-isnan,,isnan}, @ref{doc-isna,,isna}, -@ref{doc-isinf,,isinf}, @ref{doc-isfinite,,isfinite}. +with explicitly. See @ref{docXisnan,,isnan}, @ref{docXisna,,isna}, +@ref{docXisinf,,isinf}, @ref{docXisfinite,,isfinite}. @menu * Descriptive Statistics::
--- a/doc/interpreter/stmt.txi +++ b/doc/interpreter/stmt.txi @@ -770,7 +770,7 @@ @cindex @code{unwind_protect_cleanup} @cindex @code{end_unwind_protect} -Octave supports a limited form of exception handling modelled after the +Octave supports a limited form of exception handling modeled after the unwind-protect form of Lisp. The general form of an @code{unwind_protect} block looks like this:
--- a/doc/interpreter/strings.txi +++ b/doc/interpreter/strings.txi @@ -96,7 +96,7 @@ Represents a literal single-quote character, @samp{'}. @item \0 -Represents the ``nul'' character, control-@@, ASCII code 0. +Represents the null character, control-@@, ASCII code 0. @item \a Represents the ``alert'' character, control-g, ASCII code 7. @@ -158,8 +158,8 @@ @section Character Arrays The string representation used by Octave is an array of characters, so -internally the string "dddddddddd" is actually a row vector of length 10 -containing the value 100 in all places (100 is the ASCII code of "d"). This +internally the string @nospell{"dddddddddd"} is actually a row vector of length +10 containing the value 100 in all places (100 is the ASCII code of "d"). This lends itself to the obvious generalization to character matrices. Using a matrix of characters, it is possible to represent a collection of same-length strings in one variable. The convention used in Octave is that each row in a @@ -233,8 +233,8 @@ (@pxref{Strings}, @ref{Character Arrays}). Apart from that, there are several functions to concatenate string objects: @code{char}, @code{strvcat}, @code{strcat} and @code{cstrcat}. In addition, the general -purpose concatenation functions can be used: see @ref{doc-cat,,cat}, -@ref{doc-horzcat,,horzcat} and @ref{doc-vertcat,,vertcat}. +purpose concatenation functions can be used: see @ref{docXcat,,cat}, +@ref{docXhorzcat,,horzcat} and @ref{docXvertcat,,vertcat}. @itemize @bullet @item All string concatenation functions except @code{cstrcat} @@ -351,7 +351,7 @@ integer matrices. @code{int2str} takes the real part of complex values and round fractional values to integer. A more flexible way to format numerical data as strings is the @code{sprintf} function (@pxref{Formatted Output}, -@ref{doc-sprintf}). +@ref{docXsprintf}). @DOCSTRING(mat2str) @@ -435,6 +435,8 @@ @DOCSTRING(strsplit) +@DOCSTRING(ostrsplit) + @DOCSTRING(strread) @DOCSTRING(strrep)
--- a/doc/interpreter/system.txi +++ b/doc/interpreter/system.txi @@ -121,7 +121,7 @@ @DOCSTRING(is_leap_year) -@anchor{doc-toc} +@anchor{docXtoc} @DOCSTRING(tic) @DOCSTRING(pause) @@ -177,7 +177,7 @@ @DOCSTRING(umask) -@anchor{doc-lstat} +@anchor{docXlstat} @DOCSTRING(stat) @DOCSTRING(S_ISBLK) @@ -259,6 +259,7 @@ @menu * FTP Objects:: * URL Manipulation:: +* Base64 and Binary Data Transmission:: @end menu @DOCSTRING(gethostname) @@ -301,6 +302,17 @@ @DOCSTRING(urlwrite) +@node Base64 and Binary Data Transmission +@subsection Base64 and Binary Data Transmission + +Some transmission channels can not accept binary data. It is customary to +encode binary data in Base64 for transmission and to decode the data upon +reception. + +@DOCSTRING(base64_encode) + +@DOCSTRING(base64_decode) + @node Controlling Subprocesses @section Controlling Subprocesses
--- a/doc/interpreter/tips.txi +++ b/doc/interpreter/tips.txi @@ -347,7 +347,7 @@ @example @group -*- texinfo -*- -@@deftypefn@{Function File@} @{@@var@{ret@} =@} fn (@dots{}) +@@deftypefn @{Function File@} @{@@var@{ret@} =@} fn (@dots{}) @@cindex index term Help text in Texinfo format. Code samples should be marked like @@code@{sample of code@} and variables should be marked @@ -366,7 +366,7 @@ This string signals Octave that the following text is in Texinfo format, and should be the first part of any help string in Texinfo format. -@item @@deftypefn@{class@} @dots{} @@end deftypefn +@item @@deftypefn @{class@} @dots{} @@end deftypefn The entire help string should be enclosed within the block defined by deftypefn. @@ -394,7 +394,7 @@ with text terminals as well as generating high-quality printed output. To these ends, Texinfo has commands which control the diversion of parts of the document into a particular output processor. Three formats are -of importance: info, HTML and @TeX{}. These are selected with +of importance: info, HTML, and @TeX{}. These are selected with @example @group @@ -477,8 +477,8 @@ @example @group -*- texinfo -*- -@@deftypefn @{Function File@} @{@@var@{a@} =@} fn (@@var@{x@}, @dots{}) -@@deftypefnx@{Function File@} @{@@var@{a@} =@} fn (@@var@{y@}, @dots{}) +@@deftypefn @{Function File@} @{@@var@{a@} =@} fn (@@var@{x@}, @dots{}) +@@deftypefnx @{Function File@} @{@@var@{a@} =@} fn (@@var@{y@}, @dots{}) Help text in Texinfo format. @@end deftypefn @end group
--- a/doc/interpreter/var.txi +++ b/doc/interpreter/var.txi @@ -178,7 +178,7 @@ @cindex persistent variables @cindex @code{persistent} statement @cindex variables, persistent -@anchor{doc-persistent} +@anchor{docXpersistent} A variable that has been declared @dfn{persistent} within a function will retain its contents in memory between subsequent calls to the
--- a/doc/interpreter/vectorize.txi +++ b/doc/interpreter/vectorize.txi @@ -42,6 +42,7 @@ * Broadcasting:: Broadcasting operations * Function Application:: Applying functions to arrays, cells, and structs * Accumulation:: Accumulation functions +* JIT Compiler:: Just-In-Time Compiler for loops * Miscellaneous Techniques:: Other techniques for speeding up code * Examples:: @end menu @@ -456,7 +457,7 @@ that may have relied on matrices of different size producing an error. Due to how broadcasting changes semantics with older versions of Octave, by default Octave warns if a broadcasting operation is performed. To -disable this warning, refer to its ID (@pxref{doc-warning_ids}): +disable this warning, refer to its ID (@pxref{docXwarning_ids}): @example warning ("off", "Octave:broadcast"); @@ -506,6 +507,35 @@ @DOCSTRING(accumdim) +@node JIT Compiler +@section JIT Compiler + +Vectorization is the preferred technique for eliminating loops and speeding up +code. Nevertheless, it is not always possible to replace every loop. In such +situations it may be worth trying Octave's @strong{experimental} Just-In-Time +(JIT) compiler. + +A JIT compiler works by analyzing the body of a loop, translating the Octave +statements into another language, compiling the new code segment into an +executable, and then running the executable and collecting any results. The +process is not simple and there is a significant amount of work to perform for +each step. It can still make sense, however, if the loop counter is a +large number. Because Octave is an interpreted language every time through a +loop Octave must parse the statements in the loop body before executing them. +With a JIT compiler this is done just once when the body is translated to +another language. + +The JIT compiler is a very new feature in Octave and not all valid Octave +statements can currently be accelerated. However, if no other technique +is available it may be worth benchmarking the code with JIT enabled. The +function @code{jit_enable} is used to turn compilation on or off. The function +@code{debug_jit} is not likely to be of use to anyone not working directly on +the implementation of the JIT compiler. + +@DOCSTRING(jit_enable) + +@DOCSTRING(debug_jit) + @node Miscellaneous Techniques @section Miscellaneous Techniques @cindex execution speed
--- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -34,14 +34,13 @@ addtwomatrices.cc \ celldemo.cc \ embedded.cc \ - firstmexdemo.c \ fortdemo.cc \ fortsub.f \ funcdemo.cc \ globaldemo.cc \ - hello.cc \ helloworld.cc \ make_int.cc \ + mex_demo.c \ mycell.c \ myfeval.c \ myfevalf.f \ @@ -53,6 +52,7 @@ mysparse.c \ mystring.c \ mystruct.c \ + oct_demo.cc \ oregonator.cc \ oregonator.m \ paramdemo.cc \
--- a/examples/addtwomatrices.cc +++ b/examples/addtwomatrices.cc @@ -3,6 +3,7 @@ DEFUN_DLD (addtwomatrices, args, , "Add A to B") { int nargin = args.length (); + if (nargin != 2) print_usage (); else @@ -12,5 +13,6 @@ if (! error_state) return octave_value (A + B); } + return octave_value_list (); }
--- a/examples/celldemo.cc +++ b/examples/celldemo.cc @@ -10,10 +10,13 @@ print_usage (); else { - Cell c = args (0).cell_value (); + Cell c = args(0).cell_value (); if (! error_state) - for (octave_idx_type i = 0; i < c.nelem (); i++) - retval(i) = c.elem (i); + for (octave_idx_type i = 0; i < c.numel (); i++) + { + retval(i) = c(i); // using operator syntax + //retval(i) = c.elem (i); // using method syntax + } } return retval;
--- a/examples/embedded.cc +++ b/examples/embedded.cc @@ -20,7 +20,6 @@ octave_value_list out = feval ("gcd", in, 1); - if (!error_state && out.length () > 0) std::cout << "GCD of [" << in(0).int_value ()
--- a/examples/fortdemo.cc +++ b/examples/fortdemo.cc @@ -9,10 +9,11 @@ F77_CHAR_ARG_LEN_DECL); } -DEFUN_DLD (fortdemo , args , , "Fortran Demo.") +DEFUN_DLD (fortdemo, args, , "Fortran Demo") { octave_value_list retval; int nargin = args.length (); + if (nargin != 1) print_usage (); else @@ -21,7 +22,7 @@ if (! error_state) { double *av = a.fortran_vec (); - octave_idx_type na = a.nelem (); + octave_idx_type na = a.numel (); OCTAVE_LOCAL_BUFFER (char, ctmp, 128); F77_XFCN (fortsub, FORTSUB, (na, av, ctmp
--- a/examples/funcdemo.cc +++ b/examples/funcdemo.cc @@ -3,8 +3,8 @@ DEFUN_DLD (funcdemo, args, nargout, "Function Demo") { + octave_value_list retval; int nargin = args.length (); - octave_value_list retval; if (nargin < 2) print_usage (); @@ -12,9 +12,8 @@ { octave_value_list newargs; for (octave_idx_type i = nargin - 1; i > 0; i--) - newargs (i - 1) = args(i); - if (args(0).is_function_handle () - || args(0).is_inline_function ()) + newargs(i-1) = args(i); + if (args(0).is_function_handle () || args(0).is_inline_function ()) { octave_function *fcn = args(0).function_value (); if (! error_state) @@ -22,13 +21,12 @@ } else if (args(0).is_string ()) { - std::string fcn = args (0).string_value (); + std::string fcn = args(0).string_value (); if (! error_state) retval = feval (fcn, newargs, nargout); } else - error ("funcdemo: expected string,", - " inline or function handle"); + error ("funcdemo: INPUT must be string, inline, or function handle"); } return retval; }
--- a/examples/globaldemo.cc +++ b/examples/globaldemo.cc @@ -1,9 +1,9 @@ #include <octave/oct.h> -DEFUN_DLD (globaldemo, args, , "Global demo.") +DEFUN_DLD (globaldemo, args, , "Global Demo") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (nargin != 1) print_usage ();
--- a/examples/helloworld.cc +++ b/examples/helloworld.cc @@ -4,8 +4,10 @@ "Hello World Help String") { int nargin = args.length (); - octave_stdout << "Hello World has " << nargin - << " input arguments and " - << nargout << " output arguments.\n"; + + octave_stdout << "Hello World has " + << nargin << " input arguments and " + << nargout << " output arguments.\n"; + return octave_value_list (); }
rename from examples/firstmexdemo.c rename to examples/mex_demo.c --- a/examples/firstmexdemo.c +++ b/examples/mex_demo.c @@ -1,11 +1,58 @@ +// mex_demo.c -- example of a dynamically linked function for Octave. + +// To use this file, your version of Octave must support dynamic +// linking. To find out if it does, type the command +// +// octave_config_info ("ENABLE_DYNAMIC_LINKING") +// +// at the Octave prompt. Support for dynamic linking is included if +// this expression returns the string "yes". +// +// To compile this file, type the command +// +// mkoctfile mex_demo.c +// +// from within Octave or from the shell prompt. This will create a file +// called mex_demo.mex that can be loaded by Octave. To test the mex_demo.mex +// file, start Octave and type the command +// +// [d] = mex_demo ("easy as", 1, 2, 3) +// +// at the Octave prompt. Octave should respond by printing +// +// Hello, world! +// I have 4 inputs and 1 output +// d = 1.2346 + +// Additional samples of code are in the examples directory of the Octave +// distribution. See also the chapter External Code Interface in the +// documentation. + #include "mex.h" +// Every user function should include "mex.h" which imports the basic set of +// function prototypes necessary for dynamically linked functions. In +// particular, it will declare mexFunction which is used by every function +// which will be visible to Octave. A mexFunction is visible in Octave under +// the name of the source code file without the extension. + +// The four arguments to mexFunction are: +// 1) The number of return arguments (# of left-hand side args). +// 2) An array of pointers to return arguments. +// 3) The number of input arguments (# of right-hand side args). +// 4) An array of pointers to input arguments. + void -mexFunction (int nlhs, mxArray *plhs[], int nrhs, - const mxArray *prhs[]) +mexFunction (int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[]) { + mexPrintf ("Hello, World!\n"); + + mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs); + mxArray *v = mxCreateDoubleMatrix (1, 1, mxREAL); double *data = mxGetPr (v); *data = 1.23456789; + plhs[0] = v; }
--- a/examples/mycell.c +++ b/examples/mycell.c @@ -1,14 +1,14 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, - const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { mwSize n; mwIndex i; if (nrhs != 1 || ! mxIsCell (prhs[0])) - mexErrMsgTxt ("expects cell"); + mexErrMsgTxt ("ARG1 must be a cell"); n = mxGetNumberOfElements (prhs[0]); n = (n > nlhs ? nlhs : n);
--- a/examples/myfeval.c +++ b/examples/myfeval.c @@ -1,24 +1,23 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, - const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { char *str; mexPrintf ("Hello, World!\n"); - mexPrintf ("I have %d inputs and %d outputs\n", nrhs, - nlhs); + mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs); if (nrhs < 1 || ! mxIsString (prhs[0])) - mexErrMsgTxt ("function name expected"); + mexErrMsgTxt ("ARG1 must be a function name"); str = mxArrayToString (prhs[0]); mexPrintf ("I'm going to call the function %s\n", str); - mexCallMATLAB (nlhs, plhs, nrhs-1, prhs+1, str); + mexCallMATLAB (nlhs, plhs, nrhs-1, (mxArray*)prhs+1, str); mxFree (str); }
--- a/examples/myfunc.c +++ b/examples/myfunc.c @@ -1,13 +1,15 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray *plhs[], int nrhs, - const mxArray *prhs[]) +mexFunction (int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[]) { const char *nm; + nm = mexFunctionName (); mexPrintf ("You called function: %s\n", nm); if (strcmp (nm, "myfunc") == 0) mexPrintf ("This is the principal function\n", nm); + return; }
--- a/examples/myhello.c +++ b/examples/myhello.c @@ -1,13 +1,10 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) +mexFunction (int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[]) { - mxArray *v = mxCreateDoubleMatrix (1, 1, mxREAL); + mexPrintf ("Hello, World!\n"); - double *data = mxGetPr (v); - - *data = 1.23456789; - - plhs[0] = v; + mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs); }
--- a/examples/mypow2.c +++ b/examples/mypow2.c @@ -1,21 +1,20 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, - const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { + mwSize n; mwIndex i; - mwSize n; double *vri, *vro; if (nrhs != 1 || ! mxIsNumeric (prhs[0])) - mexErrMsgTxt ("expects matrix"); + mexErrMsgTxt ("ARG1 must be a matrix"); n = mxGetNumberOfElements (prhs[0]); - plhs[0] = (mxArray *) mxCreateNumericArray - (mxGetNumberOfDimensions (prhs[0]), - mxGetDimensions (prhs[0]), mxGetClassID (prhs[0]), - mxIsComplex (prhs[0])); + plhs[0] = mxCreateNumericArray + (mxGetNumberOfDimensions (prhs[0]), mxGetDimensions (prhs[0]), + mxGetClassID (prhs[0]), mxIsComplex (prhs[0])); vri = mxGetPr (prhs[0]); vro = mxGetPr (plhs[0]); @@ -27,13 +26,13 @@ for (i = 0; i < n; i++) { - vro [i] = vri [i] * vri [i] - vii [i] * vii [i]; - vio [i] = 2 * vri [i] * vii [i]; + vro[i] = vri[i] * vri[i] - vii[i] * vii[i]; + vio[i] = 2 * vri[i] * vii[i]; } } else { for (i = 0; i < n; i++) - vro [i] = vri [i] * vri [i]; + vro[i] = vri[i] * vri[i]; } }
--- a/examples/myprop.c +++ b/examples/myprop.c @@ -1,7 +1,8 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { double handle; char property[256]; @@ -21,5 +22,3 @@ if (mexSet (handle, property, mxDuplicateArray (prhs[2]))) mexErrMsgTxt ("failed to set property"); } - -
--- a/examples/myset.c +++ b/examples/myset.c @@ -1,7 +1,8 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { char *str; mxArray *v; @@ -16,7 +17,7 @@ if (v) { mexPrintf ("%s is a global variable with the following value:\n", str); - mexCallMATLAB (0, 0, 1, &v, "disp"); + mexCallMATLAB (0, NULL, 1, &v, "disp"); } v = mexGetArray (str, "caller"); @@ -24,7 +25,7 @@ if (v) { mexPrintf ("%s is a caller variable with the following value:\n", str); - mexCallMATLAB (0, 0, 1, &v, "disp"); + mexCallMATLAB (0, NULL, 1, &v, "disp"); } // WARNING!! Can't do this in MATLAB! Must copy variable first.
--- a/examples/mysparse.c +++ b/examples/mysparse.c @@ -1,10 +1,10 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray *plhs[], int nrhs, - const mxArray *prhs[]) +mexFunction (int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[]) { - mwSize n, m, nz; + mwSize m, n, nz; mxArray *v; mwIndex i; double *pr, *pi; @@ -13,16 +13,15 @@ mwIndex *ir2, *jc2; if (nrhs != 1 || ! mxIsSparse (prhs[0])) - mexErrMsgTxt ("expects sparse matrix"); + mexErrMsgTxt ("ARG1 must be a sparse matrix"); - m = mxGetM (prhs [0]); - n = mxGetN (prhs [0]); - nz = mxGetNzmax (prhs [0]); + m = mxGetM (prhs[0]); + n = mxGetN (prhs[0]); + nz = mxGetNzmax (prhs[0]); if (mxIsComplex (prhs[0])) { - mexPrintf ("Matrix is %d-by-%d complex", - " sparse matrix", m, n); + mexPrintf ("Matrix is %d-by-%d complex sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pr = mxGetPr (prhs[0]); @@ -32,9 +31,9 @@ i = n; while (jc[i] == jc[i-1] && i != 0) i--; - mexPrintf ("last non-zero element (%d, %d) =", - ir[nz-1]+ 1, i); - mexPrintf (" (%g, %g)\n", pr[nz-1], pi[nz-1]); + + mexPrintf ("last non-zero element (%d, %d) = (%g, %g)\n", + ir[nz-1]+ 1, i, pr[nz-1], pi[nz-1]); v = mxCreateSparse (m, n, nz, mxCOMPLEX); pr2 = mxGetPr (v); @@ -57,8 +56,7 @@ else if (mxIsLogical (prhs[0])) { mxLogical *pbr, *pbr2; - mexPrintf ("Matrix is %d-by-%d logical", - " sparse matrix", m, n); + mexPrintf ("Matrix is %d-by-%d logical sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pbr = mxGetLogicals (prhs[0]); @@ -88,8 +86,7 @@ } else { - mexPrintf ("Matrix is %d-by-%d real", - " sparse matrix", m, n); + mexPrintf ("Matrix is %d-by-%d real sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pr = mxGetPr (prhs[0]); @@ -99,7 +96,7 @@ i = n; while (jc[i] == jc[i-1] && i != 0) i--; mexPrintf ("last non-zero element (%d, %d) = %g\n", - ir[nz-1]+ 1, i, pr[nz-1]); + ir[nz-1]+ 1, i, pr[nz-1]); v = mxCreateSparse (m, n, nz, mxREAL); pr2 = mxGetPr (v);
--- a/examples/mystring.c +++ b/examples/mystring.c @@ -2,25 +2,24 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray *plhs[], int nrhs, - const mxArray *prhs[]) +mexFunction (int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[]) { + mwSize m, n; mwIndex i, j; - mwSize m, n; mxChar *pi, *po; if (nrhs != 1 || ! mxIsChar (prhs[0]) || mxGetNumberOfDimensions (prhs[0]) > 2) - mexErrMsgTxt ("expecting char matrix"); + mexErrMsgTxt ("ARG1 must be a char matrix"); m = mxGetM (prhs[0]); n = mxGetN (prhs[0]); pi = mxGetChars (prhs[0]); - plhs[0] = mxCreateNumericMatrix (m, n, mxCHAR_CLASS, - mxREAL); + plhs[0] = mxCreateNumericMatrix (m, n, mxCHAR_CLASS, mxREAL); po = mxGetChars (plhs[0]); for (j = 0; j < n; j++) for (i = 0; i < m; i++) - po [j*m + m - 1 - i] = pi [j*m + i]; + po[j*m + m - 1 - i] = pi[j*m + i]; }
--- a/examples/mystruct.c +++ b/examples/mystruct.c @@ -1,8 +1,8 @@ #include "mex.h" void -mexFunction (int nlhs, mxArray* plhs[], int nrhs, - const mxArray* prhs[]) +mexFunction (int nlhs, mxArray* plhs[], + int nrhs, const mxArray* prhs[]) { int i; mwIndex j; @@ -18,7 +18,7 @@ mexPrintf ("field %s(%d) = ", mxGetFieldNameByNumber (prhs[0], i), j); v = mxGetFieldByNumber (prhs[0], j, i); - mexCallMATLAB (0, 0, 1, &v, "disp"); + mexCallMATLAB (0, NULL, 1, &v, "disp"); } v = mxCreateStructMatrix (2, 2, 2, keys);
rename from examples/hello.cc rename to examples/oct_demo.cc --- a/examples/hello.cc +++ b/examples/oct_demo.cc @@ -1,4 +1,4 @@ -// hello.cc -- example of a dynamically linked function for Octave. +// oct_demo.cc -- example of a dynamically linked function for Octave. // To use this file, your version of Octave must support dynamic // linking. To find out if it does, type the command @@ -6,18 +6,17 @@ // octave_config_info ("ENABLE_DYNAMIC_LINKING") // // at the Octave prompt. Support for dynamic linking is included if -// this expression returns the string "true". +// this expression returns the string "yes". // // To compile this file, type the command // -// mkoctfile hello.cc +// mkoctfile oct_demo.cc // -// at the shell prompt. The script mkoctfile should have been -// installed along with Octave. Running it will create a file called -// hello.oct that can be loaded by Octave. To test the hello.oct -// file, start Octave and type the command +// from within Octave or from the shell prompt. This will create a file +// called oct_demo.oct that can be loaded by Octave. To test the +// oct_demo.oct file, start Octave and type the command // -// hello ("easy as", 1, 2, 3) +// oct_demo ("easy as", 1, 2, 3) // // at the Octave prompt. Octave should respond by printing // @@ -28,47 +27,34 @@ // 3 // ans = 3 -// Additional examples are available in the files in the src directory -// of the Octave distribution that use the macro DEFUN_DLD_BUILTIN. -// Currently, this includes the files -// -// balance.cc fft.cc ifft.cc minmax.cc sort.cc -// chol.cc fft2.cc ifft2.cc pinv.cc svd.cc -// colloc.cc filter.cc inv.cc qr.cc syl.cc -// dassl.cc find.cc log.cc quad.cc -// det.cc fsolve.cc lsode.cc qzval.cc -// eig.cc givens.cc lu.cc rand.cc -// expm.cc hess.cc minmax.cc schur.cc -// -// The difference between DEFUN_DLD and DEFUN_DLD_BUILTIN is that -// DEFUN_DLD_BUILTIN can define a built-in function that is not -// dynamically loaded if the operating system does not support dynamic -// linking. To define your own dynamically linked functions you -// should use DEFUN_DLD. - -#include <octave/config.h> +// Additional samples of real dynamically loaded functions are available in +// the files of the libinterp/dldfcn directory of the Octave distribution. +// See also the chapter External Code Interface in the documentation. #include <iostream> -#include <octave/defun-dld.h> -#include <octave/error.h> -#include <octave/oct-obj.h> -#include <octave/pager.h> -#include <octave/symtab.h> -#include <octave/variables.h> +#include <octave/oct.h> -// DEFUN_DLD and the macros that it depends on are defined in the -// files defun-dld.h, defun.h, and defun-int.h. +// Every user function should include <octave/oct.h> which imports the +// basic set of Octave header files required. In particular this will define +// the DEFUN_DLD macro (defun-dld.h) which is used for every user function +// that is visible to Octave. -// Note that the third parameter (nargout) is not used, so it is -// omitted from the list of arguments to DEFUN_DLD in order to avoid -// the warning from gcc about an unused function parameter. +// The four arguments to the DEFUN_DLD macro are: +// 1) The function name as seen in Octave. +// 2) The variable to hold any inputs (of type octave_value_list) +// 3) The number of output arguments +// 4) A string to use as help text if 'help <function_name>' is entered. +// +// Note below that the third parameter (nargout) of DEFUN_DLD is not used, +// so it is omitted from the list of arguments in order to avoid a warning +// from gcc about an unused function parameter. -DEFUN_DLD (hello, args, , - "[...] = hello (...)\n\ +DEFUN_DLD (oct_demo, args, , + "[...] = oct_demo (...)\n\ \n\ -Print greeting followed by the values of all the arguments passed.\n\ -Returns all arguments in reverse order.") +Print a greeting followed by the values of all the arguments passed.\n\ +Return all arguments in reverse order.") { // The list of values to return. See the declaration in oct-obj.h @@ -78,14 +64,14 @@ octave_stdout << "Hello, world!\n"; - // The arguments to this function are available in args. + // The inputs to this function are available in args. int nargin = args.length (); - // The octave_value_list class is a zero-based array of octave_value - // objects. The declaration for the octave_value class is in the - // file ov.h. The print() method will send its output to - // octave_stdout, so it will also end up going through the pager. + // The octave_value_list class is a zero-based array of octave_value objects. + // The declaration for the octave_value class is in the file ov.h. + // The print() method will send its output to octave_stdout, + // so it will also end up going through the pager. for (int i = 0; i < nargin; i++) {
--- a/examples/paramdemo.cc +++ b/examples/paramdemo.cc @@ -1,15 +1,14 @@ #include <octave/oct.h> -DEFUN_DLD (paramdemo, args, nargout, - "Parameter Check Demo.") +DEFUN_DLD (paramdemo, args, nargout, "Parameter Check Demo") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (nargin != 1) print_usage (); else if (nargout != 0) - error ("paramdemo: function has no output arguments"); + error ("paramdemo: OUTPUT argument required"); else { NDArray m = args(0).array_value (); @@ -21,14 +20,11 @@ if (m.any_element_is_inf_or_nan ()) octave_stdout << " includes Inf or NaN values\n"; if (m.any_element_not_one_or_zero ()) - octave_stdout << - " includes other values than 1 and 0\n"; + octave_stdout << " includes other values than 1 and 0\n"; if (m.all_elements_are_int_or_inf_or_nan ()) - octave_stdout << - " includes only int, Inf or NaN values\n"; + octave_stdout << " includes only int, Inf or NaN values\n"; if (m.all_integers (min_val, max_val)) - octave_stdout << - " includes only integers in [-10,10]\n"; + octave_stdout << " includes only integers in [-10,10]\n"; } return retval; }
--- a/examples/standalone.cc +++ b/examples/standalone.cc @@ -5,15 +5,15 @@ main (void) { std::cout << "Hello Octave world!\n"; + int n = 2; Matrix a_matrix = Matrix (n, n); + for (octave_idx_type i = 0; i < n; i++) - { - for (octave_idx_type j = 0; j < n; j++) - { - a_matrix (i, j) = (i + 1) * 10 + (j + 1); - } - } + for (octave_idx_type j = 0; j < n; j++) + a_matrix(i,j) = (i + 1) * 10 + (j + 1); + std::cout << a_matrix; + return 0; }
--- a/examples/stringdemo.cc +++ b/examples/stringdemo.cc @@ -2,8 +2,8 @@ DEFUN_DLD (stringdemo, args, , "String Demo") { + octave_value_list retval; int nargin = args.length (); - octave_value_list retval; if (nargin != 1) print_usage (); @@ -13,20 +13,16 @@ if (! error_state) { - if (args(0).is_sq_string ()) - retval(1) = octave_value (ch, true); - else - retval(1) = octave_value (ch, true, '\''); + retval(1) = octave_value (ch, '\''); // Single Quote String octave_idx_type nr = ch.rows (); for (octave_idx_type i = 0; i < nr / 2; i++) { std::string tmp = ch.row_as_string (i); - ch.insert (ch.row_as_string (nr-i-1).c_str (), - i, 0); + ch.insert (ch.row_as_string (nr-i-1).c_str (), i, 0); ch.insert (tmp.c_str (), nr-i-1, 0); } - retval(0) = octave_value (ch, true); + retval(0) = octave_value (ch, '"'); // Double Quote String } } return retval;
--- a/examples/structdemo.cc +++ b/examples/structdemo.cc @@ -1,14 +1,15 @@ #include <octave/oct.h> #include <octave/ov-struct.h> -DEFUN_DLD (structdemo, args, , "Struct demo.") +DEFUN_DLD (structdemo, args, , "Struct Demo") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (args.length () == 2) { octave_scalar_map arg0 = args(0).scalar_map_value (); + //octave_map arg0 = args(0).map_value (); if (! error_state) { @@ -17,6 +18,7 @@ if (! error_state) { octave_value tmp = arg0.contents (arg1); + //octave_value tmp = arg0.contents (arg1)(0); if (tmp.is_defined ()) { @@ -27,18 +29,17 @@ retval = octave_value (st); } else - error ("sruct does not contain field named '%s'\n", + error ("structdemo: struct does not have a field named '%s'\n", arg1.c_str ()); } else - error ("expecting character string as second argument"); + error ("structdemo: ARG2 must be a character string"); } else - error ("expecting struct as first argument"); + error ("structdemo: ARG1 must be a struct"); } else print_usage (); return retval; } -
--- a/examples/unwinddemo.cc +++ b/examples/unwinddemo.cc @@ -2,15 +2,16 @@ #include <octave/unwind-prot.h> void -err_hand (const char *fmt, ...) +my_err_handler (const char *fmt, ...) { // Do nothing!! } DEFUN_DLD (unwinddemo, args, nargout, "Unwind Demo") { + octave_value retval; int nargin = args.length (); - octave_value retval; + if (nargin < 2) print_usage (); else @@ -20,11 +21,13 @@ if (! error_state) { - unwind_protect::begin_frame ("Funwinddemo"); - unwind_protect_ptr (current_liboctave_warning_handler); - set_liboctave_warning_handler (err_hand); + // Declare unwind_protect frame which lasts as long as + // the variable frame has scope. + unwind_protect frame; + frame.protect_var (current_liboctave_warning_handler); + + set_liboctave_warning_handler (my_err_handler); retval = octave_value (quotient (a, b)); - unwind_protect::run_frame ("Funwinddemo"); } } return retval;
--- a/libgui/Makefile.am +++ b/libgui/Makefile.am @@ -31,6 +31,7 @@ languages/de_DE.ts \ languages/en_US.ts \ languages/es_ES.ts \ + languages/fr_FR.ts \ languages/nl_NL.ts \ languages/pt_BR.ts \ languages/ru_RU.ts \
--- a/libgui/languages/be_BY.ts +++ b/libgui/languages/be_BY.ts @@ -2,53 +2,98 @@ <!DOCTYPE TS> <TS version="2.0" language="be_BY"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> <translation type="unfinished">Дакументацыя</translation> </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> <translation type="unfinished"></translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> <translation type="unfinished">&Новы файл</translation> </message> @@ -68,6 +113,11 @@ <translation type="unfinished">Захаваць файл &як</translation> </message> <message> + <location line="+4"/> + <source>Print</source> + <translation type="unfinished"></translation> + </message> + <message> <location line="+3"/> <source>&Undo</source> <translation type="unfinished">&Адрабіць</translation> @@ -93,22 +143,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> <translation type="unfinished">&Наступная закладка</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> <translation type="unfinished">Па&пярэдняя закладка</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> <translation type="unfinished">&Паставіць/прыбраць закладку</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> <translation type="unfinished"></translation> </message> @@ -133,17 +183,37 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> + <location line="+3"/> + <source>&Comment</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> <translation type="unfinished"></translation> </message> @@ -153,22 +223,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+51"/> + <location line="+2"/> + <source>Go&to Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+63"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> <translation type="unfinished">&Змяніць</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> <translation type="unfinished"></translation> </message> @@ -181,72 +251,271 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> <translation type="unfinished"></translation> </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished">Бягучы каталог</translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation type="unfinished">Файлавы аглядальнік</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation type="unfinished">Агляд файлаў.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <source>Are you sre you want to delete +</source> + <translation type="unfinished"></translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Пасунуцца да ўзроўню вышэй.</translation> + <source>Can not delete a directory that is not empty</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Увядзіце шлях ці назву файла.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Двойчы пстрык па файле адкрые яго.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> <translation type="unfinished"></translation> </message> @@ -276,7 +545,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> <translation type="unfinished"></translation> </message> @@ -291,7 +565,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> <translation type="unfinished"></translation> </message> @@ -310,11 +584,202 @@ <source>Search se&lection</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Idle.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+100"/> + <source>Searching...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation type="unfinished">Агляд і пошук па гісторыі загадаў.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> <translation type="unfinished">Двойчы пстрык па загадзе перадасць яго ў тэрмінал.</translation> </message> @@ -329,7 +794,7 @@ <translation type="unfinished">Гісторыя загадаў</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> <translation type="unfinished"></translation> </message> @@ -338,250 +803,103 @@ <source>Evaluate</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>lexer_octave_gui</name> <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">Па змоўчванні</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Каментар</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Загад</translation> - </message> - <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Нумар</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Ключаслова</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">Радок у аднакоссі</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Аператар</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Ідэнтыфікатар</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">Радок у двукоссі</translation> + <location line="+1"/> + <source>Create script</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Захаваць прастору зменных</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> <translation type="unfinished">Загрузіць прастору зменных</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> <translation type="unfinished">Пра Octave</translation> </message> <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Прагляд зменных бягучай прасторы.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Агляд і пошук па гісторыі загадаў.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Агляд файлаў.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> + <location line="-338"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+2"/> + <location line="+52"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+2"/> - <source>Class</source> + <source>Function</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> + <location line="+3"/> <source>Figure</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="-55"/> <source>Open...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> + <location line="+18"/> <source>Preferences...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+4"/> <source>Exit</source> <translation type="unfinished">Выйсці</translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> <translation type="unfinished">&Змяніць</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="+7"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Select All</source> + <location line="-602"/> + <source>Set working directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delete</source> + <location line="+686"/> + <source>Find Files...</source> <translation type="unfinished"></translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> <translation type="unfinished"></translation> </message> @@ -591,143 +909,228 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+4"/> <source>Continue</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+8"/> <source>Exit Debug Mode</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> + <location line="+48"/> + <source>Show File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation type="unfinished">Файлавы аглядальнік</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> + <location line="+106"/> + <source>On Disk</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> <translation type="unfinished"></translation> </message> <message> <location line="+4"/> + <source>One directory up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-392"/> + <source>Load workspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+192"/> <source>&Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Show Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> + <location line="+3"/> <source>Show Command History</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+6"/> <source>Show Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> + <location line="+5"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Command History</source> <translation type="unfinished">Гісторыя загадаў</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished">Бягучы каталог</translation> - </message> - <message> - <location line="+4"/> + <location line="+6"/> <source>Workspace</source> <translation type="unfinished">Прастора зменных</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Editor</source> <translation type="unfinished">Рэдактар</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> + <location line="+108"/> <source>Documentation</source> <translation type="unfinished">Дакументацыя</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> + <location line="-36"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Report Bug</source> + <translation type="unfinished">Паведаміць пра хібу</translation> + </message> + <message> + <location line="+6"/> + <source>Visit Agora</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_dock_widget</name> + <message> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>&Help</source> + <location line="+9"/> + <source>Hide widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+29"/> + <source>Unock widget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Паведаміць пра хібу</translation> - </message> - <message> - <location line="+2"/> - <source>Visit Agora</source> + <source>Change Directory or Add Directory to Load Path</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Visit Octave Forge</source> + <source>Change Directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Cancel</source> <translation type="unfinished"></translation> </message> </context> @@ -735,223 +1138,331 @@ <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> <translation type="unfinished">Настаўленні</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+97"/> <source>Octave logo only</source> <translation type="unfinished"></translation> </message> <message> + <location line="+10"/> + <source>Letter icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Editor</source> + <translation type="unfinished">Рэдактар</translation> + </message> + <message> <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> + <source>Show white space</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> + <source>Case sensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Рэдактар</translation> + <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+46"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> + <location line="-745"/> <source>Show line numbers</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+27"/> <source>Highlight current line</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+262"/> <source>Code completion</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-282"/> <source>Show complete path in window title</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Вызначыць ўласны рэдактар:</translation> - </message> - <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+548"/> <source>emacs</source> <translation type="unfinished">emacs</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> + <location line="+67"/> <source>Terminal</source> <translation type="unfinished">Тэрмінал</translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> + <location line="+15"/> <source>Cursor type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+23"/> <source>Cursor blinking</source> <translation type="unfinished"></translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+102"/> + <source>Font size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> <translation type="unfinished">Файлавы аглядальнік</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Паказваць назвы файлаў</translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file size</source> <translation type="unfinished">Паказваць памеры файлаў</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file type</source> <translation type="unfinished">Паказваць тыпы файлаў</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show date of last modification</source> <translation type="unfinished">Паказваць дату апошняга змянення</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show hidden files</source> <translation type="unfinished">Паказваць схаваныя файлы</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <source>Synchronize octave directory with the file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> <source>Alternating row colors</source> <translation type="unfinished">Колеры радкоў чаргуюцца</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation type="unfinished">Прастора зменных</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Network</source> <translation type="unfinished">Сетка</translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> + <location line="+45"/> <source>Use proxy server</source> <translation type="unfinished">Выкарыстоўваць проксі-сервер</translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Proxy Type:</source> <translation type="unfinished">Тып проксі:</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> + <location line="-33"/> <source>HttpProxy</source> <translation type="unfinished">HttpProxy</translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-1108"/> + <source>Icon set for dock widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1099"/> <source>Socks5Proxy</source> <translation type="unfinished">Socks5Proxy</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> + <location line="-16"/> <source>Hostname:</source> <translation type="unfinished">Назва хоста:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+54"/> <source>Port:</source> <translation type="unfinished">Порт:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-27"/> <source>Username:</source> <translation type="unfinished">Імя карыстальніка:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+37"/> <source>Password:</source> <translation type="unfinished">Пароль:</translation> </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-137"/> + <source>Difference to the defalt size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> @@ -959,7 +1470,7 @@ <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> <translation type="unfinished"></translation> </message> @@ -973,13 +1484,11 @@ <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> <translation type="unfinished"></translation> </message> @@ -988,10 +1497,6 @@ <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> <translation type="unfinished"></translation> </message> @@ -1000,34 +1505,26 @@ <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> <translation type="unfinished"></translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> <translation type="unfinished"></translation> </message> @@ -1035,32 +1532,72 @@ <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> <translation type="unfinished">Ідэнтыфікатар</translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Dimension</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Value</source> <translation type="unfinished">Значэнне</translation> </message> + <message> + <location line="+1"/> + <source>Storage Class</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> <translation type="unfinished">Прастора зменных</translation> </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation type="unfinished">Прагляд зменных бягучай прасторы.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation type="unfinished"></translation> + </message> </context> </TS>
--- a/libgui/languages/de_DE.ts +++ b/libgui/languages/de_DE.ts @@ -2,1065 +2,1676 @@ <!DOCTYPE TS> <TS version="2.0" language="de_DE"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation>Alles auswählen</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation>Automatisch</translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation>Funktion</translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation>Global</translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation>Verborgen</translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation>Ererbt</translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation>Beständig</translation> + </message> + <message> + <location filename="../qterminal/libqterminal/QTerminal.cc" line="+64"/> + <source>foreground</source> + <translation>Vordergrund</translation> + </message> + <message> + <location line="+1"/> + <source>background</source> + <translation>Hintergrund</translation> + </message> + <message> + <location line="+1"/> + <source>selection</source> + <translation>Auswahl</translation> + </message> + <message> + <location line="+1"/> + <source>cursor</source> + <translation>Cursor</translation> + </message> +</context> +<context> + <name>QTerminal</name> + <message> + <location filename="../qterminal/libqterminal/QTerminal.h" line="+116"/> + <source>Copy</source> + <translation>Kopieren</translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation>Einfügen</translation> + </message> + <message> + <location line="+4"/> + <source>Clear All</source> + <translation>Alles löschen</translation> + </message> +</context> +<context> + <name>QWinTerminalImpl</name> + <message> + <location filename="../qterminal/libqterminal/win32/QWinTerminalImpl.cpp" line="+1451"/> + <source>copied selection to clipboard</source> + <translation>Auswahl in die Zwischenablage kopiert</translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> - <translation type="unfinished">Dokumentation</translation> + <translation>Dokumentation</translation> + </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation>Siehe Dokumentation für Hilfe.</translation> </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> - <translation type="unfinished"></translation> + <translation>Octave Editor</translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> - <translation type="unfinished"></translation> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Octave Dateien (*.m);;Alle Dateien (*)</translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> - <translation type="unfinished"></translation> + <translation>Kann die Datei <b>%1</b> nicht zum Lesen öffnen: +%2.</translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> - <translation type="unfinished"></translation> + <translation>Die Datei wurde nicht gespeichert! Eine Datei mit dem gewählten Namen +<b>%1<b> +ist im Editor bereits geöffnet</translation> </message> <message> - <location line="+141"/> - <source>&%1 %2</source> - <translation type="unfinished"></translation> + <location line="+28"/> + <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> + <translation>Der zugehörige Editor-Reiter ist nicht mehr vorhanden und wurde wahrscheinlich geschlossen.</translation> </message> <message> - <location line="+130"/> + <location line="+205"/> + <source>&%1 %2</source> + <translation>&%1 %2</translation> + </message> + <message> + <location line="+159"/> <source>&New File</source> - <translation type="unfinished">&Neue Datei</translation> + <translation>&Neue Datei</translation> </message> <message> <location line="+3"/> <source>&Open File</source> - <translation type="unfinished">&Öffne Datei</translation> + <translation>Datei &Öffnen</translation> </message> <message> <location line="+3"/> <source>&Save File</source> - <translation type="unfinished">&Sichere Datei</translation> + <translation>Datei &speichern</translation> </message> <message> <location line="+4"/> <source>Save File &As</source> - <translation type="unfinished">Sichere Datei &als</translation> + <translation>Datei speichern &als</translation> + </message> + <message> + <location line="+4"/> + <source>Print</source> + <translation>Drucken</translation> </message> <message> <location line="+3"/> <source>&Undo</source> - <translation type="unfinished">&Rückgängig</translation> + <translation>&Rückgängig</translation> </message> <message> <location line="+3"/> <source>&Redo</source> - <translation type="unfinished">&Wiederholen</translation> + <translation>&Wiederholen</translation> </message> <message> <location line="+3"/> <source>&Copy</source> - <translation type="unfinished">&Kopieren</translation> + <translation>&Kopieren</translation> </message> <message> <location line="+3"/> <source>Cu&t</source> - <translation type="unfinished">&Ausschneiden</translation> + <translation>&Ausschneiden</translation> </message> <message> <location line="+4"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Einfügen</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> - <translation type="unfinished">&Nächstes Bookmark</translation> + <translation>&Nächstes Lesezeichen</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> - <translation type="unfinished">&Voriges Bookmark</translation> + <translation>&Voriges Lesezeichen</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> - <translation type="unfinished">&Bookmark setzen</translation> + <translation>&Lesezeichen setzen</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> - <translation type="unfinished"></translation> + <translation>Alle Lesezeichen &entfernen</translation> </message> <message> <location line="+4"/> <source>&Next breakpoint</source> - <translation type="unfinished"></translation> + <translation>&Nächster Haltepunkt</translation> </message> <message> <location line="+3"/> <source>Pre&vious breakpoint</source> - <translation type="unfinished"></translation> + <translation>&Vorheriger Haltepunkt</translation> </message> <message> <location line="+3"/> <source>Toggle &breakpoint</source> - <translation type="unfinished"></translation> + <translation>Haltepunkte &umschalten</translation> </message> <message> <location line="+3"/> <source>&Remove All breakpoints</source> - <translation type="unfinished"></translation> + <translation>Alle Haltepunkte &entfernen</translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>&Comment</source> + <translation>&Kommentieren</translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation>Kommentar &entfernen</translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation>&Zuletzt bearbeitete Dateien</translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation>S&chließen</translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation>Alle schließen</translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation>Andere Dokumente schließen</translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> - <translation type="unfinished"></translation> + <translation>&Suchen und Ersetzen</translation> </message> <message> <location line="+3"/> <source>Save File And Run</source> - <translation type="unfinished"></translation> + <translation>Datei speichern und ausrühren</translation> </message> <message> - <location line="+51"/> - <source>&File</source> - <translation type="unfinished">&Datei</translation> + <location line="+2"/> + <source>Go&to Line</source> + <translation>&Gehe zu Zeile</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> + <location line="+63"/> + <source>&File</source> + <translation>&Datei</translation> </message> <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> - <translation type="unfinished">&Editieren</translation> + <translation>&Editieren</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> - <translation type="unfinished"></translation> + <translation>&Debuggen</translation> </message> <message> <location line="+9"/> <source>&Run</source> - <translation type="unfinished">&Ausführen</translation> + <translation>&Ausführen</translation> </message> </context> <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation>Gehe zu Zeile</translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation>Zeilennummer</translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation><unbenannt></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation>Änderungen speichern oder verwerfen?</translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation>Änderungen speichern, verwerfen oder Schließen abbrechen?</translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> - <translation type="unfinished"></translation> + <translation>Octave Editor</translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> - <translation type="unfinished"></translation> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation>Die Datei +%1 +soll geschlossen werden, wurde aber verändert. +%2</translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Octave Dateien (*.m);;All Files (*)</translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation>Datei wurde nicht gespeichert! Der gewählte Dateiname +%1 +ist derselbe wie der aktuelle Dateiname</translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation>Achtung: Der Inhalt des Editors wurde verändert!</translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation>Die Datei +%1 +wurde gelöscht oder umbenannt. Soll die Datei jetzt gespeichert werden?%2</translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> - <translation type="unfinished"></translation> + <translation>Die Datei %1 konnte nicht zum Schrieben geöffnet werden: +%2.</translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> + <translation>Die Datei %1 wurde von einer anderen Anwendung verändert. Soll der neue Inhalt geladen werden?</translation> </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished">Aktuelles Verzeichnis</translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation>Dateibrowser</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation>Dateien durchsuchen.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation>Pfad oder Dateinamen eingeben</translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation>Ordern darüber anwählen</translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation>Aktuelles Octave Verzeichnis anzeigen</translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation>Zu aktuellem Octave Verezichnis gehen</translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation>Octave Verzeichnis setzen</translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation>Setze Octave Verzeichnis zu aktuellem Browser Verzeichnis</translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation>Aktionen mit aktuellem Verzeichnis</translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation>Wechlse zum Heimatverzeichnis</translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation>Verzeichnis suchen</translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation>Dateien suchen ...</translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation>Neue Datei</translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation>Neues Verzeichnis</translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation>Datei mit Doppelklick öffnen</translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation>Öffnen</translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation>Mit Standardanwendung öffnen</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation>Kopiere Auswahl in die Zwischenablage</translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation>Ausführen</translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation>Daten laden</translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation>Aktuelles Verzeichnis setzen</translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation>Umbenennen</translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation>Löschen</translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation>Datei/Verzeichnis umbenennen</translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation>Datei/Verzeichnis umbenennen:</translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation> +zu: </translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation>Datei/Verzeichnis löschen</translation> + </message> + <message> + <location line="-10"/> + <source>Are you sure you want to delete +</source> + <translation>Folgende/s Datei/Verzeichnis wirklich löschen +</translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Ein Verzeichnis höher wechseln.</translation> + <source>Can not delete a directory that is not empty</source> + <translation>Verzeichnis ist nicht leer und kann daher nicht gelöscht werden</translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation>Setze aktuelles Browser Verzeichnis</translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation>Neue Datei</translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Geben Sie einen Pfad oder Dateinamen ein.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation>Neue Datei in</translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Führen Sie einen Doppelklick aus, um eine Datei zu öffnen.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation>Neues Verzeichnis</translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation>Neues Verzeichnis in</translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> - <translation type="unfinished"></translation> + <translation>&Suche:</translation> </message> <message> <location line="+3"/> <source>Re&place with:</source> - <translation type="unfinished"></translation> + <translation>&Ersetze durch:</translation> </message> <message> <location line="+4"/> <source>Match &case</source> - <translation type="unfinished"></translation> + <translation>&Groß-/Kleinschreibung beachten</translation> </message> <message> <location line="+1"/> <source>Search from &start</source> - <translation type="unfinished"></translation> + <translation>Suche vom &Beginn</translation> </message> <message> <location line="+1"/> <source>&Wrap while searching</source> - <translation type="unfinished"></translation> + <translation>&Umbruch beim Suchen</translation> </message> <message> <location line="+2"/> <source>&Find Next</source> - <translation type="unfinished"></translation> + <translation>&Nächsten suchen</translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation>&Vorherigen suchen</translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> - <translation type="unfinished"></translation> + <translation>&Ersetze</translation> </message> <message> <location line="+1"/> <source>Replace &All</source> - <translation type="unfinished"></translation> + <translation>Ersetze &alle</translation> </message> <message> <location line="+2"/> <source>&More</source> - <translation type="unfinished"></translation> + <translation>&Mehr</translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> - <translation type="unfinished"></translation> + <translation>&Ganze Wörter</translation> </message> <message> <location line="+1"/> <source>Regular E&xpressions</source> - <translation type="unfinished"></translation> + <translation>&Reguläre Ausdrücke</translation> </message> <message> <location line="+1"/> <source>Search &backward</source> - <translation type="unfinished"></translation> + <translation>Rück&wärts suchen</translation> </message> <message> <location line="+1"/> <source>Search se&lection</source> - <translation type="unfinished"></translation> + <translation>In Auswah&l suchen</translation> + </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation>Vom Ende suchen</translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation>Suche vom Beginn</translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation>Ergebins der Ersetzungen</translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation>%1 Vorkommnisse ersetzt</translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation>Suchergebnis</translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation>Keine weiteren Vorkommnisse gefunden</translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation>Suche Dateien</translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation>Name:</translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation>EIngabe eines Ausdrucks für den Dateinamen</translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation>Beginne in:</translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation>Verzeichnis, in dem die Suche beginnt</translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation>Suche ...</translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation>Suche Startverzeichnis</translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation>Unterverzeichnisse durchsuchen</translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation>Rekursive Dateisuche durch Unterverzeichnisse</translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation>Verzeichnisse einbeziehen</translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation>Auch Verzeichnisse berücksichitgen, die die Suchanfrage erfüllen</translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation>Groß-/Kleinschreibung ignorieren</translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation>Groß-/Kleinschriebung bei der Dateisuche ignorieren</translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation>In Datei vorkommender Text:</translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation>Suche Dateien mit übereinstimmendem Text</translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation>Zu suchender Text</translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation>Groß-/Kleinschreibung beachten</translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation>Groß-/Kleinschreibung beim Text beachten</translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation>Suchergebnisse</translation> + </message> + <message> + <location line="+11"/> + <source>Idle.</source> + <translation>Leerlauf.</translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation>Suche</translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation>Beginne die Dateisuche</translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation>Beenden</translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation>Suche beenden</translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation>Dateiname und Verzeichnis</translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation>Dateiinhalt</translation> + </message> + <message> + <location line="+99"/> + <source>Searching...</source> + <translation>Suche ...</translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation>Suchverzeichnis setzen</translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation>Dateiname</translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation>Verzeichnis</translation> </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation>Durchsuchen Sie die Befehlshistorie.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> - <translation type="unfinished">Führen Sie einen Doppelklick aus, um den Befehl in das Terminal zu übertragen.</translation> + <translation>Doppelklick, um den Befehl in das Terminal zu übertragen.</translation> </message> <message> <location line="+6"/> <source>Enter text to filter the command history.</source> - <translation type="unfinished">Geben Sie Text ein, um die Befehlshistorie zu filtern.</translation> + <translation>Texteingabe zur Filterung der Befehlshistorie.</translation> </message> <message> <location line="+4"/> <source>Command History</source> - <translation type="unfinished">Befehlshistorie</translation> + <translation>Befehlshistorie</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopieren</translation> </message> <message> <location line="+1"/> <source>Evaluate</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>lexer_octave_gui</name> - <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">Standard</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Kommentar</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Befehl</translation> + <translation>Ausführen</translation> </message> <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Zahl</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Schlüsselwort</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">Zeichenkette in einfachen Hochkommata</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Operator</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Bezeichner</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">Zeichenkette in doppelten Hochkommata</translation> + <location line="+1"/> + <source>Create script</source> + <translation>Skript erzeugen</translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Speichere Arbeitsumgebung</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> - <translation type="unfinished">Lade Arbeitsumgebung</translation> + <translation>Lade Arbeitsumgebung</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> - <translation type="unfinished">Über Octave</translation> - </message> - <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Sehen Sie die Variablen ein, die sich in der aktiven Arbeitsumgebung befinden.</translation> + <translation>Über Octave</translation> </message> <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Durchsuchen Sie die Befehlshistorie.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Durchsuchen Sie Ihre Dateien.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> + <location line="-338"/> + <source>&File</source> + <translation>&Datei</translation> </message> <message> - <location line="+39"/> - <source>&File</source> - <translation type="unfinished">&Datei</translation> + <location line="+52"/> + <source>New</source> + <translation>Neu</translation> </message> <message> - <location line="+2"/> - <source>New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> + <translation>Skript</translation> </message> <message> <location line="+2"/> - <source>Class</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Figure</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Preferences...</source> - <translation type="unfinished"></translation> + <source>Function</source> + <translation>Funktion</translation> </message> <message> <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> + <source>Figure</source> + <translation>Abbildung</translation> </message> <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> + <location line="-55"/> + <source>Open...</source> + <translation>Öffnen...</translation> </message> <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> + <location line="+18"/> + <source>Preferences...</source> + <translation>Einstellungen...</translation> </message> <message> <location line="+4"/> <source>Exit</source> - <translation type="unfinished">Beenden</translation> + <translation>Beenden</translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> - <translation type="unfinished">&Editieren</translation> + <translation>&Editieren</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> - <translation type="unfinished"></translation> + <translation>Rückgängig</translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Copy</source> + <translation>Kopieren</translation> </message> <message> <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Einfügen</translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> - <translation type="unfinished"></translation> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> + <translation>Arbeitsumgebung speichern als</translation> </message> <message> - <location line="+5"/> - <source>Select All</source> - <translation type="unfinished"></translation> + <location line="-602"/> + <source>Set working directory</source> + <translation>Arbeitsverzeichnis setzen</translation> </message> <message> - <location line="+3"/> - <source>Delete</source> - <translation type="unfinished"></translation> + <location line="+686"/> + <source>Find Files...</source> + <translation>Suche Dateien...</translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> - <translation type="unfinished"></translation> + <translation>Befehlsfenster löschen</translation> </message> <message> <location line="+3"/> <source>Clear Command History</source> - <translation type="unfinished"></translation> + <translation>Befehlshistorie löschen</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> - <translation type="unfinished"></translation> + <translation>Arbeitsumgebung löschen</translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> - <translation type="unfinished"></translation> + <translation>De&bug</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> - <translation type="unfinished"></translation> + <translation>EInzelschritt</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> - <translation type="unfinished"></translation> + <translation>Einzelschritt hinein</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> - <translation type="unfinished"></translation> + <translation>Einzelschritt heraus</translation> + </message> + <message> + <location line="+4"/> + <source>Continue</source> + <translation>Fortführen</translation> </message> <message> <location line="+8"/> - <source>Continue</source> - <translation type="unfinished"></translation> + <source>Exit Debug Mode</source> + <translation>Debug Modus verlassen</translation> + </message> + <message> + <location line="+48"/> + <source>Show File Browser</source> + <translation>Dateibrowser anzeigen</translation> </message> <message> - <location line="+13"/> - <source>Exit Debug Mode</source> - <translation type="unfinished"></translation> + <location line="+20"/> + <source>File Browser</source> + <translation>Dateibrowser</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> + <translation>Fensterlayout auf Grundeinstellung zurücksetzen</translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> - <translation type="unfinished"></translation> + <location line="+106"/> + <source>On Disk</source> + <translation>Auf der Festplatte</translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Online</source> + <translation>Im Internet</translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation>Neues Verzeichnis eingeben</translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> + <translation>Aktuelles Verzeichnis:</translation> </message> <message> <location line="+4"/> - <source>&Window</source> - <translation type="unfinished"></translation> + <source>One directory up</source> + <translation>Ein Verzeichnis höher</translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation>Verzeichnis suchen</translation> </message> <message> - <location line="+2"/> - <source>Show Command Window</source> - <translation type="unfinished"></translation> + <location line="-392"/> + <source>Load workspace</source> + <translation>Arbeitsumgebung laden</translation> + </message> + <message> + <location line="+192"/> + <source>&Window</source> + <translation>&Fenster</translation> </message> <message> <location line="+6"/> - <source>Show Command History</source> - <translation type="unfinished"></translation> + <source>Show Command Window</source> + <translation>Befehlsfenster anzeigen</translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Show Command History</source> + <translation>Befehlshistorie anzeigen</translation> </message> <message> <location line="+6"/> <source>Show Workspace</source> - <translation type="unfinished"></translation> + <translation>Arbeitsumgebung anzeigen</translation> + </message> + <message> + <location line="+3"/> + <source>Show Editor</source> + <translation>Editor anzeigen</translation> + </message> + <message> + <location line="+3"/> + <source>Show Documentation</source> + <translation>Dokumentation anzeigen</translation> </message> <message> <location line="+5"/> - <source>Show Editor</source> - <translation type="unfinished"></translation> + <source>Command Window</source> + <translation>Befehlsfenster</translation> + </message> + <message> + <location line="+3"/> + <source>Command History</source> + <translation>Befehlshistorie</translation> + </message> + <message> + <location line="+6"/> + <source>Workspace</source> + <translation>Arbeitsumgebung</translation> </message> <message> - <location line="+5"/> - <source>Show Documentation</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+3"/> + <location line="+108"/> + <source>Documentation</source> + <translation>Dokumentation</translation> + </message> + <message> + <location line="-36"/> + <source>&Help</source> + <translation>&Hilfe</translation> </message> <message> <location line="+7"/> - <source>Command Window</source> - <translation type="unfinished">Konsolenfenster</translation> + <source>Report Bug</source> + <translation>Fehler melden</translation> </message> <message> - <location line="+4"/> - <source>Command History</source> - <translation type="unfinished">Befehlshistorie</translation> + <location line="+6"/> + <source>Visit Agora</source> + <translation>Agora Webseite</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished">Aktuelles Verzeichnis</translation> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation>Octave Forge Webseite</translation> </message> +</context> +<context> + <name>octave_dock_widget</name> <message> - <location line="+4"/> - <source>Workspace</source> - <translation type="unfinished">Arbeitsumgebung</translation> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <location line="+120"/> + <source>Undock widget</source> + <translation>Fenster lösen</translation> </message> <message> - <location line="+4"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="-111"/> + <source>Hide widget</source> + <translation>Fenster verbergen</translation> </message> <message> - <location line="+4"/> - <source>Documentation</source> - <translation type="unfinished">Dokumentation</translation> + <location line="+82"/> + <source>Dock widget</source> + <translation>Fenster andocken</translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation>Hilfe zu</translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation>Die Datei %1 exisitiert nicht im Suchpfad. Um die editierte Funktion zu debuggen, muss entweder in das Verzeichnis %2 gewechselt werden oder dieses Verzeichnis dem Suchpfad hinzugefügt werden.</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Help</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> + <translation>Die Datei %1 wird von einer gleichnamigen Datei im Suchpfad überdeckt. Um die editierte Funktion zu debuggen, in das Verzeichnis %2 gewechselt werden.</translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Fehler melden</translation> + <source>Change Directory or Add Directory to Load Path</source> + <translation>Verzeichnis wechseln oder zum Suchpfad hinzufügen</translation> </message> <message> <location line="+2"/> - <source>Visit Agora</source> - <translation type="unfinished"></translation> + <source>Change Directory</source> + <translation>Verzeichnis wechseln</translation> </message> <message> - <location line="+2"/> - <source>Visit Octave Forge</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation>Verzeichnis zum Suchpfad hinzufügen</translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Cancel</source> + <translation>Abbrechen</translation> </message> </context> <context> <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> - <translation type="unfinished">Einstellungen</translation> + <translation>Einstellungen</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Octave logo only</source> - <translation type="unfinished"></translation> + <translation>Allgemein</translation> </message> <message> - <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="+97"/> + <source>Octave logo only</source> + <translation>Nur Octave Logo</translation> </message> <message> <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font</source> - <translation type="unfinished"></translation> + <source>Letter icons</source> + <translation>Icons mit Buchstaben</translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> + <location line="+46"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+16"/> + <source>Show white space</source> + <translation>Leerzeichen</translation> </message> <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <source>Show line numbers</source> - <translation type="unfinished"></translation> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation>Keine Leezeichen der Einrückung anzeigen</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Highlight current line</source> - <translation type="unfinished"></translation> + <location line="+28"/> + <source>Color</source> + <translation>Farbe</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Code completion</source> - <translation type="unfinished"></translation> + <location line="+120"/> + <source>Indent width</source> + <translation>Einrücken um</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show complete path in window title</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Tab indents line</source> + <translation>Tabulator rückt ein</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> + <source>Auto indentation</source> + <translation>Auto Einrückung</translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation>Tabulatorweite</translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation>Einrückregeln anzeigen</translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation>Rücktaste entfernt Einrückung</translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation>Anzahl der Zeichen bis Vorschlagliste angezeigt wird</translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Benutzerdefinierten Editor verwenden:</translation> + <location line="+71"/> + <source>Match keywords</source> + <translation>Schlüsselwörter berücksichtigen</translation> + </message> + <message> + <location line="+13"/> + <source>Case sensitive</source> + <translation>Groß-/Kleinschreibung beachten</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>emacs</source> - <translation type="unfinished">emacs</translation> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation>Wort durch Vorschalg ersetzen</translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation>Wörter im Dokument berücksichtigen</translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation>Editor Dateien der letzten Sitzung wiederherstellen</translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> + <translation>Externen Editor verwenden</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> - <source>Terminal</source> - <translation type="unfinished">Terminal</translation> + <source>Command line (%f=file, %l=line):</source> + <translation>Befehl (%f=Datei, %l=Zeiel):</translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation>Editor Stile</translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation><html><head/><body><p>Schriftart, -größe (als Differenz zur Standardgröße), -format (fett, kursiv, unterstrichen), Vorder- und Hintergrundfarbe festlegen (für die Hintergrundfarbe stellt die Farbe Pink (255,0,255) einen Platzhalter für die Standardhintergrundfarbe dar)</p></body></html></translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> - <source>Cursor type:</source> - <translation type="unfinished"></translation> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation>Vordergrundfarbe verwenden</translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation>Farben des Befehlsfensters</translation> + </message> + <message> + <location line="+45"/> + <source>Font</source> + <translation>Schriftart</translation> + </message> + <message> + <location line="-744"/> + <source>Show line numbers</source> + <translation>Zeilennummern anzeigen</translation> </message> <message> <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Cursor blinking</source> - <translation type="unfinished"></translation> + <source>Highlight current line</source> + <translation>Aktuelle Zeile hervorheben</translation> + </message> + <message> + <location line="+262"/> + <source>Code completion</source> + <translation>Vervollständigung</translation> + </message> + <message> + <location line="-282"/> + <source>Show complete path in window title</source> + <translation>Kompletten Pfad im Reiter anzeigen</translation> + </message> + <message> + <location line="-72"/> + <source>Graphic icons</source> + <translation>Grafische Icons</translation> + </message> + <message> + <location line="+620"/> + <source>emacs</source> + <translation>emacs</translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+67"/> + <source>Terminal</source> + <translation>Befehlsfenster</translation> + </message> + <message> + <location line="+15"/> + <source>Cursor type:</source> + <translation>Cursortyp:</translation> + </message> + <message> + <location line="+23"/> + <source>Cursor blinking</source> + <translation>Blinkender Cursor</translation> + </message> + <message> + <location line="+101"/> + <source>Font size</source> + <translation>Schriftgröße</translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> - <translation type="unfinished">Dateibrowser</translation> + <translation>Dateibrowser</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Dateinamen anzeigen</translation> + <source>Show file size</source> + <translation>Dateigröße anzeigen</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file size</source> - <translation type="unfinished">Dateigröße anzeigen</translation> + <source>Show file type</source> + <translation>Dateityp anzeigen</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file type</source> - <translation type="unfinished">Dateityp anzeigen</translation> + <source>Show date of last modification</source> + <translation>Datum der letzten Änderung anzeigen</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show date of last modification</source> - <translation type="unfinished">Datum der letzten Änderung anzeigen</translation> + <source>Show hidden files</source> + <translation>Versteckte Dateien anzeigen</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show hidden files</source> - <translation type="unfinished">Versteckte Dateien anzeigen</translation> + <source>Synchronize octave directory with the file browser</source> + <translation>Verzeichnisse von Octave und des Dateibrowsers synchronisieren</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Alternating row colors</source> - <translation type="unfinished">Alternierende Farben verwenden</translation> + <translation>Alternierende Farben verwenden</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation>Arbeitsumgebung</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation>Farben der Speicherklassen festlegen</translation> + </message> + <message> + <location line="+35"/> <source>Network</source> - <translation type="unfinished"></translation> + <translation>Netzwerk</translation> + </message> + <message> + <location line="+45"/> + <source>Use proxy server</source> + <translation>Proxy-Server verwenden</translation> + </message> + <message> + <location line="+10"/> + <source>Proxy Type:</source> + <translation>Proxy Typ:</translation> + </message> + <message> + <location line="-33"/> + <source>HttpProxy</source> + <translation>HTTP Proxy</translation> + </message> + <message> + <location line="-1107"/> + <source>Icon set for dock widgets</source> + <translation>Icons der Unterfenster</translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation>Sprache (Neustart erforderlich)</translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation>Icongröße</translation> + </message> + <message> + <location line="+1098"/> + <source>Socks5Proxy</source> + <translation>Socks5Proxy</translation> + </message> + <message> + <location line="-16"/> + <source>Hostname:</source> + <translation>Hostname:</translation> + </message> + <message> + <location line="+54"/> + <source>Port:</source> + <translation>Port:</translation> + </message> + <message> + <location line="-27"/> + <source>Username:</source> + <translation>Nutzername:</translation> + </message> + <message> + <location line="+37"/> + <source>Password:</source> + <translation>Passwort:</translation> + </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation>Systemeinstellung</translation> + </message> + <message> + <location line="-268"/> + <source>IBeam Cursor</source> + <translation>IBeam-Cursor</translation> + </message> + <message> + <location line="+1"/> + <source>Block Cursor</source> + <translation>Blockcursor</translation> + </message> + <message> + <location line="+1"/> + <source>Underline Cursor</source> + <translation>Unterstrichener Cursor</translation> + </message> + <message> + <location line="+129"/> + <source>Difference to the default size</source> + <translation>Differenz zur Stnadgröße</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> - <source>Use proxy server</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Proxy Type:</source> - <translation type="unfinished"></translation> + <source>Background color, pink (255,0,255) means default</source> + <translation>Hintergrundfarbe, Pink (255,0,255) für Standard</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> - <source>HttpProxy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Socks5Proxy</source> - <translation type="unfinished"></translation> + <location line="+2"/> + <source>b</source> + <translation>f</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> - <source>Hostname:</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>i</source> + <translation>k</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Port:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Username:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Password:</source> - <translation type="unfinished">Passwort:</translation> + <location line="+1"/> + <source>u</source> + <translation>u</translation> </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> - <translation type="unfinished">Konsolenfenster</translation> + <translation>Befehlsfenster</translation> </message> </context> <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> - <translation type="unfinished"></translation> + <translation>Suchbegriff eingeben und mit 'Enter' die Scuhe starten</translation> </message> <message> <location line="+4"/> <source>Global search</source> - <translation type="unfinished"></translation> + <translation>Globale Suche</translation> </message> </context> <context> <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> - <translation type="unfinished"></translation> + <translation>Willkommen zu GNU Octave</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> - <translation type="unfinished"></translation> + <translation>Es scheint, dass Sie Octave-GUI das erste Mal auf diesem Computer ausführen, da die Konfigurationsdatei +~/.config/octave/qt-settings +nicht gefunden wurde. Die Default-Konfiguration wird beim Fortfahren an diese Stelle kopiert. Wenn bestehende Einstellungen verwendet werden sollen, muss dieser Dialog geschlossen und die vorhandene Datei an die oben angegebene Stelle kopiert werden. Eine vorhandene Konfigurationsdatei wird beim nächsten Start automatisch erkannt. + +Nach dem Programmstart können die Einstellungen im Menü "Datei/Einstellungen" angepasst werden.</translation> </message> <message> <location line="+41"/> <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> - <translation type="unfinished"></translation> + <translation>Weiter</translation> </message> <message> <location line="-124"/> <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> - <translation type="unfinished"></translation> + <translation>Zurück</translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> - <translation type="unfinished"></translation> + <translation>Willkommen zu Octave!</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> - <translation type="unfinished"></translation> + <translation>Dieses ist die Entwicklungsversion von Octave mit der ersten offiziellen GUI.</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> - <translation type="unfinished"></translation> + <translation>Die GUI von Octave wird offenbar das erste mal auf diesem Computer ausgeführt. Dieser Assistent erstellt beim Klick auf 'Beenden' eine Standarkonfiguration und startet Octve-GUI. </translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> - <translation type="unfinished"></translation> + <translation>Beenden</translation> </message> </context> <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> - <translation type="unfinished">Bezeichner</translation> + <translation>Bezeichner</translation> + </message> + <message> + <location line="+1"/> + <source>Class</source> + <translation>Klasse</translation> </message> <message> - <location line="+0"/> - <source>Class</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Dimension</source> + <translation>Dimension</translation> </message> <message> - <location line="+0"/> - <source>Dimension</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Value</source> + <translation>Wert</translation> </message> <message> - <location line="+0"/> - <source>Value</source> - <translation type="unfinished">Wert</translation> + <location line="+1"/> + <source>Storage Class</source> + <translation>Speicherklasse</translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation>Rechtsklick zum Kopeiren, Umbenennen oder Anzeigen</translation> </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> - <translation type="unfinished">Arbeitsumgebung</translation> + <translation>Arbeitsumgebung</translation> + </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation>Sehen Sie die Variablen ein, die sich in der aktiven Arbeitsumgebung befinden.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation>Kopieren</translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation>Umbenennen</translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation>Nur Varaiblen auf höchster Ebene können umbenannt werden.</translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation>Einsehen der Varaiblen der aktiven Arbeitsumgebung.<br></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation>Farben der Speicherklassen:</translation> </message> </context> </TS>
--- a/libgui/languages/en_US.ts +++ b/libgui/languages/en_US.ts @@ -2,53 +2,98 @@ <!DOCTYPE TS> <TS version="2.0"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> <translation type="unfinished"></translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> <translation type="unfinished"></translation> </message> @@ -68,6 +113,11 @@ <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Print</source> + <translation type="unfinished"></translation> + </message> + <message> <location line="+3"/> <source>&Undo</source> <translation type="unfinished"></translation> @@ -93,22 +143,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> <translation type="unfinished"></translation> </message> @@ -133,17 +183,37 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> + <location line="+3"/> + <source>&Comment</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> <translation type="unfinished"></translation> </message> @@ -153,22 +223,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+51"/> + <location line="+2"/> + <source>Go&to Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+63"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> <translation type="unfinished"></translation> </message> @@ -181,72 +251,271 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> <translation type="unfinished"></translation> </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <source>Are you sre you want to delete +</source> <translation type="unfinished"></translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> + <source>Can not delete a directory that is not empty</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> + <location line="+0"/> + <source>Create file in +</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> + <location line="+17"/> + <source>Create Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> <translation type="unfinished"></translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> <translation type="unfinished"></translation> </message> @@ -276,7 +545,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> <translation type="unfinished"></translation> </message> @@ -291,7 +565,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> <translation type="unfinished"></translation> </message> @@ -310,11 +584,202 @@ <source>Search se&lection</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Idle.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+100"/> + <source>Searching...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> <translation type="unfinished"></translation> </message> @@ -329,7 +794,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> <translation type="unfinished"></translation> </message> @@ -338,250 +803,103 @@ <source>Evaluate</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>lexer_octave_gui</name> <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> + <location line="+1"/> + <source>Create script</source> <translation type="unfinished"></translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> <translation type="unfinished"></translation> </message> <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> + <location line="-338"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+52"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+2"/> - <source>Class</source> + <source>Function</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> + <location line="+3"/> <source>Figure</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="-55"/> <source>Open...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> + <location line="+18"/> <source>Preferences...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+4"/> <source>Exit</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="+7"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Select All</source> + <location line="-602"/> + <source>Set working directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delete</source> + <location line="+686"/> + <source>Find Files...</source> <translation type="unfinished"></translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> <translation type="unfinished"></translation> </message> @@ -591,143 +909,228 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+4"/> <source>Continue</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+8"/> <source>Exit Debug Mode</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> + <location line="+48"/> + <source>Show File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> + <location line="+106"/> + <source>On Disk</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> <translation type="unfinished"></translation> </message> <message> <location line="+4"/> + <source>One directory up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-392"/> + <source>Load workspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+192"/> <source>&Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Show Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> + <location line="+3"/> <source>Show Command History</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+6"/> <source>Show Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> + <location line="+5"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Command History</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="+6"/> <source>Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> + <location line="+108"/> <source>Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> + <location line="-36"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Report Bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Visit Agora</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_dock_widget</name> + <message> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>&Help</source> + <location line="+9"/> + <source>Hide widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+29"/> + <source>Unock widget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> + <source>Change Directory or Add Directory to Load Path</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Visit Agora</source> + <source>Change Directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Visit Octave Forge</source> + <location line="+1"/> + <source>Add Directory to Load Path</source> <translation type="unfinished"></translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> + <location line="+1"/> + <source>Cancel</source> <translation type="unfinished"></translation> </message> </context> @@ -735,223 +1138,331 @@ <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+97"/> <source>Octave logo only</source> <translation type="unfinished"></translation> </message> <message> + <location line="+10"/> + <source>Letter icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Editor</source> + <translation type="unfinished"></translation> + </message> + <message> <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> + <source>Show white space</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> + <source>Case sensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> + <location line="+23"/> + <source>Match words in document</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+46"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> + <location line="-745"/> <source>Show line numbers</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+27"/> <source>Highlight current line</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+262"/> <source>Code completion</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-282"/> <source>Show complete path in window title</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+548"/> <source>emacs</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> + <location line="+67"/> <source>Terminal</source> <translation type="unfinished"></translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> + <location line="+15"/> <source>Cursor type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+23"/> <source>Cursor blinking</source> <translation type="unfinished"></translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+102"/> + <source>Font size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> <translation type="unfinished"></translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file size</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file type</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show date of last modification</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show hidden files</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <source>Synchronize octave directory with the file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> <source>Alternating row colors</source> <translation type="unfinished"></translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Network</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> + <location line="+45"/> <source>Use proxy server</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Proxy Type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> + <location line="-33"/> <source>HttpProxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-1108"/> + <source>Icon set for dock widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1099"/> <source>Socks5Proxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> + <location line="-16"/> <source>Hostname:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+54"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-27"/> <source>Username:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+37"/> <source>Password:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-137"/> + <source>Difference to the defalt size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> @@ -959,7 +1470,7 @@ <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> <translation type="unfinished"></translation> </message> @@ -973,13 +1484,11 @@ <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> <translation type="unfinished"></translation> </message> @@ -988,10 +1497,6 @@ <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> <translation type="unfinished"></translation> </message> @@ -1000,34 +1505,26 @@ <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> <translation type="unfinished"></translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> <translation type="unfinished"></translation> </message> @@ -1035,32 +1532,72 @@ <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Dimension</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Value</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1"/> + <source>Storage Class</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation type="unfinished"></translation> + </message> </context> </TS>
--- a/libgui/languages/es_ES.ts +++ b/libgui/languages/es_ES.ts @@ -1,1066 +1,1610 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_MX"> +<TS version="2.0" language="es"> +<context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation>Seleccionar todo</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation>automático</translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation>función</translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation>global</translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation>oculto</translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation>heredado</translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation>persistente</translation> + </message> +</context> <context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> - <translation type="unfinished">Documentación</translation> + <translation>Documentación</translation> + </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation>Consultar documentación para obtener ayuda.</translation> </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> - <translation type="unfinished"></translation> + <translation>Editor de Octave</translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> - <translation type="unfinished"></translation> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Archivos de Octave (*.m);;Todos los archivos (*)</translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> - <translation type="unfinished"></translation> + <translation>No se ha podido abrir el archivo %1 para su lectura:\n%2.</translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> - <translation type="unfinished"></translation> + <translation>¡Archivo no guardado! Un archivo con el nombre seleccionado\n%1\n ya se encuentra abierto en el editor </translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> - <translation type="unfinished"></translation> + <translation>La pestaña para la edición del archivo ha desaparecido. Es probable que se haya cerrado por algún medio.</translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> - <translation type="unfinished"></translation> + <translation>&%1 %2</translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> - <translation type="unfinished">Archivo &nuevo</translation> + <translation>Archivo &nuevo</translation> </message> <message> <location line="+3"/> <source>&Open File</source> - <translation type="unfinished">&Abrir archivo</translation> + <translation>&Abrir archivo</translation> </message> <message> <location line="+3"/> <source>&Save File</source> - <translation type="unfinished">&Guardar archivo</translation> + <translation>&Guardar archivo</translation> </message> <message> <location line="+4"/> <source>Save File &As</source> - <translation type="unfinished">Guardar archivo &como</translation> + <translation>Guardar archivo &como</translation> + </message> + <message> + <location line="+4"/> + <source>Print</source> + <translation>Imprimir</translation> </message> <message> <location line="+3"/> <source>&Undo</source> - <translation type="unfinished">&Deshacer</translation> + <translation>&Deshacer</translation> </message> <message> <location line="+3"/> <source>&Redo</source> - <translation type="unfinished">&Rehacer</translation> + <translation>&Rehacer</translation> </message> <message> <location line="+3"/> <source>&Copy</source> - <translation type="unfinished">&Copiar</translation> + <translation>&Copiar</translation> </message> <message> <location line="+3"/> <source>Cu&t</source> - <translation type="unfinished">Cor&tar</translation> + <translation>Cor&tar</translation> </message> <message> <location line="+4"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Pegar</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> - <translation type="unfinished"></translation> + <translation>&Marcador siguiente</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> - <translation type="unfinished"></translation> + <translation>Marcador &anterior</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> - <translation type="unfinished"></translation> + <translation>&Alternar marcadores</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> - <translation type="unfinished"></translation> + <translation>&Eliminar todos los marcadores</translation> </message> <message> <location line="+4"/> <source>&Next breakpoint</source> - <translation type="unfinished"></translation> + <translation>Punto de interrupción &siguiente </translation> </message> <message> <location line="+3"/> <source>Pre&vious breakpoint</source> - <translation type="unfinished"></translation> + <translation>Punto de interrupción &anterior</translation> </message> <message> <location line="+3"/> <source>Toggle &breakpoint</source> - <translation type="unfinished"></translation> + <translation>&Alternar puntos de interrupción</translation> </message> <message> <location line="+3"/> <source>&Remove All breakpoints</source> - <translation type="unfinished"></translation> + <translation>&Remover todos los puntos de interrupción</translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>&Comment</source> + <translation>&Comentar</translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation>&Eliminar comentario</translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation>Archivos &recientes</translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation>C&errar</translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation>Cerrar todo</translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation>Cerrar otros archivos</translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> - <translation type="unfinished"></translation> + <translation>&Buscar y reemplazar</translation> </message> <message> <location line="+3"/> <source>Save File And Run</source> - <translation type="unfinished"></translation> + <translation>Guardar archivo y ejecutar</translation> </message> <message> - <location line="+51"/> - <source>&File</source> - <translation type="unfinished">&Archivo</translation> + <location line="+2"/> + <source>Go&to Line</source> + <translation>&Ir a línea</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> + <location line="+63"/> + <source>&File</source> + <translation>&Archivo</translation> </message> <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> - <translation type="unfinished">&Editar</translation> + <translation>&Editar</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> - <translation type="unfinished"></translation> + <translation>&Depurar</translation> </message> <message> <location line="+9"/> <source>&Run</source> - <translation type="unfinished">&Ejecutar</translation> + <translation>&Ejecutar</translation> </message> </context> <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation>Ir a línea</translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation>Número de línea</translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation><sin nombre></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation>¿Desea guardar o descartar los cambios?</translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation>¿Desea cancelar el cierre, guardar o descartar los cambios?</translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> - <translation type="unfinished"></translation> + <translation>Editor de Octave</translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> - <translation type="unfinished"></translation> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation>El archivo\n%1\n está a punto de ser cerrado pero ha sido modificado.\n%2</translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Archivos de Octave(*.m);;Todos los archivos(*)</translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation>¡Archivo no guardado! El nombre del archivo seleccionado\n%1\n es el mismo que el nombre del archivo actual</translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation>\n\n Advertencia: ¡El contenido del editor ha sido modificado!</translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation>Al parecer el archivo\n%1\n ha sido eliminado o renombrado.¿Desea guardarlo ahora?%2</translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> - <translation type="unfinished"></translation> + <translation>No se ha podido abrir el archivo %1 para escritura:\n%2.</translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> + <translation>Al parecer el archivo \'%1\' ha sido modificado por otra aplicación. ¿Desea recargarlo?</translation> </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished"></translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation>Explorador de archivos</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation>Explore sus archivos.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation>Introduzca la dirección o el nombre del archivo </translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation>Subir un directorio</translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation>Mostrar el directorio de Octave</translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation>Ir al directorio actual de Octave</translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation>Fijar el directorio de Octave</translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation>Fijar directorio de Octave como directorio actual del explorador</translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation>Acciones en el directorio actual</translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation>Mostrar el directorio de inicio </translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation>Buscar directorio</translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation>Buscar archivos ...</translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation>Archivo nuevo</translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation>Directorio nuevo</translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation>Haga.doble clic sobre un archivo para abrirlo</translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation>Abrir</translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation>Abrir en aplicación predeterminada</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation>Copiar selección al portapapeles </translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation>Ejecutar</translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation>Cargar datos</translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation>Fijar directorio actual</translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation>Renombrar</translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation>Eliminar</translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation>Renombrar archivo/directorio</translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation>Renombrar archivo/directorio:</translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation>\n a: </translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation>Eliminar archivo/directorio</translation> + </message> + <message> + <location line="-10"/> + <source>Are you sure you want to delete +</source> + <translation>¿Está seguro que desea eliminar\n</translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Subir un directorio.</translation> + <source>Can not delete a directory that is not empty</source> + <translation>No se puede eliminar un directorio que no esté vacio</translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation>Fijar directorio de explorador de archivos</translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation>Crear archivo</translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Introduzca dirección o nombre de archivo.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation>Crear archivo en</translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Haga doble clic para abir archivo.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation>Crear directorio</translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation>Crear carpeta en</translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> - <translation type="unfinished"></translation> + <translation>&Buscar:</translation> </message> <message> <location line="+3"/> <source>Re&place with:</source> - <translation type="unfinished"></translation> + <translation>&Reemplazar con:</translation> </message> <message> <location line="+4"/> <source>Match &case</source> - <translation type="unfinished"></translation> + <translation>Distinguir &mayúsculas/minúsculas</translation> </message> <message> <location line="+1"/> <source>Search from &start</source> - <translation type="unfinished"></translation> + <translation>Buscar desde el &inicio</translation> </message> <message> <location line="+1"/> <source>&Wrap while searching</source> - <translation type="unfinished"></translation> + <translation>&Marcar mientras se busca</translation> </message> <message> <location line="+2"/> <source>&Find Next</source> - <translation type="unfinished"></translation> + <translation>&Buscar siguiente</translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation>Buscar &anterior</translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> - <translation type="unfinished"></translation> + <translation>&Reemplazar</translation> </message> <message> <location line="+1"/> <source>Replace &All</source> - <translation type="unfinished"></translation> + <translation>Reemplazar &todo</translation> </message> <message> <location line="+2"/> <source>&More</source> - <translation type="unfinished"></translation> + <translation>&Más</translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> - <translation type="unfinished"></translation> + <translation>Palabras &completas</translation> </message> <message> <location line="+1"/> <source>Regular E&xpressions</source> - <translation type="unfinished"></translation> + <translation>E&xpresiones regulares</translation> </message> <message> <location line="+1"/> <source>Search &backward</source> - <translation type="unfinished"></translation> + <translation>Buscar hacia &atrás</translation> </message> <message> <location line="+1"/> <source>Search se&lection</source> - <translation type="unfinished"></translation> + <translation>Buscar se&lección</translation> + </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation>Buscar desde el final</translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation>Buscar desde el inicio</translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation>Reemplazar resultado</translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation>%1 instancias reemplazadas </translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation>Resultado de la búsqueda</translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation>No se han encontrado más coincidencias </translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation>Buscar archivos</translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation>Nombrado:</translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation>Introducir la expresión del nombre de archivo</translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation>Iniciar en:</translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation>Introducir directorio de inicio</translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation>Explorar...</translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation>Explorar para seleccionar el directorio de inicio</translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation>Explorar directorios recursivamente </translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation>Buscar recursivamente archivos que coincidan en los directorios</translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation>Incluir directorios</translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation>Incluir directorios que coicidan en los resultados de la búsqueda </translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation>Distinguir mayúsculas/minúsculas en nombre </translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation>Establecer distinción entre mayúsculas y minúsculas en el nombre </translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation>Contiene el texto:</translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation>La búsqueda debe coincidir con el texto</translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation>Texto a coincidir </translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation>Distinguir mayúsculas/minúsculas en texto </translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation>Establecer distinción entre mayúsculas y minúsculas en el texto</translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation>Resultados de la búsqueda</translation> + </message> + <message> + <location line="+10"/> + <source>Idle.</source> + <translation>Inactivo.</translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation>Buscar</translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation>Empezar búsqueda de archivos coincidentes</translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation>Detener</translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation>Detener búsqueda</translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation>Nombre de archivo/ubicación</translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation>Contenido del archivo</translation> + </message> + <message> + <location line="+100"/> + <source>Searching...</source> + <translation>Buscando...</translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation>Fijar directorio de búsqueda</translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation>Nombre de archivo</translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation>Directorio</translation> </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation>Explorar y buscar en el historial de comandos.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> - <translation type="unfinished">Haga doble clic para transferir el comando a la terminal.</translation> + <translation>Haga doble clic para transferir el comando a la terminal.</translation> </message> <message> <location line="+6"/> <source>Enter text to filter the command history.</source> - <translation type="unfinished">Introduzca texto para filtrar el historial de comandos.</translation> + <translation>Introduzca texto para filtrar el historial de comandos.</translation> </message> <message> <location line="+4"/> <source>Command History</source> - <translation type="unfinished">Historial de comandos</translation> + <translation>Historial de comandos</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Copiar</translation> </message> <message> <location line="+1"/> <source>Evaluate</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>lexer_octave_gui</name> - <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">Valores predeterminados</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Comentario</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Comando</translation> + <translation>Evaluar</translation> </message> <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Número</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Contraseña</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">Cadena entre comillas simples</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Operador</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Identificador</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">Cadena entre comillas dobles</translation> + <location line="+1"/> + <source>Create script</source> + <translatorcomment>Ha sido utilizada la traducción "guión" de script: http://es.wikipedia.org/wiki/Script#Traducci.C3.B3n</translatorcomment> + <translation>Crear un guión</translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Guardar espacio de trabajo</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> - <translation type="unfinished">Cargar espacio de trabajo</translation> + <translation>Cargar espacio de trabajo</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> - <translation type="unfinished">Acerca de Octave</translation> - </message> - <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Ver variables en el espacio de trabajo activo.</translation> + <translation>Acerca de Octave</translation> </message> <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Navegar y buscar en el historial de comandos.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Explorar sus archivos.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> + <location line="-338"/> + <source>&File</source> + <translation>&Archivo</translation> </message> <message> - <location line="+39"/> - <source>&File</source> - <translation type="unfinished">&Archivo</translation> + <location line="+52"/> + <source>New</source> + <translation>Nuevo</translation> </message> <message> - <location line="+2"/> - <source>New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> + <translatorcomment>Guión/"Script"</translatorcomment> + <translation>Guión</translation> </message> <message> <location line="+2"/> - <source>Class</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Figure</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Preferences...</source> - <translation type="unfinished"></translation> + <source>Function</source> + <translation>Función</translation> </message> <message> <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> + <source>Figure</source> + <translation>Figura</translation> </message> <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> + <location line="-55"/> + <source>Open...</source> + <translation>Abrir...</translation> </message> <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> + <location line="+18"/> + <source>Preferences...</source> + <translation>Preferencias...</translation> </message> <message> <location line="+4"/> <source>Exit</source> - <translation type="unfinished">Salir</translation> + <translation>Salir</translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> - <translation type="unfinished">&Editar</translation> + <translation>&Editar</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> - <translation type="unfinished"></translation> + <translation>Deshacer</translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Copy</source> + <translation>Copiar</translation> </message> <message> <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Pegar</translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> - <translation type="unfinished"></translation> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> + <translation>Guardar espacio de trabajo como</translation> </message> <message> - <location line="+5"/> - <source>Select All</source> - <translation type="unfinished"></translation> + <location line="-602"/> + <source>Set working directory</source> + <translation>Fijar directorio de trabajo</translation> </message> <message> - <location line="+3"/> - <source>Delete</source> - <translation type="unfinished"></translation> + <location line="+686"/> + <source>Find Files...</source> + <translation>Buscar archivos...</translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> - <translation type="unfinished"></translation> + <translation>Limpiar ventana de comandos</translation> </message> <message> <location line="+3"/> <source>Clear Command History</source> - <translation type="unfinished"></translation> + <translation>Limpiar historial de comandos</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> - <translation type="unfinished"></translation> + <translation>Limpiar espacio de trabajo</translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> - <translation type="unfinished"></translation> + <translation>&Depurar</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> - <translation type="unfinished"></translation> + <translation>Siguiente instrucción </translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> - <translation type="unfinished"></translation> + <translation>Entrar en una función</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> - <translation type="unfinished"></translation> + <translation>Salir de una función</translation> + </message> + <message> + <location line="+4"/> + <source>Continue</source> + <translation>Continuar</translation> </message> <message> <location line="+8"/> - <source>Continue</source> - <translation type="unfinished"></translation> + <source>Exit Debug Mode</source> + <translation>Salir del modo de depuración</translation> + </message> + <message> + <location line="+48"/> + <source>Show File Browser</source> + <translation>Mostrar explorador de archivos</translation> </message> <message> - <location line="+13"/> - <source>Exit Debug Mode</source> - <translation type="unfinished"></translation> + <location line="+20"/> + <source>File Browser</source> + <translation>Explorador de archivos</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> + <translation>Reestablecer esquema de ventana predeterminado</translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> - <translation type="unfinished"></translation> + <location line="+106"/> + <source>On Disk</source> + <translation>En disco</translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Online</source> + <translation>En línea</translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation>Introducir nombre de directorio</translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> + <translation>Directorio actual:</translation> </message> <message> <location line="+4"/> - <source>&Window</source> - <translation type="unfinished"></translation> + <source>One directory up</source> + <translation>Directorio superior</translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation>Explorar directorios</translation> </message> <message> - <location line="+2"/> - <source>Show Command Window</source> - <translation type="unfinished"></translation> + <location line="-392"/> + <source>Load workspace</source> + <translation>Cargar espacio de trabajo</translation> + </message> + <message> + <location line="+192"/> + <source>&Window</source> + <translation>&Ventana</translation> </message> <message> <location line="+6"/> - <source>Show Command History</source> - <translation type="unfinished"></translation> + <source>Show Command Window</source> + <translation>Mostrar ventana de comandos</translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Show Command History</source> + <translation>Mostrar historial de comandos</translation> </message> <message> <location line="+6"/> <source>Show Workspace</source> - <translation type="unfinished"></translation> + <translation>Mostrar espacio de trabajo</translation> + </message> + <message> + <location line="+3"/> + <source>Show Editor</source> + <translation>Mostrar editor</translation> + </message> + <message> + <location line="+3"/> + <source>Show Documentation</source> + <translation>Mostrar documentación</translation> </message> <message> <location line="+5"/> - <source>Show Editor</source> - <translation type="unfinished"></translation> + <source>Command Window</source> + <translation>Ventana de comandos</translation> + </message> + <message> + <location line="+3"/> + <source>Command History</source> + <translation>Historial de comandos</translation> + </message> + <message> + <location line="+6"/> + <source>Workspace</source> + <translation>Espacio de trabajo</translation> </message> <message> - <location line="+5"/> - <source>Show Documentation</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+3"/> + <location line="+108"/> + <source>Documentation</source> + <translation>Documentación</translation> + </message> + <message> + <location line="-36"/> + <source>&Help</source> + <translation>&Ayuda</translation> </message> <message> <location line="+7"/> - <source>Command Window</source> - <translation type="unfinished"></translation> + <source>Report Bug</source> + <translation>Informar de fallo</translation> </message> <message> - <location line="+4"/> - <source>Command History</source> - <translation type="unfinished">Historial de comandos</translation> + <location line="+6"/> + <source>Visit Agora</source> + <translation>Visitar Agora</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished"></translation> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation>Visitar Octave Forge</translation> </message> +</context> +<context> + <name>octave_dock_widget</name> <message> - <location line="+4"/> - <source>Workspace</source> - <translation type="unfinished">Espacio de trabajo</translation> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> + <translatorcomment>Uso "widget" por ser el término usual: http://es.wikipedia.org/wiki/Widget</translatorcomment> + <translation>Desacoplar widget</translation> </message> <message> - <location line="+4"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="+9"/> + <source>Hide widget</source> + <translatorcomment>Uso "widget" por ser el término usual: http://es.wikipedia.org/wiki/Widget</translatorcomment> + <translation>Ocultar widget</translation> </message> <message> - <location line="+4"/> - <source>Documentation</source> - <translation type="unfinished">Documentación</translation> + <location line="+82"/> + <source>Dock widget</source> + <translatorcomment>Uso "widget" por ser el término usual: http://es.wikipedia.org/wiki/Widget</translatorcomment> + <translation>Acoplar widget</translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation>Ayuda</translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translatorcomment>Uso la traducción "ruta" para "path": http://es.wikipedia.org/wiki/Ruta_(informática)</translatorcomment> + <translation>El archivo %1 no existe en la ruta de carga. Para depurar la función que acualmente edita, tiene que cambiar ya sea el directorio %2 o agregar ese directorio a la ruta de carga.</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Help</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> + <translation>El archivo %1 es afectado por un archivo con el mismo nombre en la ruta de carga. Para depurar la función que edita, cambie al directorio%2. </translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Reportar error de software/Bug</translation> + <source>Change Directory or Add Directory to Load Path</source> + <translation>Cambiar directorio o agregar directorio a la ruta de carga</translation> </message> <message> <location line="+2"/> - <source>Visit Agora</source> - <translation type="unfinished"></translation> + <source>Change Directory</source> + <translation>Cambiar directorio</translation> </message> <message> - <location line="+2"/> - <source>Visit Octave Forge</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translatorcomment>Uso la traducción "ruta" para "path": http://es.wikipedia.org/wiki/Ruta_(informática)</translatorcomment> + <translation>Agregar directorio a la ruta de carga</translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Cancel</source> + <translation>Cancelar</translation> </message> </context> <context> <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> - <translation type="unfinished">Configuración</translation> + <translation>Configuración</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Octave logo only</source> - <translation type="unfinished"></translation> + <translation>General</translation> </message> <message> - <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="+97"/> + <source>Octave logo only</source> + <translation>Sólo logo de Octave</translation> </message> <message> <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font</source> - <translation type="unfinished"></translation> + <source>Letter icons</source> + <translation>Íconos de letras</translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation>Íconos gráficos</translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> + <location line="+39"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+16"/> + <source>Show white space</source> + <translation>Mostrar espacios en blanco</translation> </message> <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <source>Show line numbers</source> - <translation type="unfinished"></translation> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation>No mostrar espacios en blanco de sangría</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Highlight current line</source> - <translation type="unfinished"></translation> + <location line="+28"/> + <source>Color</source> + <translation>Color</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Code completion</source> - <translation type="unfinished"></translation> + <location line="+120"/> + <source>Indent width</source> + <translation>Ancho de sangría</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show complete path in window title</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Tab indents line</source> + <translation>Sangrar con tabulación</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> + <source>Auto indentation</source> + <translation>Sangría automática</translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation>Tamaño de tabulador </translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation>Mostrar guías de sangría</translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation>Tecla de retroceso quita sangría</translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation>Caracteres mostrados antes de la lista de sugerencias</translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Usar editor de archivos personalizados:</translation> + <location line="+71"/> + <source>Match keywords</source> + <translation>Coincidir en palabras clave</translation> + </message> + <message> + <location line="+13"/> + <source>Case sensitive</source> + <translation>Distinguir mayúsculas/minúsculas</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>emacs</source> - <translation type="unfinished">emacs</translation> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation>Sustituir palabra con sugerencia</translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation>Coincidir palabras en documento</translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation>Restaurar las pestañas del editor de la sesión anterior en el arranque </translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> + <translation>Utilizar editor de archivos personalizado</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> - <source>Terminal</source> - <translation type="unfinished">Terminal</translation> + <source>Command line (%f=file, %l=line):</source> + <translation>Línea de comando (%f=archivo,%l=línea):</translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation>Estilos del editor</translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation><html><head/><body><p>Seleciona tipo de fuente, Tamaño de fuente (a diferencia del tamaño predeterminado), decoración de la fuente (negrita, cursiva, subrayada), color del texto y color del fondo (para este último, el color rosa (255,0,255) es el color predeterminado)</p></body></html></translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> - <source>Cursor type:</source> - <translation type="unfinished"></translation> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation>Utilizar color de primer plano </translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation>Colores de la terminal</translation> + </message> + <message> + <location line="+46"/> + <source>Font</source> + <translation>Tipo de fuente</translation> + </message> + <message> + <location line="-745"/> + <source>Show line numbers</source> + <translation>Mostrar numeros de línea</translation> </message> <message> <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Cursor blinking</source> - <translation type="unfinished"></translation> + <source>Highlight current line</source> + <translation>Resaltar línea actual</translation> + </message> + <message> + <location line="+262"/> + <source>Code completion</source> + <translation>Autocompletar código</translation> + </message> + <message> + <location line="-282"/> + <source>Show complete path in window title</source> + <translation>Mostrar ruta completa en el título de la ventana</translation> + </message> + <message> + <location line="+548"/> + <source>emacs</source> + <translation>emacs</translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+67"/> + <source>Terminal</source> + <translation>Terminal</translation> + </message> + <message> + <location line="+15"/> + <source>Cursor type:</source> + <translation>Tipo de cursor: </translation> + </message> + <message> + <location line="+23"/> + <source>Cursor blinking</source> + <translation>Cursor parpadeante</translation> + </message> + <message> + <location line="+102"/> + <source>Font size</source> + <translation>Tamaño de fuente</translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> - <translation type="unfinished">Explorador de archivos</translation> + <translation>Explorador de archivos</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Mostrar nombres de archivos</translation> + <source>Show file size</source> + <translation>Mostrar tamaño de archivo</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file size</source> - <translation type="unfinished">Mostrar tamaño de archivo</translation> + <source>Show file type</source> + <translation>Mostrar tipo de archivo</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file type</source> - <translation type="unfinished">Mostrar tipo de archivo</translation> + <source>Show date of last modification</source> + <translation>Mostrar fecha de la última modificación</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show date of last modification</source> - <translation type="unfinished">Mostrar fecha de la última modificación</translation> + <source>Show hidden files</source> + <translation>Mostrar archivos ocultos</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show hidden files</source> - <translation type="unfinished">Mostrar archivos ocultos</translation> + <source>Synchronize octave directory with the file browser</source> + <translation>Sincronizar el directorio de Octave con el explorador de archivos</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Alternating row colors</source> - <translation type="unfinished">Colores alternos de filas</translation> + <translation>Alternar colores de filas</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation>Espacio de trabajo</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation>Colores para las clases de almacenamiento</translation> + </message> + <message> + <location line="+35"/> <source>Network</source> - <translation type="unfinished"></translation> + <translation>Red</translation> + </message> + <message> + <location line="+45"/> + <source>Use proxy server</source> + <translation>Utilizar servidor "proxy"</translation> + </message> + <message> + <location line="+10"/> + <source>Proxy Type:</source> + <translation>Tipo de proxy:</translation> + </message> + <message> + <location line="-33"/> + <source>HttpProxy</source> + <translation>HttpProxy</translation> + </message> + <message> + <location line="-1108"/> + <source>Icon set for dock widgets</source> + <translation>Íconos para widget acoplados</translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation>Lenguaje (reinicio requerido)</translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation>Tamaño de ícono</translation> + </message> + <message> + <location line="+1099"/> + <source>Socks5Proxy</source> + <translation>"Socks5Proxy"</translation> + </message> + <message> + <location line="-16"/> + <source>Hostname:</source> + <translation>Nombre del host:</translation> + </message> + <message> + <location line="+54"/> + <source>Port:</source> + <translation>Puerto:</translation> + </message> + <message> + <location line="-27"/> + <source>Username:</source> + <translation>Nombre de usuario:</translation> + </message> + <message> + <location line="+37"/> + <source>Password:</source> + <translation>Contraseña:</translation> + </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation>Configuración del sistema</translation> + </message> + <message> + <location line="-137"/> + <source>Difference to the default size</source> + <translation>Diferencia con el tamaño predeterminado</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> - <source>Use proxy server</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Proxy Type:</source> - <translation type="unfinished"></translation> + <source>Background color, pink (255,0,255) means default</source> + <translation>Color de fondo, rosa (255,0,255) significa predeterminado</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> - <source>HttpProxy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Socks5Proxy</source> - <translation type="unfinished"></translation> + <location line="+2"/> + <source>b</source> + <translation>b</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> - <source>Hostname:</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>i</source> + <translation>i</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Port:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Username:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Password:</source> - <translation type="unfinished">Contraseña:</translation> + <location line="+1"/> + <source>u</source> + <translation>u</translation> </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> - <translation type="unfinished"></translation> + <translation>Ventana de comandos</translation> </message> </context> <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> - <translation type="unfinished"></translation> + <translation>Escriba aquí y pulse la tecla de 'Retorno' para buscar</translation> </message> <message> <location line="+4"/> <source>Global search</source> - <translation type="unfinished"></translation> + <translation>Búsqueda global</translation> </message> </context> <context> <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> - <translation type="unfinished"></translation> + <translation>Bienvenido a GNU Octave</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> - <translation type="unfinished"></translation> + <translation> Al parecer ha iniciado Octave GUI por primera vez en su + computadora/ordenador, ya que no se ha encontrado un archivo + de configuración en '~/.octave-gui'. Este asistente lo guiará con los ajustes esenciales que + debe hacer antes de empezar a usar Octave GUI. Si desea transferir su configuración hecha con anterioridad + solamente cierre este diálogo y copie el archivo de configuración en su carpeta de inicio. La presencia de dicho archivo de configuración será detectada automáticamente y evitará esta ventana de asistencia. + IMPORTANTE: Este asistente no es completamente funcional aún. Simplemente haga clic de inicio a fin y el asistente creará un archivo de configuración estándar. </translation> </message> <message> <location line="+41"/> <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> - <translation type="unfinished"></translation> + <translation>Siguiente</translation> </message> <message> <location line="-124"/> <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> - <translation type="unfinished"></translation> + <translation>Anterior</translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> - <translation type="unfinished"></translation> + <translation>¡Bienvenido a Octave!</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> - <translation type="unfinished"></translation> + <translation>Esta es la versión en desarrollo de Octave con su primer GUI oficial.</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> - <translation type="unfinished"></translation> + <translation>Parece que ejecuta Octave GUI por primera vez en esta computadora/ordenador. Este asistente le ayudará a configurar la instalación del programa. Presione "Terminar" para escribir un archivo de configuración e iniciar Octave GUI. </translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> - <translation type="unfinished"></translation> + <translation>Terminar</translation> </message> </context> <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> - <translation type="unfinished">Nombre</translation> + <translation>Nombre</translation> + </message> + <message> + <location line="+1"/> + <source>Class</source> + <translation>Clase</translation> </message> <message> - <location line="+0"/> - <source>Class</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Dimension</source> + <translation>Dimensión</translation> </message> <message> - <location line="+0"/> - <source>Dimension</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Value</source> + <translation>Valor</translation> </message> <message> - <location line="+0"/> - <source>Value</source> - <translation type="unfinished">Valor</translation> + <location line="+1"/> + <source>Storage Class</source> + <translation>Clase de almacenamiento</translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation>Clic derecho para copiar, renombrar o mostrar</translation> </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> - <translation type="unfinished">Espacio de trabajo</translation> + <translation>Espacio de trabajo</translation> + </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation>Ver variables en el espacio de trabajo activo.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation>Copiar</translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation>Renombrar</translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation>Sólo símbolos de alto nivel pueden ser renombrados.</translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation>Ver variables del espacio de trabajo activo.<br></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation>Colores para cada clase de almacenamiento:</translation> </message> </context> </TS>
new file mode 100644 --- /dev/null +++ b/libgui/languages/fr_FR.ts @@ -0,0 +1,1677 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fr_FR"> +<context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation>Tout sélectionner</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation>automatique</translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation>fonction</translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation>global</translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation>caché</translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation>hérité</translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation>persistant</translation> + </message> + <message> + <location filename="../qterminal/libqterminal/QTerminal.cc" line="+64"/> + <source>foreground</source> + <translation>avant plan</translation> + </message> + <message> + <location line="+1"/> + <source>background</source> + <translation>arrière plan</translation> + </message> + <message> + <location line="+1"/> + <source>selection</source> + <translation>sélection</translation> + </message> + <message> + <location line="+1"/> + <source>cursor</source> + <translation>curseur</translation> + </message> +</context> +<context> + <name>QTerminal</name> + <message> + <location filename="../qterminal/libqterminal/QTerminal.h" line="+116"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation>Coller</translation> + </message> + <message> + <location line="+4"/> + <source>Clear All</source> + <translation>Tout Effacer</translation> + </message> +</context> +<context> + <name>QWinTerminalImpl</name> + <message> + <location filename="../qterminal/libqterminal/win32/QWinTerminalImpl.cpp" line="+1451"/> + <source>copied selection to clipboard</source> + <translation>sélection copiée vers le clipboard</translation> + </message> +</context> +<context> + <name>documentation_dock_widget</name> + <message> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> + <source>Documentation</source> + <translation>Documentation</translation> + </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation>Regardez la documentation pour plus d'aide.</translation> + </message> +</context> +<context> + <name>file_editor</name> + <message> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> + <source>Octave Editor</source> + <translation>Editeur d'Octave</translation> + </message> + <message> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Fichiers d'Octave (*.);;Tous les fichiers (*)</translation> + </message> + <message> + <location line="+117"/> + <source>Could not open file %1 for read: +%2.</source> + <translation>Impossible d'ouvrir le fichier %1 pour lecture : +%2.</translation> + </message> + <message> + <location line="+49"/> + <source>File not saved! A file with the selected name +%1 +is already open in the editor</source> + <translation>Fichier non-enregistré! Un fichier avec le nom sélectionné +%1 +est déjà ouvert dans l'editeur</translation> + </message> + <message> + <location line="+28"/> + <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> + <translation>L'onglet editeur de fichier associé a disparu. Il a probablement été fermé par un moyen quelconque.</translation> + </message> + <message> + <location line="+205"/> + <source>&%1 %2</source> + <translation>&%1 %2</translation> + </message> + <message> + <location line="+159"/> + <source>&New File</source> + <translation>&Nouveau</translation> + </message> + <message> + <location line="+3"/> + <source>&Open File</source> + <translation>&Ouvrir...</translation> + </message> + <message> + <location line="+3"/> + <source>&Save File</source> + <translation>&Enregistrer</translation> + </message> + <message> + <location line="+4"/> + <source>Save File &As</source> + <translation>Enregistrer &sous</translation> + </message> + <message> + <location line="+4"/> + <source>Print</source> + <translation>&Imprimer</translation> + </message> + <message> + <location line="+3"/> + <source>&Undo</source> + <translation>&Annuler</translation> + </message> + <message> + <location line="+3"/> + <source>&Redo</source> + <translation>&Refaire</translation> + </message> + <message> + <location line="+3"/> + <source>&Copy</source> + <translation>&Copier</translation> + </message> + <message> + <location line="+3"/> + <source>Cu&t</source> + <translation>Co&uper</translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation>C&oller</translation> + </message> + <message> + <location line="+3"/> + <source>&Next Bookmark</source> + <translation>Marque page &suivant</translation> + </message> + <message> + <location line="+3"/> + <source>Pre&vious Bookmark</source> + <translation>Marque page &precedent</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle &Bookmark</source> + <translation>Basculer &marque page</translation> + </message> + <message> + <location line="+3"/> + <source>&Remove All Bookmarks</source> + <translation>&Supprimer tout marque page</translation> + </message> + <message> + <location line="+4"/> + <source>&Next breakpoint</source> + <translation>Point d'arrêt &suivant</translation> + </message> + <message> + <location line="+3"/> + <source>Pre&vious breakpoint</source> + <translation>Point d'arrêt &precendent</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle &breakpoint</source> + <translation>&Basculer point d'arrêt</translation> + </message> + <message> + <location line="+3"/> + <source>&Remove All breakpoints</source> + <translation>&Enlever tout point d'arrêt</translation> + </message> + <message> + <location line="+3"/> + <source>&Comment</source> + <translation>&Commenter</translation> + </message> + <message> + <location line="+3"/> + <source>&Uncomment</source> + <translation>&Décommenter</translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation>Fichiers &recents</translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation>&Fermer</translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation>Tout fermer</translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation>Fermer les autres fichiers</translation> + </message> + <message> + <location line="-94"/> + <source>&Find and Replace</source> + <translation>&Rechercher et remplacer</translation> + </message> + <message> + <location line="+3"/> + <source>Save File And Run</source> + <translation>Enregistrer et exécuter</translation> + </message> + <message> + <location line="+2"/> + <source>Go&to Line</source> + <translation>&Aller à la ligne</translation> + </message> + <message> + <location line="+63"/> + <source>&File</source> + <translation>&Fichier</translation> + </message> + <message> + <location line="+35"/> + <source>&Edit</source> + <translation>&Editer</translation> + </message> + <message> + <location line="+21"/> + <source>&Debug</source> + <translation>&Deboguer</translation> + </message> + <message> + <location line="+9"/> + <source>&Run</source> + <translation>&Exécuter</translation> + </message> +</context> +<context> + <name>file_editor_tab</name> + <message> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation>Aller à la ligne</translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation>Numéro de ligne</translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation><sans nom></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation>Voulez-vous enregistrer ou supprimer les modifications ?</translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation>Voulez-vous annuler la fermeture, enregistrer ou supprimer les modifications ?</translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> + <source>Octave Editor</source> + <translation>Editeur d'Octave</translation> + </message> + <message> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation>Le fichier +%1 +est en cours de fermeture, mais il à été modifié. +%2</translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Fichiers d'Octave (*.m);;Tous les fichiers (*)</translation> + </message> + <message> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation>Le fichier n'a pas été enregistré. Le nom du fichier +%1 +est le même que le nom du fichier courant</translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation> + +Avertissement: Le contenu dans l'editeur est modifié!</translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation>Il semblerait que le fichier +%1 +a été supprimé ou rénommé. Voulez-vous l'enregistrer maintenant ?%2</translation> + </message> + <message> + <location line="-192"/> + <source>Could not open file %1 for write: +%2.</source> + <translation>Impossible d'ouvrir le fichier %1 pour ecrire : +%2.</translation> + </message> + <message> + <location line="+170"/> + <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> + <translation>Il semblerait que '%1' a été modifié par une autre application. Voulez-vous le récharger ?</translation> + </message> +</context> +<context> + <name>files_dock_widget</name> + <message> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation>Explorateur de fichiers</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation>Explorer vos fichiers.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation>Entrez le chemin ou le nom du fichier</translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation>Remonter d'un répertoire</translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation>Revenir au répertoire d'Octave</translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation>Aller au répertoire courant d'Octave</translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation>Définir le répertoire d'Octave</translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation>Définir le répertoire du navigateur comme répertoire d'Octave</translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation>Actions sur le répertoire courant</translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation>Aller au répertoire personnel</translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation>Rechercher dans le répertoire</translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation>Rechercher des fichiers...</translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation>Nouveau fichier</translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation>Nouveau répertoire</translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation>Double cliquez sur un fichier pour l'ouvrir</translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation>Ouvrir</translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation>Ouvrir dans l'application par défaut</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation>Copier la sélection vers le presse-papiers</translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation>Exécuter</translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation>Charger les données</translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation>Définir le répertoire courant</translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation>Rénommer</translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation>Rénommer fichier/répertoire</translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation>Rénommer fichier/répertoire: +</translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation> + en : </translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation>Supprimer fichier/répertoire</translation> + </message> + <message> + <location line="-10"/> + <source>Are you sure you want to delete +</source> + <translation>Etes-vous sûr de vouloir supprimer +</translation> + </message> + <message> + <location line="+11"/> + <source>Can not delete a directory that is not empty</source> + <translation>Impossible de supprimer un répertoire qui n'est pas vide</translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation>Définir le répertoire de l'explorateur de fichiers</translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation>Créer un fichier</translation> + </message> + <message> + <location line="+0"/> + <source>Create file in +</source> + <translation>Créer un fichier dans +</translation> + </message> + <message> + <location line="+17"/> + <source>Create Directory</source> + <translation>Créer un répertoire</translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation>Créer un répertoire dans +</translation> + </message> +</context> +<context> + <name>find_dialog</name> + <message> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> + <source>Find &what:</source> + <translation>Rechercher &quoi :</translation> + </message> + <message> + <location line="+3"/> + <source>Re&place with:</source> + <translation>Rem&placer par :</translation> + </message> + <message> + <location line="+4"/> + <source>Match &case</source> + <translation>Respecter &les majuscules/minuscules</translation> + </message> + <message> + <location line="+1"/> + <source>Search from &start</source> + <translation>Rechercher depuis &le début</translation> + </message> + <message> + <location line="+1"/> + <source>&Wrap while searching</source> + <translation>&Reprendre la recherche au début du fichier</translation> + </message> + <message> + <location line="+2"/> + <source>&Find Next</source> + <translation>Rechercher le &suivant</translation> + </message> + <message> + <location line="+1"/> + <source>Find &Previous</source> + <translation>Rechercher le &precedant</translation> + </message> + <message> + <location line="+1"/> + <source>&Replace</source> + <translation>&Remplacer</translation> + </message> + <message> + <location line="+1"/> + <source>Replace &All</source> + <translation>&Tout remplacer</translation> + </message> + <message> + <location line="+2"/> + <source>&More</source> + <translation>&Plus d'options</translation> + </message> + <message> + <location line="+13"/> + <source>&Whole words</source> + <translation>&Mots entiers</translation> + </message> + <message> + <location line="+1"/> + <source>Regular E&xpressions</source> + <translation>E&xpressions regulières</translation> + </message> + <message> + <location line="+1"/> + <source>Search &backward</source> + <translation>Recherche vers l'&arrière</translation> + </message> + <message> + <location line="+1"/> + <source>Search se&lection</source> + <translation>Recherche dans la sé&lection</translation> + </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation>Rechercher depuis la fin</translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation>Rechercher depuis le début</translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation>Résultats du remplacement</translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation>%1 instances remplacés</translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation>Résultats de la recherche</translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation>Aucune correspondance trouvée</translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation>Rechercher des fichiers</translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation>Nommé:</translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation>Entrer le nom du fichier ou une expression</translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation>Demarrer dans :</translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation>Répetoire de démarrage</translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation>Naviguer...</translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation>Choisir le répertoire de démarrage</translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation>Parcourir recursivement les sous-répertoires</translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation>Rechercher les fichiers recursivement dans les sous-répertoires</translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation>Inclure les répertoires</translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation>Inclure les répertoires concordants dans des résultats de la recherche</translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation>Nom insensible aux majuscules/minuscules</translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation>Les noms concordant sont insensible aux majuscules/minuscules</translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation>Contenant le texte :</translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation>La recherche doit contenir le texte</translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation>Texte concordant</translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation>Texte insensible aux majuscules/minuscules</translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation>Le texte concordant est insensible aux majuscules/minuscules</translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation>Résultats de la recherche</translation> + </message> + <message> + <location line="+11"/> + <source>Idle.</source> + <translation>Inoccupé.</translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation>Rechercher</translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation>Démarrer la recherche pour les fichiers concordants</translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation>Arrêter</translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation>Arreter la recherche</translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation>Nom de fichier/chemin</translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation>Contenu du fichier</translation> + </message> + <message> + <location line="+99"/> + <source>Searching...</source> + <translation>Recherche en cours...</translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation>Définir le répertoire de recherche</translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation>Fichier</translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation>Répertoire</translation> + </message> +</context> +<context> + <name>history_dock_widget</name> + <message> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation>Naviguer et rechercher le historique des commandes.</translation> + </message> + <message> + <location line="+23"/> + <source>Doubleclick a command to transfer it to the terminal.</source> + <translation>Double cliquez sur une commande pour la transférer vers le terminal.</translation> + </message> + <message> + <location line="+6"/> + <source>Enter text to filter the command history.</source> + <translation>Entrez du texte pour filtrer l'historique des commandes.</translation> + </message> + <message> + <location line="+4"/> + <source>Command History</source> + <translation>Historique des commandes</translation> + </message> + <message> + <location line="+20"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location line="+1"/> + <source>Evaluate</source> + <translation>Évaluer</translation> + </message> + <message> + <location line="+1"/> + <source>Create script</source> + <translation>Créer un fichier de script</translation> + </message> +</context> +<context> + <name>main_window</name> + <message> + <location filename="../src/main-window.cc" line="+155"/> + <source>Load Workspace</source> + <translation>Charger l'espace de travail</translation> + </message> + <message> + <location line="+355"/> + <location line="+769"/> + <source>About Octave</source> + <translation>À propos d'Octave</translation> + </message> + <message> + <location line="-338"/> + <source>&File</source> + <translation>&Fichier</translation> + </message> + <message> + <location line="+52"/> + <source>New</source> + <translation>Nouveau</translation> + </message> + <message> + <location line="+4"/> + <source>Script</source> + <translation>Fichier de script</translation> + </message> + <message> + <location line="+2"/> + <source>Function</source> + <translation>Fonction</translation> + </message> + <message> + <location line="+3"/> + <source>Figure</source> + <translation>Figure</translation> + </message> + <message> + <location line="-55"/> + <source>Open...</source> + <translation>Ouvrir...</translation> + </message> + <message> + <location line="+18"/> + <source>Preferences...</source> + <translation>Préférences...</translation> + </message> + <message> + <location line="+4"/> + <source>Exit</source> + <translation>Quitter</translation> + </message> + <message> + <location line="+51"/> + <source>&Edit</source> + <translation>&Editer</translation> + </message> + <message> + <location line="+5"/> + <source>Undo</source> + <translation>Defaire</translation> + </message> + <message> + <location line="+7"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location line="+5"/> + <source>Paste</source> + <translation>Coller</translation> + </message> + <message> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> + <translation>Enregistrer l'espace de travail sous</translation> + </message> + <message> + <location line="-602"/> + <source>Set working directory</source> + <translation>Définir le répertoire de travail</translation> + </message> + <message> + <location line="+686"/> + <source>Find Files...</source> + <translation>Rechercher des fichiers...</translation> + </message> + <message> + <location line="+6"/> + <source>Clear Command Window</source> + <translation>Nettoyer la fenêtre de commande</translation> + </message> + <message> + <location line="+3"/> + <source>Clear Command History</source> + <translation>Nettoyer l'historique des commandes</translation> + </message> + <message> + <location line="+3"/> + <source>Clear Workspace</source> + <translation>Nettoyer l'espace de travail</translation> + </message> + <message> + <location line="+36"/> + <source>De&bug</source> + <translation>De&boguer</translation> + </message> + <message> + <location line="+3"/> + <source>Step</source> + <translation>Avancer d'un pas</translation> + </message> + <message> + <location line="+3"/> + <source>Step in</source> + <translation>Avancer d'un pas avec entrée</translation> + </message> + <message> + <location line="+3"/> + <source>Step out</source> + <translation>Executer jusqu'à l'instruction de retour</translation> + </message> + <message> + <location line="+4"/> + <source>Continue</source> + <translation>Continuer</translation> + </message> + <message> + <location line="+8"/> + <source>Exit Debug Mode</source> + <translation>Sortir du mode débogage</translation> + </message> + <message> + <location line="+48"/> + <source>Show File Browser</source> + <translation>Afficher l'explorateur de fichiers</translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation>Explorateur de fichiers</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> + <translation>Rétablir la disposition par défaut des fenêtres</translation> + </message> + <message> + <location line="+106"/> + <source>On Disk</source> + <translation>Installé localement</translation> + </message> + <message> + <location line="+3"/> + <source>Online</source> + <translation>En ligne</translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation>Entrez le nom du répertoire</translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> + <translation>Répertoire courant : </translation> + </message> + <message> + <location line="+4"/> + <source>One directory up</source> + <translation>Monter au répertoire parent</translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation>Naviguer les répertoires</translation> + </message> + <message> + <location line="-392"/> + <source>Load workspace</source> + <translation>Charger l'espace de travail</translation> + </message> + <message> + <location line="+192"/> + <source>&Window</source> + <translation>&Fenêtre</translation> + </message> + <message> + <location line="+6"/> + <source>Show Command Window</source> + <translation>Afficher la fenêtre de commande</translation> + </message> + <message> + <location line="+3"/> + <source>Show Command History</source> + <translation>Afficher l'historique des commandes</translation> + </message> + <message> + <location line="+6"/> + <source>Show Workspace</source> + <translation>Afficher l'espace de travail</translation> + </message> + <message> + <location line="+3"/> + <source>Show Editor</source> + <translation>Afficher l'editeur</translation> + </message> + <message> + <location line="+3"/> + <source>Show Documentation</source> + <translation>Afficher la documentation</translation> + </message> + <message> + <location line="+5"/> + <source>Command Window</source> + <translation>Fenêtre de commande</translation> + </message> + <message> + <location line="+3"/> + <source>Command History</source> + <translation>Historique des commandes</translation> + </message> + <message> + <location line="+6"/> + <source>Workspace</source> + <translation>Espace de travail</translation> + </message> + <message> + <location line="+3"/> + <source>Editor</source> + <translation>Editeur</translation> + </message> + <message> + <location line="+3"/> + <location line="+108"/> + <source>Documentation</source> + <translation>Documentation</translation> + </message> + <message> + <location line="-36"/> + <source>&Help</source> + <translation>&Aide</translation> + </message> + <message> + <location line="+7"/> + <source>Report Bug</source> + <translation>Signaler un bug</translation> + </message> + <message> + <location line="+6"/> + <source>Visit Agora</source> + <translation>Visiter Agora</translation> + </message> + <message> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation>Visiter Octave Forge</translation> + </message> +</context> +<context> + <name>octave_dock_widget</name> + <message> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> + <translation>Détacher le widget</translation> + </message> + <message> + <location line="+9"/> + <source>Hide widget</source> + <translation>Cacher le widget</translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation>Attacher le widget</translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation>aide</translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation>Le fichier %1 n'existe pas dans les chemins accessibles. Pour déboguer la fonction que vous éditez, vous devez soit modifier le répertoire pour %2 ou ajouter le répertoire au chemin.</translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> + <translation>Le fichier %1 est occulté par un fichier avec le même nom dans le chemin. Pour déboguer la fonction que vous éditez, vous devez modifier le répertoire pour %2.</translation> + </message> + <message> + <location line="+2"/> + <source>Change Directory or Add Directory to Load Path</source> + <translation>Changer de répertoire ou ajouter le répertoire aux chemins accessibles</translation> + </message> + <message> + <location line="+2"/> + <source>Change Directory</source> + <translation>Changer le répertoire</translation> + </message> + <message> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation>Ajouter le répertoire aux chemins accessibles</translation> + </message> + <message> + <location line="+1"/> + <source>Cancel</source> + <translation>Annuler</translation> + </message> +</context> +<context> + <name>settings_dialog</name> + <message> + <location filename="../src/settings-dialog.ui" line="+29"/> + <source>Settings</source> + <translation>Configuration</translation> + </message> + <message> + <location line="+13"/> + <source>General</source> + <translation>Général</translation> + </message> + <message> + <location line="+97"/> + <source>Octave logo only</source> + <translation>Logo d'Octave seulement</translation> + </message> + <message> + <location line="+10"/> + <source>Letter icons</source> + <translation>Icones textuelles</translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation>Icones graphiques</translation> + </message> + <message> + <location line="+39"/> + <source>Editor</source> + <translation>Editeur</translation> + </message> + <message> + <location line="+16"/> + <source>Show white space</source> + <translation>Montrer les espaces blancs</translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation>Ne pas montrer les espaces blancs utilisés pour l'indentation</translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation>Couleur</translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation>Largeur de l'indentation</translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation>Indentation par tabulation</translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation>Indentation automatique</translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation>Largeur de tabulation</translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation>Afficher les guides d'indentation</translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation>Backspace supprime l'indentation</translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation>Nombre de caracteres avant d'afficher la liste de suggestions</translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> + <translation>Inclure les mots clés</translation> + </message> + <message> + <location line="+13"/> + <source>Case sensitive</source> + <translation>Sensible au maj/minuscules</translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation>Remplacer le mot par la suggestion</translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation>Checher dans le document</translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation>Restaurer les onglets de la session precedente</translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> + <translation>Utiliser un editeur externe</translation> + </message> + <message> + <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation>Ligne de commande (%f=fichier, %l=ligne) :</translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation>Affichage</translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation><html><head/><body><p>Choisir le font, la taille (difference à la taille par défaut), le style (gras, italique, sous-ligné), la couleur du texte et la couleur du fond (dans ce cas, la couleur rose [255,0,255] designé la couleur de fond par défaut)</p></body></html></translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation>Utiliser la couleur du texte</translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation>Couleurs de la fenetre de commandes</translation> + </message> + <message> + <location line="+45"/> + <source>Font</source> + <translation>Font</translation> + </message> + <message> + <location line="-744"/> + <source>Show line numbers</source> + <translation>Afficher les numéros des lignes</translation> + </message> + <message> + <location line="+27"/> + <source>Highlight current line</source> + <translation>Sous-ligner la ligne courante</translation> + </message> + <message> + <location line="+262"/> + <source>Code completion</source> + <translation>Suggestions de saisie</translation> + </message> + <message> + <location line="-282"/> + <source>Show complete path in window title</source> + <translation>Afficher le chemin complet dans le titre de la fenetre</translation> + </message> + <message> + <location line="+548"/> + <source>emacs</source> + <translation>emacs</translation> + </message> + <message> + <location line="+67"/> + <source>Terminal</source> + <translation>Terminal</translation> + </message> + <message> + <location line="+15"/> + <source>Cursor type:</source> + <translation>Type de courseur :</translation> + </message> + <message> + <location line="+23"/> + <source>Cursor blinking</source> + <translation>Courseur clignotant</translation> + </message> + <message> + <location line="+101"/> + <source>Font size</source> + <translation>Taille du font</translation> + </message> + <message> + <location line="+35"/> + <source>File Browser</source> + <translation>Explorateur de fichiers</translation> + </message> + <message> + <location line="+6"/> + <source>Show file size</source> + <translation>Afficher la taille des fichiers</translation> + </message> + <message> + <location line="+7"/> + <source>Show file type</source> + <translation>Afficher le type des fichiers</translation> + </message> + <message> + <location line="+7"/> + <source>Show date of last modification</source> + <translation>Afficher la date de la dernière modification</translation> + </message> + <message> + <location line="+7"/> + <source>Show hidden files</source> + <translation>Afficher les fichiers cachés</translation> + </message> + <message> + <location line="+7"/> + <source>Synchronize octave directory with the file browser</source> + <translation>Synchronizer le répertoire de travail avec le navigateur de fichiers</translation> + </message> + <message> + <location line="+7"/> + <source>Alternating row colors</source> + <translation>Alterner les couleurs des lignes</translation> + </message> + <message> + <location line="+21"/> + <source>Workspace</source> + <translation>Espace de travail</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation>Couleurs des variables</translation> + </message> + <message> + <location line="+35"/> + <source>Network</source> + <translation>Réseau</translation> + </message> + <message> + <location line="+45"/> + <source>Use proxy server</source> + <translation>Serveur proxy</translation> + </message> + <message> + <location line="+10"/> + <source>Proxy Type:</source> + <translation>Type de proxy :</translation> + </message> + <message> + <location line="-33"/> + <source>HttpProxy</source> + <translation>Proxy HTTP</translation> + </message> + <message> + <location line="-1107"/> + <source>Icon set for dock widgets</source> + <translation>Jeu d'icones pour les widgets</translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation>Langue (necessite un redemarrage)</translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation>Taille des icones</translation> + </message> + <message> + <location line="+1098"/> + <source>Socks5Proxy</source> + <translation>Proxy Sock 5</translation> + </message> + <message> + <location line="-16"/> + <source>Hostname:</source> + <translation>Nom du hote :</translation> + </message> + <message> + <location line="+54"/> + <source>Port:</source> + <translation>Port :</translation> + </message> + <message> + <location line="-27"/> + <source>Username:</source> + <translation>Nom d'utilisateur :</translation> + </message> + <message> + <location line="+37"/> + <source>Password:</source> + <translation>Mot de passe :</translation> + </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation>Reglages système</translation> + </message> + <message> + <location line="-268"/> + <source>IBeam Cursor</source> + <translation>Curseur Trait Vertical</translation> + </message> + <message> + <location line="+1"/> + <source>Block Cursor</source> + <translation>Curseur Block</translation> + </message> + <message> + <location line="+1"/> + <source>Underline Cursor</source> + <translation>Curseur Tiret Bas</translation> + </message> + <message> + <location line="+129"/> + <source>Difference to the default size</source> + <translation>Difference avecla taille par défaut</translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation>Couleur de fond, rose [255,0,255] designe la valeur par défaut</translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation></translation> + </message> +</context> +<context> + <name>terminal_dock_widget</name> + <message> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> + <source>Command Window</source> + <translation>Fenetre de commandes</translation> + </message> +</context> +<context> + <name>webinfo</name> + <message> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> + <source>Type here and press 'Return' to search</source> + <translation>Entrez le texte ici et appuyez 'Entrée' pour lancer la recherche</translation> + </message> + <message> + <location line="+4"/> + <source>Global search</source> + <translation>Recherche globale</translation> + </message> +</context> +<context> + <name>welcome_wizard</name> + <message> + <location filename="../src/welcome-wizard.ui" line="+26"/> + <source>Welcome to GNU Octave</source> + <translation>Bienvenu dans Octave</translation> + </message> + <message> + <location line="+13"/> + <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> + <translation>Il semble que vous avez lancé Octave GUI pour la premiere fois sur cet ordinateur, puisque aucun fichier de configuration n'a été trouvé au '~/.octave-gui'. Cet assistant va vous guider à travers les reglages necessaires avant de pouvoir utiliser Octave GUI. Si vous voulez transferer des reglages que vous avez déjà fait, fermez ce dialogue et copiez le fichier de configuration dans votre repertoire personnel. La presence de ce fichier va etre detecté et cet assistant ne s'affichera plus. IMPORTANT : Cet assistant n'est pas encore completement fonctionnel. Passez les pages jusqu'à la fin et il va créer un fichier de configuration standard.</translation> + </message> + <message> + <location line="+41"/> + <location line="+50"/> + <location line="+52"/> + <location line="+52"/> + <source>Next</source> + <translation>Suivant</translation> + </message> + <message> + <location line="-124"/> + <location line="+52"/> + <location line="+52"/> + <location line="+87"/> + <source>Previous</source> + <translation>Precedent</translation> + </message> + <message> + <location line="-45"/> + <source>Welcome to Octave!</source> + <translation>Bienvenu dans Octave!</translation> + </message> + <message> + <location line="+7"/> + <source>This is the development version of Octave with the first official GUI.</source> + <translation>Ceci est la version de developpement de Octave avec le premier GUI officiel.</translation> + </message> + <message> + <location line="+10"/> + <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> + <translation>Il semble que vous executez Octave GUI pour la premiere fois sur cet ordinateur. Cet assistant va vous aider a configurer ce logiciel. Appuyez sur 'Fin' pour créer le fichier de configuration et lancer Octave GUI.</translation> + </message> + <message> + <location line="+48"/> + <source>Finish</source> + <translation>Fin</translation> + </message> +</context> +<context> + <name>workspace_model</name> + <message> + <location filename="../src/workspace-model.cc" line="-42"/> + <source>Name</source> + <translation>Nom</translation> + </message> + <message> + <location line="+1"/> + <source>Class</source> + <translation>Classe</translation> + </message> + <message> + <location line="+1"/> + <source>Dimension</source> + <translation>Dimensions</translation> + </message> + <message> + <location line="+1"/> + <source>Value</source> + <translation>Valeur</translation> + </message> + <message> + <location line="+1"/> + <source>Storage Class</source> + <translation>Type de stockage</translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation>Clique droit pour copier, renommer ou afficher</translation> + </message> +</context> +<context> + <name>workspace_view</name> + <message> + <location filename="../src/workspace-view.cc" line="+47"/> + <source>Workspace</source> + <translation>Espace de travail</translation> + </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation>Liste des variables dans l'espace de travail.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation>Renommer</translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation>Seuls les variables de plus haut niveau peuvent etre renommés.</translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation>Voir les variables dans l'espace de travail.<br></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation>Couleurs pour le type de stockage :</translation> + </message> +</context> +</TS>
--- a/libgui/languages/nl_NL.ts +++ b/libgui/languages/nl_NL.ts @@ -2,56 +2,740 @@ <!DOCTYPE TS> <TS version="2.0" language="nl_NL"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation type="unfinished">Alles selecteren</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation type="unfinished">Automatisch</translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation type="unfinished">Functie</translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation type="unfinished">Gobaal</translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation type="unfinished">Verborgen</translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation type="unfinished">Overgeërfd</translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation type="unfinished">Blijvend</translation> + </message> + <message> + <location filename="../qterminal/libqterminal/QTerminal.cc" line="+64"/> + <source>foreground</source> + <translation type="unfinished">Voorgrond</translation> + </message> + <message> + <location line="+1"/> + <source>background</source> + <translation type="unfinished">Achtergrond</translation> + </message> + <message> + <location line="+1"/> + <source>selection</source> + <translation type="unfinished">Selectie</translation> + </message> + <message> + <location line="+1"/> + <source>cursor</source> + <translation type="unfinished">Aanwijzer</translation> + </message> +</context> +<context> + <name>QTerminal</name> + <message> + <location filename="../qterminal/libqterminal/QTerminal.h" line="+116"/> + <source>Copy</source> + <translation type="unfinished">Kopiëren</translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation type="unfinished">Plakken</translation> + </message> + <message> + <location line="+4"/> + <source>Clear All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QWinTerminalImpl</name> + <message> + <location filename="../qterminal/libqterminal/win32/QWinTerminalImpl.cpp" line="+1451"/> + <source>copied selection to clipboard</source> + <translation type="unfinished">selectie naar klembord gekopieerd</translation> + </message> +</context> +<context> + <name>QsciLexerBatch</name> + <message> + <location filename="../../../qsci/qscilexerbatch.cpp" line="+179"/> + <source>Default</source> + <translation type="unfinished">Standaard</translation> + </message> + <message> + <location line="+3"/> + <source>Comment</source> + <translation type="unfinished">Commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>Keyword</source> + <translation type="unfinished">Trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Label</source> + <translation type="unfinished">Etiket</translation> + </message> + <message> + <location line="+3"/> + <source>Hide command character</source> + <translation type="unfinished">Verberg opdrachtteken</translation> + </message> + <message> + <location line="+3"/> + <source>External command</source> + <translation type="unfinished">Externe opdracht</translation> + </message> + <message> + <location line="+3"/> + <source>Variable</source> + <translation type="unfinished">Variabele</translation> + </message> + <message> + <location line="+3"/> + <source>Operator</source> + <translation type="unfinished">Operator</translation> + </message> +</context> +<context> + <name>QsciLexerCPP</name> + <message> + <location filename="../../../qsci/qscilexercpp.cpp" line="+352"/> + <source>Default</source> + <translation type="unfinished">Verstekwaarde</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive default</source> + <translation type="unfinished">Inactieve verstekwaarde</translation> + </message> + <message> + <location line="+3"/> + <source>C comment</source> + <translation type="unfinished">C commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive C comment</source> + <translation type="unfinished">Inactief C commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>C++ comment</source> + <translation type="unfinished">C++ commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive C++ comment</source> + <translation type="unfinished">Inactief C++ commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>JavaDoc style C comment</source> + <translation type="unfinished">C commentaar in JavaDoc stijl</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive JavaDoc style C comment</source> + <translation type="unfinished">Inactief C commentaar in JavaDoc stijl</translation> + </message> + <message> + <location line="+3"/> + <source>Number</source> + <translation type="unfinished">Getal</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive number</source> + <translation type="unfinished">Inactief getal</translation> + </message> + <message> + <location line="+3"/> + <source>Keyword</source> + <translation type="unfinished">Trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive keyword</source> + <translation type="unfinished">Inactief trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted string</source> + <translation type="unfinished">Tekst met dubbele aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive double-quoted string</source> + <translation type="unfinished">Inactieve tekst met dubbele aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Single-quoted string</source> + <translation type="unfinished">Tekst met aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive single-quoted string</source> + <translation type="unfinished">Inactieve tekst met aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>IDL UUID</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Inactive IDL UUID</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Pre-processor block</source> + <translation type="unfinished">Preprocessor blok</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive pre-processor block</source> + <translation type="unfinished">Inactief preprocessor blok</translation> + </message> + <message> + <location line="+3"/> + <source>Operator</source> + <translation type="unfinished">Operator</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive operator</source> + <translation type="unfinished">Inactieve operator</translation> + </message> + <message> + <location line="+3"/> + <source>Identifier</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Inactive identifier</source> + <translation type="unfinished">Inactieve identifier</translation> + </message> + <message> + <location line="+3"/> + <source>Unclosed string</source> + <translation type="unfinished">Niet afgesloten tekst</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive unclosed string</source> + <translation type="unfinished">Inactieve niet afgesloten tekst</translation> + </message> + <message> + <location line="+3"/> + <source>C# verbatim string</source> + <translation type="unfinished">C# letterlijke tekst</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive C# verbatim string</source> + <translation type="unfinished">Inactieve C# letterlijke tekst</translation> + </message> + <message> + <location line="+3"/> + <source>JavaScript regular expression</source> + <translation type="unfinished">Javascript reguliere uitdrukking</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive JavaScript regular expression</source> + <translation type="unfinished">Inatieve Javascript reguliere uitdrukking</translation> + </message> + <message> + <location line="+3"/> + <source>JavaDoc style C++ comment</source> + <translation type="unfinished">C++ commentaar in JavaDoc stijl</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive JavaDoc style C++ comment</source> + <translation type="unfinished">Inactief C++ commentaar in JavaDoc stijl</translation> + </message> + <message> + <location line="+3"/> + <source>Secondary keywords and identifiers</source> + <translation type="unfinished">Secundaire trefwoorden en identifiers</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive secondary keywords and identifiers</source> + <translation type="unfinished">Inactieve secundaire trefwoorden en identifiers</translation> + </message> + <message> + <location line="+3"/> + <source>JavaDoc keyword</source> + <translation type="unfinished">JavaDoc sleutelwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive JavaDoc keyword</source> + <translation type="unfinished">Inactief JavaDoc sleutelwoord</translation> + </message> + <message> + <location line="+3"/> + <source>JavaDoc keyword error</source> + <translation type="unfinished">fout JavaDoc trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive JavaDoc keyword error</source> + <translation type="unfinished">Inactief fout JavaDoc trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Global classes and typedefs</source> + <translation type="unfinished">Globale klassen en typedefs</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive global classes and typedefs</source> + <translation type="unfinished">Inactieve globale klassen en typedefs</translation> + </message> + <message> + <location line="+3"/> + <source>C++ raw string</source> + <translation type="unfinished">C++ ruwe tekst</translation> + </message> + <message> + <location line="+3"/> + <source>Inactive C++ raw string</source> + <translation type="unfinished">Inactieve C++ ruwe tekst</translation> + </message> +</context> +<context> + <name>QsciLexerDiff</name> + <message> + <location filename="../../../qsci/qscilexerdiff.cpp" line="+107"/> + <source>Default</source> + <translation type="unfinished">Verstekwaarde</translation> + </message> + <message> + <location line="+3"/> + <source>Comment</source> + <translation type="unfinished">Commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>Command</source> + <translation type="unfinished">Opdracht</translation> + </message> + <message> + <location line="+3"/> + <source>Header</source> + <translation type="unfinished">Koptekst</translation> + </message> + <message> + <location line="+3"/> + <source>Position</source> + <translation type="unfinished">Positie</translation> + </message> + <message> + <location line="+3"/> + <source>Removed line</source> + <translation type="unfinished">Verwijderde regel</translation> + </message> + <message> + <location line="+3"/> + <source>Added line</source> + <translation type="unfinished">Toegevoegde regel</translation> + </message> + <message> + <location line="+3"/> + <source>Changed line</source> + <translation type="unfinished">Gewijzigde regel</translation> + </message> +</context> +<context> + <name>QsciLexerMatlab</name> + <message> + <location filename="../../../qsci/qscilexermatlab.cpp" line="+138"/> + <source>Default</source> + <translation type="unfinished">Verstekwaarde</translation> + </message> + <message> + <location line="+3"/> + <source>Comment</source> + <translation type="unfinished">Commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>Command</source> + <translation type="unfinished">Opdracht</translation> + </message> + <message> + <location line="+3"/> + <source>Number</source> + <translation type="unfinished">Getal</translation> + </message> + <message> + <location line="+3"/> + <source>Keyword</source> + <translation type="unfinished">Trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Single-quoted string</source> + <translation type="unfinished">Tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Operator</source> + <translation type="unfinished">Operator</translation> + </message> + <message> + <location line="+3"/> + <source>Identifier</source> + <translation type="unfinished">Identifier</translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted string</source> + <translation type="unfinished">Tekst tussen dubbele aanhalingstekens</translation> + </message> +</context> +<context> + <name>QsciLexerPerl</name> + <message> + <location filename="../../../qsci/qscilexerperl.cpp" line="+333"/> + <source>Default</source> + <translation type="unfinished">Verstekwaarde</translation> + </message> + <message> + <location line="+3"/> + <source>Error</source> + <translation type="unfinished">Fout</translation> + </message> + <message> + <location line="+3"/> + <source>Comment</source> + <translation type="unfinished">Commentaar</translation> + </message> + <message> + <location line="+3"/> + <source>POD</source> + <translation type="unfinished">POD</translation> + </message> + <message> + <location line="+3"/> + <source>Number</source> + <translation type="unfinished">Getal</translation> + </message> + <message> + <location line="+3"/> + <source>Keyword</source> + <translation type="unfinished">Trefwoord</translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted string</source> + <translation type="unfinished">Tekst tussen dubbele aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Single-quoted string</source> + <translation type="unfinished">Tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Operator</source> + <translation type="unfinished">Operator</translation> + </message> + <message> + <location line="+3"/> + <source>Identifier</source> + <translation type="unfinished">Identifier</translation> + </message> + <message> + <location line="+3"/> + <source>Scalar</source> + <translation type="unfinished">Enkel getal</translation> + </message> + <message> + <location line="+3"/> + <source>Array</source> + <translation type="unfinished">Array</translation> + </message> + <message> + <location line="+3"/> + <source>Hash</source> + <translation type="unfinished">Hash</translation> + </message> + <message> + <location line="+3"/> + <source>Symbol table</source> + <translation type="unfinished">Symbooltabel</translation> + </message> + <message> + <location line="+3"/> + <source>Regular expression</source> + <translation type="unfinished">Reguliere uitdrukking</translation> + </message> + <message> + <location line="+3"/> + <source>Substitution</source> + <translation type="unfinished">Vervanging</translation> + </message> + <message> + <location line="+3"/> + <source>Backticks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Data section</source> + <translation type="unfinished">Data sectie</translation> + </message> + <message> + <location line="+3"/> + <source>Here document delimiter</source> + <translation type="unfinished">Here document scheidingsteken</translation> + </message> + <message> + <location line="+3"/> + <source>Single-quoted here document</source> + <translation type="unfinished">Here document tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted here document</source> + <translation type="unfinished">Here dicument tussen dubbele aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Backtick here document</source> + <translation type="unfinished">Backtick here document</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (q)</source> + <translation type="unfinished">q tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qq)</source> + <translation type="unfinished">qq tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qx)</source> + <translation type="unfinished">qx tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qr)</source> + <translation type="unfinished">qr tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qw)</source> + <translation type="unfinished">qw tekst tussen aanhalingstekens</translation> + </message> + <message> + <location line="+3"/> + <source>POD verbatim</source> + <translation type="unfinished">POD letterlijk</translation> + </message> + <message> + <location line="+3"/> + <source>Subroutine prototype</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Format identifier</source> + <translation type="unfinished">Sjabloon identifier</translation> + </message> + <message> + <location line="+3"/> + <source>Format body</source> + <translation type="unfinished">Sjabloon inhoud</translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted string (interpolated variable)</source> + <translation type="unfinished">Tekst tussen aanhalingstekens (geïnterpoleerde variabele)</translation> + </message> + <message> + <location line="+3"/> + <source>Translation</source> + <translation type="unfinished">Vertaling</translation> + </message> + <message> + <location line="+3"/> + <source>Regular expression (interpolated variable)</source> + <translation type="unfinished">Reguliere uitdrukking (Geïnterpoleerde variabele)</translation> + </message> + <message> + <location line="+3"/> + <source>Substitution (interpolated variable)</source> + <translation type="unfinished">Vervanging</translation> + </message> + <message> + <location line="+3"/> + <source>Backticks (interpolated variable)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Double-quoted here document (interpolated variable)</source> + <translation type="unfinished">Here document tussen dubbele aanhalingstekens (geïnterpoleerde variabele</translation> + </message> + <message> + <location line="+3"/> + <source>Backtick here document (interpolated variable)</source> + <translation type="unfinished">Backtick here document (geïnterpoleerde variabele)</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qq, interpolated variable)</source> + <translation type="unfinished">Tekst tussen aanhalingstekens (qq, geïnterpoleerde variabele)</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qx, interpolated variable)</source> + <translation type="unfinished">Tekst tussen aanhalingstekens (qx, geïnterpoleerde variabele)</translation> + </message> + <message> + <location line="+3"/> + <source>Quoted string (qr, interpolated variable)</source> + <translation type="unfinished">Tekst tussen aanhalingstekens (qr, geïnterpoleerde variabele)</translation> + </message> +</context> +<context> + <name>QsciScintilla</name> + <message> + <location filename="../../../qsci/qsciscintilla.cpp" line="+4201"/> + <source>&Undo</source> + <translation type="unfinished">Ongedaan maken</translation> + </message> + <message> + <location line="+4"/> + <source>&Redo</source> + <translation type="unfinished">He&rhalen</translation> + </message> + <message> + <location line="+6"/> + <source>Cu&t</source> + <translation type="unfinished">Knippen</translation> + </message> + <message> + <location line="+5"/> + <source>&Copy</source> + <translation type="unfinished">Kopiëren</translation> + </message> + <message> + <location line="+6"/> + <source>&Paste</source> + <translation type="unfinished">Plakken</translation> + </message> + <message> + <location line="+4"/> + <source>Delete</source> + <translation type="unfinished">Verwijderen</translation> + </message> + <message> + <location line="+7"/> + <source>Select All</source> + <translation type="unfinished">Alles kiezen</translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> <translation>Documentatie</translation> </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation type="unfinished">Kijk in de documentatie voor hulp.</translation> + </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> <translation></translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> - <translation>Bestand %1 is al geopend in de editor.</translation> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation type="unfinished">Octave bestanden (*.m);;Alle bestanden (*)</translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> <translation>Bestand %1 kon niet geopend worden om te lezen: %2.</translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> <translation>Bestand niet opgeslagen! Een bestand met de naam %1 -is al geopend in de editor</translation> +is reeds geopend in de editor</translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> <translation>Het bijbehorende tabblad in de editor is verdwenen. Het is waarschijnlijk op een of andere manier gesloten.</translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> <translation></translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> <translation>&Nieuw Bestand</translation> </message> @@ -71,6 +755,11 @@ <translation>Opslaan &als</translation> </message> <message> + <location line="+4"/> + <source>Print</source> + <translation type="unfinished">Afdrukken</translation> + </message> + <message> <location line="+3"/> <source>&Undo</source> <translation>Ongedaan maken</translation> @@ -96,59 +785,79 @@ <translation>Plakken</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> <translation>Volge&nde bladwijzer</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> <translation>&Vorige bladwijzer</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> <translation>&Bladwijzer invoegen</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> <translation>Alle bladwijzers ve&rwijderen</translation> </message> <message> <location line="+4"/> <source>&Next breakpoint</source> - <translation>Volge&nd breekpunt</translation> + <translation>Volge&nd onderbreekpunt</translation> </message> <message> <location line="+3"/> <source>Pre&vious breakpoint</source> - <translation>&Vorig breekpunt</translation> + <translation>&Vorig onderbreekpunt</translation> </message> <message> <location line="+3"/> <source>Toggle &breakpoint</source> - <translation>&Breekpunt invoegen</translation> + <translation>&Onderbreekpunt invoegen</translation> </message> <message> <location line="+3"/> <source>&Remove All breakpoints</source> - <translation>Alle breekpunten ve&rwijderen</translation> + <translation>Alle onderbreekpunten ve&rwijderen</translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation>Geselecteerde tekst markeren als &commentaar</translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> - <translation>Gelesecteerde tekst niet markeren als commentaar</translation> + <location line="+3"/> + <source>&Comment</source> + <translation type="unfinished">Zet om naar commentaar</translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation type="unfinished">Zet om naar code</translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation type="unfinished">Recent geopend</translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation type="unfinished">Sluit bestand</translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation type="unfinished">Alle bestanden sluiten</translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation type="unfinished">Andere bestanden sluiten</translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> - <translation>Vervangen</translation> + <translation>Zoek en Vervang</translation> </message> <message> <location line="+3"/> @@ -156,22 +865,22 @@ <translation>Bestand opslaan en uitvoeren</translation> </message> <message> - <location line="+51"/> + <location line="+2"/> + <source>Go&to Line</source> + <translation type="unfinished">Ga naar regel</translation> + </message> + <message> + <location line="+63"/> <source>&File</source> <translation>Bestand</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation>&Recent bestand openen</translation> - </message> - <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> <translation>B&ewerken</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> <translation>&Debuggen</translation> </message> @@ -184,77 +893,283 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation type="unfinished">Ga naar regel ...</translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation type="unfinished">Regelnummer</translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation type="unfinished">naamloos</translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation type="unfinished">Wil je de wijzigingen opslaan of niet?</translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation type="unfinished">Wil je niet meer afsluiten, het gewijzigde, of het originele bestand opslaan?</translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> <translation></translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> - <translation>Het bestand '%1' is aangepast. Wil je de wijzigingen opslaan?</translation> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation type="unfinished">Het bestand +%1 +dat gesloten moet worden is gewijzigd.</translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation type="unfinished">Octave bestanden (*.m);;Alle bestanden (*)</translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation type="unfinished">Bestand niet opgeslagen! De gekozen bestandsnaam +%1 +is identiek aan de huidige bestandsnaam</translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation type="unfinished"> +Opgelet: Het bestand in de editor is gewijzigd!</translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation type="unfinished">Het lijkt er op dat bestand +%1 +is gewist of hernoemd. Wil je het nu opslaan?</translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> <translation>Kon bestand %1 niet openen om te schrijven: %2.</translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation>Bestand niet opgeslagen! Je hebt een bestandsnaam - - %1 - -gekozen die hetzelfde is als de huidige bestandsnaam. Gebruik Opslaan om te overschrijven.</translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> - <translation>Het lijkt erop dat '%1' is aangepast door een ander programma. Wil je het opnieuw laden?</translation> - </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation>Het lijkt erop dat '%1' verwijderd of hernoemd is. Wil je het nu opslaan?</translation> + <translation>Het lijkt erop dat '%1' is gewijzigd door een ander programma. Wil je het opnieuw laden?</translation> </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation>Huidige map</translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation type="unfinished">Bestandsbrowser</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation type="unfinished">Blader door uw bestanden.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation type="unfinished">Voer pad- of bestandsnaam in</translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation type="unfinished">Eén mapniveau omhoog</translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation type="unfinished">Laat octave map zien</translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation type="unfinished">Ga naar huidige octave map</translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation type="unfinished">Stel octave map in</translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation type="unfinished">Maak huidige browser map de Octave map</translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation type="unfinished">Bewerkingen op huidige map</translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation type="unfinished">Laat home map zien</translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation type="unfinished">Zoek in map</translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation type="unfinished">Zoek bestanden ...</translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation type="unfinished">Nieuw bestand</translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation type="unfinished">Nieuwe map</translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation type="unfinished">Dubbelklik op bestandsnaam om te openen</translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation type="unfinished">Open</translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation type="unfinished">Open met bijbehorend programma</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation type="unfinished">Kopieer selectie naar klembord</translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation type="unfinished">Voer uit</translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation type="unfinished">Lees data in</translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation type="unfinished">Stel huidige map in</translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation type="unfinished">Hernoemen</translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished">Verwijderen</translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation type="unfinished">Hernoem bestand/map</translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation type="unfinished">Hernoem bestand</translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation type="unfinished"> + naar: </translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation type="unfinished">Wis bestand/map</translation> + </message> + <message> + <location line="-10"/> + <source>Are you sure you want to delete +</source> + <translation type="unfinished">Weet u zeker dat u dit wilt verwijderen + </translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation>Een map naar boven gaan.</translation> + <source>Can not delete a directory that is not empty</source> + <translation type="unfinished">Kan geen niet-lege map wissen</translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation type="unfinished">Stel file browser map in</translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation type="unfinished">Maak nieuw bestand</translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation>Voer het pad of de bestandsnaam in.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation type="unfinished">Maak nieuw bestand in +</translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation>Dubbelklik op een bestand om te openen.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation type="unfinished">Maak nieuwe map</translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation type="unfinished">Maak nieuwe map in +</translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> <translation>Zoek naar:</translation> </message> @@ -276,7 +1191,7 @@ <message> <location line="+1"/> <source>&Wrap while searching</source> - <translation>Bestandseinde negeren</translation> + <translation>Na bestandseinde doorgaan aan begin</translation> </message> <message> <location line="+2"/> @@ -284,7 +1199,12 @@ <translation>Volgende zoeken</translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation type="unfinished">Vorige zoeken</translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> <translation>Ve&rvang</translation> </message> @@ -299,7 +1219,7 @@ <translation>&Meer</translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> <translation>Hele &woorden</translation> </message> @@ -316,352 +1236,431 @@ <message> <location line="+1"/> <source>Search se&lection</source> - <translation>In se&lectie</translation> + <translation>In se&lectie zoeken</translation> + </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation type="unfinished">vanaf einde terug zoeken</translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation type="unfinished">Zoeken vanaf begin</translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation type="unfinished">Resultaat vervangen</translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation type="unfinished">%1 vervangingen</translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation type="unfinished">Zoek resultaat</translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation type="unfinished">Geen overeenkomsten meer gevonden</translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation type="unfinished">Zoek bestanden</translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation type="unfinished">Genaamd:</translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation type="unfinished">Voer de bestandnaam-expressie in</translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation type="unfinished">Begin in:</translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation type="unfinished">Geef startmap op</translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation type="unfinished">Bladeren ...</translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation type="unfinished">Blader naar begin map</translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation type="unfinished">Ook in onderliggende mappen</translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation type="unfinished">Zoek ook in onderliggende mappen naar overeenkomende bestanden</translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation type="unfinished">Neem mappen ook mee</translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation type="unfinished">Neem overeenkomende mappen mee in zoekresultaten</translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation type="unfinished">Niet-hoofdlettergevoelige naam</translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation type="unfinished">Naam instellen op niet-hoofdlettergevoelig</translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation type="unfinished">Met tekst:</translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation type="unfinished">Zoeken naar overeenkomende tekst</translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation type="unfinished">Overeen te komen tekst</translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation type="unfinished">Niet-hoofdlettergevoelige tekst</translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation type="unfinished">Tekst instellen op niet-hoofdlettergevoelig</translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation type="unfinished">Zoekresultaten</translation> + </message> + <message> + <location line="+11"/> + <source>Idle.</source> + <translation type="unfinished">Niet bezig.</translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation type="unfinished">Zoek</translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation type="unfinished">begin met zoeken naar overeenkomende bestanden</translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation type="unfinished">Stop</translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation type="unfinished">Stop met zoeken</translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation type="unfinished">Bestandsnaam/lokatie</translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation type="unfinished">Inhoud van bestand</translation> + </message> + <message> + <location line="+99"/> + <source>Searching...</source> + <translation type="unfinished">Bezig met zoeken...</translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation type="unfinished">Stel zoekmap in</translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation type="unfinished">Bestandsnaam</translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation type="unfinished">Map</translation> </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation type="unfinished">Bladeren en zoeken door de opdrachtgeschiedenis.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> - <translation>Dubbelklik een commando om het naar de terminal te sturen.</translation> + <translation>Dubbelklik op een opdracht om het naar de terminal te sturen.</translation> </message> <message> <location line="+6"/> <source>Enter text to filter the command history.</source> - <translation>Voer text in om de commandogeschiedenis te filteren.</translation> + <translation>Voer tekst in om de opdrachtgeschiedenis mee te filteren.</translation> </message> <message> <location line="+4"/> <source>Command History</source> - <translation>Commandogeschiedenis</translation> + <translation>Opdrachtgeschiedenis</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> <translation>Kopiëren</translation> </message> <message> <location line="+1"/> <source>Evaluate</source> - <translation>Evalueer</translation> - </message> -</context> -<context> - <name>lexer_octave_gui</name> - <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation>Standaard</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation>Commentaar</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation>Commando</translation> + <translation>Werk uit</translation> </message> <message> - <location line="+2"/> - <source>Number</source> - <translation>Nummer</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation>Trefwoord</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation>String met enkele quotes</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation></translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation>Identificator</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation>String met dubbele quotes</translation> + <location line="+1"/> + <source>Create script</source> + <translation type="unfinished">Nieuw script</translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation>Werkruimte opslaan</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> <translation>Werkruimte laden</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation>Werkmap instellen</translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> <translation>Over Octave</translation> </message> <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation>Bekijk de variabelen in de huidige werkruimte.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation>Bladeren en zoeken door de commandogeschiedenis.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation>Blader door uw bestanden.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation>Zie de documentatie voor hulp.</translation> - </message> - <message> - <location line="+39"/> + <location line="-338"/> <source>&File</source> <translation>Bestand</translation> </message> <message> - <location line="+2"/> + <location line="+52"/> <source>New</source> <translation>Nieuw</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> - <translation></translation> + <translation>Script</translation> </message> <message> - <location line="+3"/> + <location line="+2"/> <source>Function</source> <translation>Functie</translation> </message> <message> - <location line="+2"/> - <source>Class</source> - <translation>Klasse</translation> - </message> - <message> - <location line="+2"/> - <source>Enumeration</source> - <translation>Enumeratie</translation> - </message> - <message> - <location line="+2"/> + <location line="+3"/> <source>Figure</source> <translation>Figuur</translation> </message> <message> - <location line="+2"/> - <source>Variable</source> - <translation>Variabele</translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation></translation> + <location line="-55"/> + <source>Open...</source> + <translation>Open...</translation> </message> <message> - <location line="+4"/> - <source>Open...</source> - <translation></translation> - </message> - <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation>Commandoscherm sluiten</translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation>Importeer data...</translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation>Werkruimte opslaan...</translation> - </message> - <message> - <location line="+6"/> + <location line="+18"/> <source>Preferences...</source> <translation>Voorkeuren...</translation> </message> <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation>Pagina instellingen...</translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation></translation> + <location line="+4"/> + <source>Exit</source> + <translation>Afsluiten</translation> </message> <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation>Print selectie...</translation> - </message> - <message> - <location line="+4"/> - <source>Exit</source> - <translation>Sluiten</translation> - </message> - <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> <translation>B&ewerken</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> <translation>Ongedaan maken</translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation>Herhalen</translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation>Knippen</translation> - </message> - <message> - <location line="+4"/> + <location line="+7"/> <source>Copy</source> <translation>Kopiëren</translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Paste</source> <translation>Plakken</translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> - <translation>Plak naar werkruimte...</translation> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> + <translation type="unfinished">Bewaar werkruimte als ...</translation> </message> <message> - <location line="+5"/> - <source>Select All</source> - <translation>Alles selecteren</translation> + <location line="-602"/> + <source>Set working directory</source> + <translation type="unfinished">Stel werkmap in</translation> </message> <message> - <location line="+3"/> - <source>Delete</source> - <translation>Verwijderen</translation> + <location line="+686"/> + <source>Find Files...</source> + <translation>Zoek bestanden...</translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation>Vind...</translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation>Vind bestanden...</translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> - <translation>Wis commandoscherm</translation> + <translation>Veeg opdrachtvenster schoon</translation> </message> <message> <location line="+3"/> <source>Clear Command History</source> - <translation>Wis commandogeschiedenis</translation> + <translation>Wis opdrachtgeschiedenis</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> <translation>Wis werkruimte</translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> <translation>De&buggen</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> - <translation>Stap</translation> + <translation>Volgende opdracht</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> - <translation>Stap in</translation> + <translation>Stap naar binnen</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> - <translation>Stap uit</translation> + <translation>Stap naar buiten</translation> </message> <message> - <location line="+8"/> + <location line="+4"/> <source>Continue</source> <translation>Doorgaan</translation> </message> <message> - <location line="+13"/> + <location line="+8"/> <source>Exit Debug Mode</source> - <translation>Debuggen sluiten</translation> + <translation>Debuggen afsluiten</translation> + </message> + <message> + <location line="+48"/> + <source>Show File Browser</source> + <translation type="unfinished">Laat bestandsbrowser zien</translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation type="unfinished">Bestandsbrowser</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> + <translation type="unfinished">Stel oorspronkelijke window layout opnieuw in</translation> + </message> + <message> + <location line="+106"/> + <source>On Disk</source> + <translation type="unfinished">Op schijf</translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> - <translation>Bureaubla&d</translation> + <location line="+3"/> + <source>Online</source> + <translation type="unfinished">Online</translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation type="unfinished">Geef mapnaam op</translation> </message> <message> - <location line="+1"/> + <location line="+8"/> + <source>Current Directory: </source> + <translation type="unfinished">Huidige map:</translation> + </message> + <message> + <location line="+4"/> + <source>One directory up</source> + <translation type="unfinished">Eén mapniveau omhoog</translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation type="unfinished">Blader door mappen</translation> + </message> + <message> + <location line="-392"/> <source>Load workspace</source> <translation>Werkruimte laden</translation> </message> <message> - <location line="+4"/> + <location line="+192"/> <source>&Window</source> - <translation>Scherm</translation> - </message> - <message> - <location line="+2"/> - <source>Show Command Window</source> - <translation>Commandoscherm weergeven</translation> + <translation>Venster</translation> </message> <message> <location line="+6"/> - <source>Show Command History</source> - <translation>Commandogeschiedenis weergeven</translation> + <source>Show Command Window</source> + <translation>Opdrachtvenster weergeven</translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation>Huidige map weergeven</translation> + <location line="+3"/> + <source>Show Command History</source> + <translation>Opdrachtgeschiedenis weergeven</translation> </message> <message> <location line="+6"/> @@ -669,305 +1668,473 @@ <translation>Werkruimte weergeven</translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Editor</source> <translation>Editor weergeven</translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Documentation</source> <translation>Documentatie weergeven</translation> </message> <message> - <location line="+7"/> + <location line="+5"/> <source>Command Window</source> - <translation>Commandoscherm</translation> + <translation>Opdrachtvenster</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Command History</source> - <translation>Commandogeschiedenis</translation> + <translation>Opdrachtgeschiedenis</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation>Huidige map</translation> - </message> - <message> - <location line="+4"/> + <location line="+6"/> <source>Workspace</source> <translation>Werkruimte</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Editor</source> - <translation></translation> + <translation>Editor</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> + <location line="+108"/> <source>Documentation</source> <translation>Documentatie</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> - <translation>Reset schermen</translation> + <location line="-36"/> + <source>&Help</source> + <translation>Hulp</translation> </message> <message> - <location line="+4"/> - <source>&Help</source> - <translation></translation> - </message> - <message> - <location line="+2"/> + <location line="+7"/> <source>Report Bug</source> <translation>Probleem rapporteren</translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Visit Agora</source> <translation>Bezoek Agora</translation> </message> <message> - <location line="+2"/> + <location line="-3"/> <source>Visit Octave Forge</source> <translation>Bezoek Octave Forge</translation> </message> +</context> +<context> + <name>octave_dock_widget</name> <message> - <location line="+20"/> - <source>Current Directory:</source> - <translation>Huidige map:</translation> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> + <translation type="unfinished">Widget laten zweven</translation> + </message> + <message> + <location line="+9"/> + <source>Hide widget</source> + <translation type="unfinished">Widget verbergen</translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation type="unfinished">Widget in venster opnemen</translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation type="unfinished">hulp</translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation type="unfinished">Het bestand %1 is niet in zoekpad. Om de functie die je edit te debuggen moet je òf naar debetreffende map %2 gaan, of die map aan het zoekpad toevoegen.</translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> + <translation type="unfinished">Het bestand %1 is overschaduwd door een bestand met dezelfde naam in het zoekpad. Ga naar de map %2 om de functie de je edit te kunnen debuggen.</translation> + </message> + <message> + <location line="+2"/> + <source>Change Directory or Add Directory to Load Path</source> + <translation type="unfinished">Ga naar andere map of Voeg map toe aan zoekpad</translation> + </message> + <message> + <location line="+2"/> + <source>Change Directory</source> + <translation type="unfinished">Ga naar andere map</translation> + </message> + <message> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation type="unfinished">Voeg map toe aan zoekpad</translation> + </message> + <message> + <location line="+1"/> + <source>Cancel</source> + <translation type="unfinished">Afbreken</translation> </message> </context> <context> <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> <translation>Instellingen</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> <translation>Algemeen</translation> </message> <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation>Icoon ingesteld voor dock widget</translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+97"/> <source>Octave logo only</source> <translation>Alleen Octave logo</translation> </message> <message> - <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Letter icons</source> <translation>Letter iconen</translation> </message> <message> - <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> + <location line="+7"/> + <source>Graphic icons</source> <translation>Grafische iconen</translation> </message> <message> + <location line="+39"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+16"/> + <source>Show white space</source> + <translation type="unfinished">Laat witruimtetekens zien</translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation type="unfinished">Verberg witruimtetekens die worden gebruikt voor inspringen</translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation type="unfinished">Kleur</translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation type="unfinished">Inspringafstand</translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation type="unfinished">Inspringen met tab</translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation type="unfinished">Automatisch inspringen</translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation type="unfinished">Tab breedte</translation> + </message> + <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation></translation> + <source>Show indentation guides</source> + <translation type="unfinished">Laat inspringraster zien</translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation type="unfinished">Backspace doet terug inspringen</translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation type="unfinished">Aantal tekens voordat lijst met suggesties wordt weergegeven</translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> + <translation type="unfinished">Zoek op overeenkomende sleutelwoorden</translation> + </message> + <message> + <location line="+13"/> + <source>Case sensitive</source> + <translation type="unfinished">Hoofdlettergevoelig</translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation type="unfinished">Vervang woord door suggestie</translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation type="unfinished">Zoek overeenkomende worden in document</translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation type="unfinished">Herstel bij opstarten de editor tabs uit de vorige sessie</translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> + <translation type="unfinished">Gebruik een andere editor</translation> </message> <message> <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation type="unfinished">Opdrachtregel (%f=bestand, %l=regel):</translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation type="unfinished">Editorstijlen</translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation type="unfinished">Kies font, fontgrootte (als verschil met standaardgrootte), fonttype (vet, schuin, onderstreept), tekstkleur en achtergrondkleur (de kleur roze (255,0,255) dient alleen om de standaard-achtergrondkleur aan te duiden)</translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation type="unfinished">Gebruik voorgrondkleur</translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation type="unfinished">Terminalkleuren</translation> + </message> + <message> + <location line="+45"/> <source>Font</source> <translation>Lettertype</translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation>Lettergrootte</translation> - </message> - <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> + <location line="-744"/> <source>Show line numbers</source> <translation>Regelnummers weergeven</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+27"/> <source>Highlight current line</source> <translation>Markeer huidige regel</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+262"/> <source>Code completion</source> <translation>Automatisch aanvullen</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-282"/> <source>Show complete path in window title</source> <translation>Hele pad in schermtitel weergeven</translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation>Tabbladen van vorige sessie herladen bij opstarten</translation> - </message> - <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation>Gebruik andere bestandeditor:</translation> - </message> - <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+548"/> <source>emacs</source> <translation></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> + <location line="+67"/> <source>Terminal</source> - <translation></translation> + <translation>Opdrachtvenster</translation> + </message> + <message> + <location line="+15"/> + <source>Cursor type:</source> + <translation>Type aanwijzer</translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> - <source>Cursor type:</source> - <translation></translation> + <location line="+23"/> + <source>Cursor blinking</source> + <translation>Knipperende aanwijzer</translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Cursor blinking</source> - <translation>Cursor knipperen</translation> + <location line="+101"/> + <source>Font size</source> + <translation type="unfinished">Lettergrootte</translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+35"/> <source>File Browser</source> <translation>Bestandsbrowser</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation>Bestandsnamen weergeven</translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file size</source> <translation>Bestandsgrootte weergeven</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file type</source> <translation>Bestandstype weergeven</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show date of last modification</source> - <translation>Datum van laatste aanpassing weergeven</translation> + <translation>Datum van laatste wijziging weergeven</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show hidden files</source> <translation>Verborgen bestanden weergeven</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <source>Synchronize octave directory with the file browser</source> + <translation type="unfinished">Synchroniseer octave map met die van bestandsbrowser</translation> + </message> + <message> + <location line="+7"/> <source>Alternating row colors</source> - <translation>Afwisselende regelkleuren</translation> + <translation>Om en om andere regelkleuren</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation type="unfinished">Werkruimte</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation type="unfinished">Kleuren voor klasse</translation> + </message> + <message> + <location line="+35"/> <source>Network</source> <translation>Netwerk</translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> + <location line="+45"/> <source>Use proxy server</source> <translation>Gebruik proxyserver</translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Proxy Type:</source> <translation>Proxy type:</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> + <location line="-33"/> <source>HttpProxy</source> - <translation></translation> + <translation>http proxy</translation> + </message> + <message> + <location line="-1107"/> + <source>Icon set for dock widgets</source> + <translation type="unfinished">Iconenset voor dock widgets</translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation type="unfinished">Taal instellen (vereist herstart)</translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation type="unfinished">Icoongrootte</translation> + </message> + <message> + <location line="+1098"/> <source>Socks5Proxy</source> <translation></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> + <location line="-16"/> <source>Hostname:</source> <translation>Hostnaam:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+54"/> <source>Port:</source> <translation>Poort:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-27"/> <source>Username:</source> <translation>Gebruikersnaam:</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+37"/> <source>Password:</source> <translation>Wachtwoord:</translation> </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation type="unfinished">Systeeminstelling</translation> + </message> + <message> + <location line="-268"/> + <source>IBeam Cursor</source> + <translation type="unfinished">I-balkje</translation> + </message> + <message> + <location line="+1"/> + <source>Block Cursor</source> + <translation type="unfinished">Blokje</translation> + </message> + <message> + <location line="+1"/> + <source>Underline Cursor</source> + <translation type="unfinished">Liggend streepje</translation> + </message> + <message> + <location line="+129"/> + <source>Difference to the default size</source> + <translation type="unfinished">Verschil met standaardgrootte</translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation type="unfinished">Achtergrondkleur; roze (255,0,255) staat voor standaardkleur</translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> - <translation>Commandoscherm</translation> + <translation>Opdrachtvenster</translation> </message> </context> <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> <translation>Typ hier en druk op 'Enter' om te zoeken</translation> </message> @@ -981,25 +2148,19 @@ <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> <translation>Welkom bij GNU Octave</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> - <translation>Het lijkt erop dat je de Octave GUI voor de eerste keer opstart op deze computer, omdat er geen configuratiebestand in '~/.octave-gui' gevonden is. Deze wizard zal je begeleiden tijdens het invullen van de belangrijkste instellingen die je zou moeten doen voordat je Octave GUI kan gebruiken. Als je eerder gemaakte instellingen wilt overzetten, sluit dan dit scherm en kopieer het configuratiebestand naar je home map. De aanwezigheid van het bestand zal automatisch gedetecteerd worden en deze wizard overslaan. BELANGRIJK: Deze wizard is nog niet volledig functioneel. Klik door tot het einde voor standaardinstellingen.</translation> + <translation>Het lijkt erop dat je de Octave GUI voor de eerste keer opstart op deze computer omdat er geen configuratiebestand in '~/.octave-gui' is gevonden. Deze wizard zal je begeleiden tijdens het instellen van de belangrijkste zaken voordat je de Octave GUI kan gebruiken. Wil je eerder gemaakte instellingen overzetten, sluit dan dit dialoogvenster en kopieer het configuratiebestand naar je home map. De aanwezigheid van het bestand zal automatisch gedetecteerd worden en deze wizard doen overslaan. BELANGRIJK: Deze wizard is nog niet volledig functioneel. Klik door tot het einde voor standaardinstellingen.</translation> </message> <message> <location line="+41"/> <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> <translation>Volgende</translation> </message> @@ -1008,34 +2169,26 @@ <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> <translation>Vorige</translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> <translation>Welkom bij Octave!</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> <translation>Dit is de ontwikkelvariant van Octave met de eerste officiële GUI.</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> <translation>Het lijkt erop dat je de Octave GUI voor de eerste keer uitvoert op deze computer. Deze assistent zal je helpen het programma te configureren. Klik 'Voltooien' om een configuratiebestand te maken en de Octave GUI te starten.</translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> <translation>Voltooien</translation> </message> @@ -1043,32 +2196,72 @@ <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> <translation>Naam</translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Class</source> - <translation>Klasse</translation> + <translation>Type</translation> + </message> + <message> + <location line="+1"/> + <source>Dimension</source> + <translation>Dimensies</translation> </message> <message> - <location line="+0"/> - <source>Dimension</source> - <translation>Dimensie</translation> + <location line="+1"/> + <source>Value</source> + <translation>Waarde</translation> </message> <message> - <location line="+0"/> - <source>Value</source> - <translation>Waarde</translation> + <location line="+1"/> + <source>Storage Class</source> + <translation type="unfinished">Klasse</translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation type="unfinished">Klik rechts om te kopiëren, hernoemen of weergeven</translation> </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> <translation>Werkruimte</translation> </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation type="unfinished">Bekijk de variabelen in de huidige werkruimte.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation type="unfinished">Kopiëren</translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation type="unfinished">Hernoemen</translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation type="unfinished">Alleen hoofdsymbolen kunnen worden hernoemd.</translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation type="unfinished">Bekijk variabelen in actieve werkruimte</translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation type="unfinished">Kleuren voor klasse:</translation> + </message> </context> </TS>
--- a/libgui/languages/pt_BR.ts +++ b/libgui/languages/pt_BR.ts @@ -2,553 +2,72 @@ <!DOCTYPE TS> <TS version="2.0" language="pt_BR" sourcelanguage="en"> <context> - <name>documentation_dock_widget</name> + <name>ListDialog</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> - <source>Documentation</source> - <translation type="unfinished">Documentação</translation> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation>Selecionar Tudo</translation> </message> </context> <context> - <name>file_editor</name> - <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> - <source>Octave Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Could not open file %1 for read: -%2.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>File not saved! A file with the selected name -%1 -is already open in the editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+141"/> - <source>&%1 %2</source> - <translation type="unfinished"></translation> - </message> + <name>QObject</name> <message> - <location line="+130"/> - <source>&New File</source> - <translation type="unfinished">&Novo Arquivo</translation> - </message> - <message> - <location line="+3"/> - <source>&Open File</source> - <translation type="unfinished">&Abrir Arquivo</translation> - </message> - <message> - <location line="+3"/> - <source>&Save File</source> - <translation type="unfinished">&Salvar Arquivo</translation> - </message> - <message> - <location line="+4"/> - <source>Save File &As</source> - <translation type="unfinished">Salvar Arquivo &Como</translation> - </message> - <message> - <location line="+3"/> - <source>&Undo</source> - <translation type="unfinished">&Desfazer</translation> - </message> - <message> - <location line="+3"/> - <source>&Redo</source> - <translation type="unfinished">&Refazer</translation> - </message> - <message> - <location line="+3"/> - <source>&Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Cu&t</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Paste</source> - <translation type="unfinished"></translation> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation>automática</translation> </message> <message> <location line="+1"/> - <source>&Next Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Pre&vious Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Toggle &Bookmark</source> - <translation type="unfinished"></translation> + <source>function</source> + <translation>função</translation> </message> <message> <location line="+1"/> - <source>&Remove All Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Next breakpoint</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Pre&vious breakpoint</source> - <translation type="unfinished"></translation> + <source>global</source> + <translation>global</translation> </message> <message> - <location line="+3"/> - <source>Toggle &breakpoint</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Remove All breakpoints</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>hidden</source> + <translation>oculta</translation> </message> <message> <location line="+1"/> - <source>&Uncomment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Find and Replace</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Save File And Run</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+51"/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>&Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>&Debug</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>&Run</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>file_editor_tab</name> - <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> - <source>Octave Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+102"/> - <source>Could not open file %1 for write: -%2.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> - <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>files_dock_widget</name> - <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Subir um diretório.</translation> - </message> - <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Digite o caminho ou o nome do arquivo.</translation> - </message> - <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Clique duas vezes num arquivo para abrí-lo.</translation> - </message> -</context> -<context> - <name>find_dialog</name> - <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> - <source>Find &what:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Re&place with:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Match &case</source> - <translation type="unfinished"></translation> + <source>inherited</source> + <translation>herdada</translation> </message> <message> <location line="+1"/> - <source>Search from &start</source> + <source>persistent</source> + <translation>persistente</translation> + </message> + <message> + <location filename="../qterminal/libqterminal/QTerminal.cc" line="+64"/> + <source>foreground</source> <translation type="unfinished"></translation> </message> <message> <location line="+1"/> - <source>&Wrap while searching</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Find Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Replace</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Replace &All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&More</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>&Whole words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Regular E&xpressions</source> + <source>background</source> <translation type="unfinished"></translation> </message> <message> <location line="+1"/> - <source>Search &backward</source> + <source>selection</source> <translation type="unfinished"></translation> </message> <message> <location line="+1"/> - <source>Search se&lection</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>history_dock_widget</name> - <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> - <source>Doubleclick a command to transfer it to the terminal.</source> - <translation type="unfinished">Clique duas vezes num comando para transferí-lo ao terminal.</translation> - </message> - <message> - <location line="+6"/> - <source>Enter text to filter the command history.</source> - <translation type="unfinished">Digite um texto para filtrar o hitórico de comandos.</translation> - </message> - <message> - <location line="+4"/> - <source>Command History</source> - <translation type="unfinished">Histórico de Comandos</translation> - </message> - <message> - <location line="+42"/> - <source>Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Evaluate</source> + <source>cursor</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>lexer_octave_gui</name> - <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">Padrão</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Comentário</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Comando</translation> - </message> - <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Número</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Palavra-Chave</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">String com aspas simples</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Operador</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Identificador</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">String com aspas duplas</translation> - </message> -</context> -<context> - <name>main_window</name> - <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Salvar ambiente de trabalho</translation> - </message> - <message> - <location line="+11"/> - <source>Load Workspace</source> - <translation type="unfinished">Carregar ambiente de trabalho</translation> - </message> - <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> - <source>About Octave</source> - <translation type="unfinished">Sobre o Octave</translation> - </message> - <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Visualizar variáveis no ambiente de trabalho.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Pesquise no histórico de comandos.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Procure seus arquivos.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>New</source> - <translation type="unfinished"></translation> - </message> + <name>QTerminal</name> <message> - <location line="+3"/> - <source>Script</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Class</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Figure</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Preferences...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Exit</source> - <translation type="unfinished">Sair</translation> - </message> - <message> - <location line="+4"/> - <source>&Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Undo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location filename="../qterminal/libqterminal/QTerminal.h" line="+116"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Copiar</translation> </message> <message> <location line="+4"/> @@ -557,510 +76,1595 @@ </message> <message> <location line="+4"/> - <source>Paste To Workspace...</source> + <source>Clear All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QWinTerminalImpl</name> + <message> + <location filename="../qterminal/libqterminal/win32/QWinTerminalImpl.cpp" line="+1451"/> + <source>copied selection to clipboard</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>documentation_dock_widget</name> + <message> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> + <source>Documentation</source> + <translation>Documentação</translation> + </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation>Veja a documentação para ajuda.</translation> + </message> +</context> +<context> + <name>file_editor</name> + <message> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> + <source>Octave Editor</source> + <translation>Editor Octave</translation> + </message> + <message> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Scripts Octave (*.m);;Todos Arquivos (*)</translation> + </message> + <message> + <location line="+117"/> + <source>Could not open file %1 for read: +%2.</source> + <translation>Não foi possível abrir arquivo %1 para leitura: %2.</translation> + </message> + <message> + <location line="+49"/> + <source>File not saved! A file with the selected name +%1 +is already open in the editor</source> + <translation>Arquivo não salvo! Um arquivo com o nome selecionado %1 se encontra aberto no editor</translation> + </message> + <message> + <location line="+28"/> + <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> + <translation>A aba do editor associada ao arquivo desapareceu. Foi provavelmente fechada de alguma maneira.</translation> + </message> + <message> + <location line="+205"/> + <source>&%1 %2</source> + <translation>&%1 %2</translation> + </message> + <message> + <location line="+159"/> + <source>&New File</source> + <translation>&Novo Arquivo</translation> + </message> + <message> + <location line="+3"/> + <source>&Open File</source> + <translation>&Abrir Arquivo</translation> + </message> + <message> + <location line="+3"/> + <source>&Save File</source> + <translation>&Salvar Arquivo</translation> + </message> + <message> + <location line="+4"/> + <source>Save File &As</source> + <translation>Salvar Arquivo &Como</translation> + </message> + <message> + <location line="+4"/> + <source>Print</source> + <translation>Imprimir</translation> + </message> + <message> + <location line="+3"/> + <source>&Undo</source> + <translation>&Desfazer</translation> + </message> + <message> + <location line="+3"/> + <source>&Redo</source> + <translation>&Refazer</translation> + </message> + <message> + <location line="+3"/> + <source>&Copy</source> + <translation>&Copiar</translation> + </message> + <message> + <location line="+3"/> + <source>Cu&t</source> + <translation>Recor&tar</translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation>Co&lar</translation> + </message> + <message> + <location line="+3"/> + <source>&Next Bookmark</source> + <translation>&Próximo Marcador</translation> + </message> + <message> + <location line="+3"/> + <source>Pre&vious Bookmark</source> + <translation>Marcardor &Anterior</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle &Bookmark</source> + <translation>Visualizar &Marcador</translation> + </message> + <message> + <location line="+3"/> + <source>&Remove All Bookmarks</source> + <translation>&Remover Todos Marcadores</translation> + </message> + <message> + <location line="+4"/> + <source>&Next breakpoint</source> + <translation>Ponto de interrupção &seguinte</translation> + </message> + <message> + <location line="+3"/> + <source>Pre&vious breakpoint</source> + <translation>Ponto de interrupção &anterior</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle &breakpoint</source> + <translation>Visualizar ponto de &interrupção</translation> + </message> + <message> + <location line="+3"/> + <source>&Remove All breakpoints</source> + <translation>&Remover Todos Pontos de interrupção</translation> + </message> + <message> + <location line="+3"/> + <source>&Comment</source> + <translation>&Comentar</translation> + </message> + <message> + <location line="+3"/> + <source>&Uncomment</source> + <translation>&Descomentar</translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation>Arquivos &recentes</translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation>&Fechar</translation> + </message> <message> <location line="+5"/> - <source>Select All</source> - <translation type="unfinished"></translation> + <source>Close All</source> + <translation>Fechar &Todos</translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation>Fechar Outros Arquivos</translation> + </message> + <message> + <location line="-94"/> + <source>&Find and Replace</source> + <translation>Procurar e Substituir</translation> + </message> + <message> + <location line="+3"/> + <source>Save File And Run</source> + <translation>Salvar e Executar</translation> + </message> + <message> + <location line="+2"/> + <source>Go&to Line</source> + <translation>Vá para Linha</translation> + </message> + <message> + <location line="+63"/> + <source>&File</source> + <translation>&Arquivo</translation> + </message> + <message> + <location line="+35"/> + <source>&Edit</source> + <translation>&Editar</translation> + </message> + <message> + <location line="+21"/> + <source>&Debug</source> + <translation>&Depurar</translation> + </message> + <message> + <location line="+9"/> + <source>&Run</source> + <translation>&Executar</translation> + </message> +</context> +<context> + <name>file_editor_tab</name> + <message> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation>Vá para linha</translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation>Número da linha</translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation><sem_nome></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation>Você deseja salvar ou descartar as alterações?</translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation>Você deseja salvar, descartar as alterações ou cancelar fechamento?</translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> + <source>Octave Editor</source> + <translation>Editor Octave</translation> + </message> + <message> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation>O arquivo +%1 +está prestes a ser fechado com modificações. +%2</translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> + <translation>Scripts Octave (*.m);; Todos Arquivos (*)</translation> + </message> + <message> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation>Arquivo não salvo! O nome selecionado +%1 +é o mesmo do arquivo atual</translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation> + +Aviso: Os arquivos no editor foram modificados!</translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation>Parece que o arquivo +%1 +foi removido ou renomeado. Pretende salvá-lo agora?%2</translation> + </message> + <message> + <location line="-192"/> + <source>Could not open file %1 for write: +%2.</source> + <translation>Não foi possível abrir arquivo %1 para escrita: +%2.</translation> + </message> + <message> + <location line="+170"/> + <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> + <translation>Parece que o arquivo '%1' foi modificado por outra aplicação. Deseja recarregá-lo?</translation> + </message> +</context> +<context> + <name>files_dock_widget</name> + <message> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation>Navegador de Arquivos</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation>Procure seus arquivos.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation>Informe o caminho ou nome do arquivo</translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation>Mova um diretório acima</translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation>Mostre o diretório corrente</translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation>Vá para o diretório corrente</translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation>Mude o diretório corrente</translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation>Mude diretório corrente para o diretório atual do navegador</translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation>Ações no diretório corrente</translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation>Mostre diretório corrente</translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation>Procure no diretório</translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation>Procurar arquivos...</translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation>Novo Arquivo</translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation>Novo Diretório</translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation>Clique duas vezes em um arquivo para abrí-lo</translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation>Abrir</translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation>Abrir na Aplicação Padrão</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation>Copiar Seleção para Área de Transferência</translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation>Executar</translation> </message> <message> <location line="+3"/> - <source>Delete</source> - <translation type="unfinished"></translation> + <source>Load Data</source> + <translation>Carregar Dados</translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> + <source>Set Current Directory</source> + <translation>Alterar Diretório Corrente </translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation>Renomear</translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation>Remover</translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation>Renomear arquivo/diretório</translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation>Renomear arquivo/diretório:</translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation> +para:</translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation>Remover arquivo/diretório</translation> + </message> + <message> + <location line="-10"/> + <source>Are you sure you want to delete +</source> + <translation>Você tem certeza que deseja remover</translation> + </message> + <message> + <location line="+11"/> + <source>Can not delete a directory that is not empty</source> + <translation>Não é possível remover um diretório que não está vázio</translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation>Alterar diretório do navegador de arquivos</translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation>Criar Arquivo</translation> + </message> + <message> + <location line="+0"/> + <source>Create file in +</source> + <translation>Criar arquivo em</translation> + </message> + <message> + <location line="+17"/> + <source>Create Directory</source> + <translation>Criar Diretório</translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation>Criar diretório em</translation> + </message> +</context> +<context> + <name>find_dialog</name> + <message> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> + <source>Find &what:</source> + <translation>Procure por:</translation> + </message> + <message> + <location line="+3"/> + <source>Re&place with:</source> + <translation>Substituir com:</translation> + </message> + <message> + <location line="+4"/> + <source>Match &case</source> + <translation>Considerar caixa alta/baixa</translation> + </message> + <message> + <location line="+1"/> + <source>Search from &start</source> + <translation>Procurar do começo</translation> + </message> + <message> + <location line="+1"/> + <source>&Wrap while searching</source> + <translation>Destacar durante busca</translation> + </message> + <message> + <location line="+2"/> + <source>&Find Next</source> + <translation>Procurar Próximo</translation> + </message> + <message> + <location line="+1"/> + <source>Find &Previous</source> + <translation>Procurar Anterior</translation> + </message> + <message> + <location line="+1"/> + <source>&Replace</source> + <translation>Substituir</translation> + </message> + <message> + <location line="+1"/> + <source>Replace &All</source> + <translation>Substituir Todos</translation> + </message> + <message> + <location line="+2"/> + <source>&More</source> + <translation>Mais</translation> + </message> + <message> + <location line="+13"/> + <source>&Whole words</source> + <translation>Todas as palavras</translation> + </message> + <message> + <location line="+1"/> + <source>Regular E&xpressions</source> + <translation>Expressões Regulares</translation> + </message> + <message> + <location line="+1"/> + <source>Search &backward</source> + <translation>Procure para trás</translation> + </message> + <message> + <location line="+1"/> + <source>Search se&lection</source> + <translation>Seleção de busca</translation> + </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation>Procurar do final</translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation>Procurar do começo</translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation>Substituir Resultado</translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation>%1 itens substituidos</translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation>Procurar Resultado</translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation>Nenhum resultado encontrado</translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation>Encontrar Arquivos</translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation>Nomeados:</translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation>Informe a expressão do nome do arquivo</translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation>Iniciar em:</translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation>Entrar no diretório de início</translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation>Procurar...</translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation>Procurar por diretório de início</translation> </message> <message> <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> + <source>Recurse directories</source> + <translation>Recursão nos diretórios</translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation>Procure recursivamente pelos diretórios para encontrar arquivos</translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation>Inclua diretórios</translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation>Inclua diretórios explorados no resultado da busca</translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation>Não insensível a caixa alta/baixa</translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation>Altere se o nome é insensível a caixa do texto</translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation>Contém texto:</translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation>Busca precisa honrar texto</translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation>Texto para honrar</translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation>Texto insensível a caixa alta/baixa</translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation>Altere se conteúdo do texto é insensível a caixa alta/baixa</translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation>Resultados de Busca</translation> + </message> + <message> + <location line="+11"/> + <source>Idle.</source> + <translation>Ocupado.</translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation>Procurar</translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation>Iniciar procura por arquivos encontrados</translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation>Parar</translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation>Parar busca</translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation>Nome do arquivo/localização</translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation>Conteúdo do arquivo</translation> + </message> + <message> + <location line="+99"/> + <source>Searching...</source> + <translation>Buscando...</translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation>Alterar diretório de busca</translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation>Nome do Arquivo</translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation>Diretório</translation> + </message> +</context> +<context> + <name>history_dock_widget</name> + <message> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation>Pesquise no histórico de comandos.</translation> + </message> + <message> + <location line="+23"/> + <source>Doubleclick a command to transfer it to the terminal.</source> + <translation>Clique duas vezes num comando para transferí-lo ao terminal.</translation> + </message> + <message> + <location line="+6"/> + <source>Enter text to filter the command history.</source> + <translation>Digite um texto para filtrar o hitórico de comandos.</translation> + </message> + <message> + <location line="+4"/> + <source>Command History</source> + <translation>Histórico de Comandos</translation> + </message> + <message> + <location line="+20"/> + <source>Copy</source> + <translation>Copiar</translation> + </message> + <message> + <location line="+1"/> + <source>Evaluate</source> + <translation>Avaliar</translation> + </message> + <message> + <location line="+1"/> + <source>Create script</source> + <translation>Criar script</translation> + </message> +</context> +<context> + <name>main_window</name> + <message> + <location filename="../src/main-window.cc" line="+155"/> + <source>Load Workspace</source> + <translation>Carregar ambiente de trabalho</translation> + </message> + <message> + <location line="+355"/> + <location line="+769"/> + <source>About Octave</source> + <translation>Sobre o Octave</translation> + </message> + <message> + <location line="-338"/> + <source>&File</source> + <translation>Arquivo</translation> + </message> + <message> + <location line="+52"/> + <source>New</source> + <translation>Novo</translation> + </message> + <message> + <location line="+4"/> + <source>Script</source> + <translation>Script</translation> + </message> + <message> + <location line="+2"/> + <source>Function</source> + <translation>Função</translation> + </message> + <message> + <location line="+3"/> + <source>Figure</source> + <translation>Figura</translation> + </message> + <message> + <location line="-55"/> + <source>Open...</source> + <translation>Abrir...</translation> + </message> + <message> + <location line="+18"/> + <source>Preferences...</source> + <translation>Preferências...</translation> + </message> + <message> + <location line="+4"/> + <source>Exit</source> + <translation>Sair</translation> + </message> + <message> + <location line="+51"/> + <source>&Edit</source> + <translation>Editar</translation> + </message> + <message> + <location line="+5"/> + <source>Undo</source> + <translation>Desfazer</translation> </message> <message> <location line="+7"/> + <source>Copy</source> + <translation>Copiar</translation> + </message> + <message> + <location line="+5"/> + <source>Paste</source> + <translation>Colar</translation> + </message> + <message> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> + <translation>Salvar Ambiente de Trabalho como</translation> + </message> + <message> + <location line="-602"/> + <source>Set working directory</source> + <translation>Alterar diretório de trabalho</translation> + </message> + <message> + <location line="+686"/> + <source>Find Files...</source> + <translation>Encontrar Arquivos...</translation> + </message> + <message> + <location line="+6"/> <source>Clear Command Window</source> - <translation type="unfinished"></translation> + <translation>Limpar Janela de Comandos</translation> </message> <message> <location line="+3"/> <source>Clear Command History</source> - <translation type="unfinished"></translation> + <translation>Limpar Histórico de Comandos</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> - <translation type="unfinished"></translation> + <translation>Limpar Ambiente de Trabalho</translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> - <translation type="unfinished"></translation> + <translation>Depurar</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> - <translation type="unfinished"></translation> + <translation>Passo</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> - <translation type="unfinished"></translation> + <translation>Passo adentro</translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> - <translation type="unfinished"></translation> + <translation>Passo a fora</translation> + </message> + <message> + <location line="+4"/> + <source>Continue</source> + <translation>Continuar</translation> </message> <message> <location line="+8"/> - <source>Continue</source> - <translation type="unfinished"></translation> + <source>Exit Debug Mode</source> + <translation>Sair de Modo de Depuração</translation> + </message> + <message> + <location line="+48"/> + <source>Show File Browser</source> + <translation>Mostrar Navegador de Arquivos</translation> </message> <message> - <location line="+13"/> - <source>Exit Debug Mode</source> - <translation type="unfinished"></translation> + <location line="+20"/> + <source>File Browser</source> + <translation>Navegador de Arquivos</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> + <translation>Recuperar Disposição de Janelas Padrão</translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> - <translation type="unfinished"></translation> + <location line="+106"/> + <source>On Disk</source> + <translation>No Disco</translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Online</source> + <translation>Online</translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation>Informe nome do diretório</translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> + <translation>Diretório Atual</translation> </message> <message> <location line="+4"/> - <source>&Window</source> - <translation type="unfinished"></translation> + <source>One directory up</source> + <translation>Um diretório acima</translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation>Procurar diretórios</translation> </message> <message> - <location line="+2"/> - <source>Show Command Window</source> - <translation type="unfinished"></translation> + <location line="-392"/> + <source>Load workspace</source> + <translation>Carregar ambiente de trabalho</translation> + </message> + <message> + <location line="+192"/> + <source>&Window</source> + <translation>&Janela</translation> </message> <message> <location line="+6"/> - <source>Show Command History</source> - <translation type="unfinished"></translation> + <source>Show Command Window</source> + <translation>Mostrar Janela de Comandos</translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Show Command History</source> + <translation>Mostrar Histórico de Comandos</translation> </message> <message> <location line="+6"/> <source>Show Workspace</source> - <translation type="unfinished"></translation> + <translation>Mostrar Ambiente de Trabalho</translation> + </message> + <message> + <location line="+3"/> + <source>Show Editor</source> + <translation>Mostrar Editor</translation> + </message> + <message> + <location line="+3"/> + <source>Show Documentation</source> + <translation>Mostrar Documentação</translation> </message> <message> <location line="+5"/> - <source>Show Editor</source> - <translation type="unfinished"></translation> + <source>Command Window</source> + <translation>Janela de Comandos</translation> + </message> + <message> + <location line="+3"/> + <source>Command History</source> + <translation>Histórico de Comandos</translation> + </message> + <message> + <location line="+6"/> + <source>Workspace</source> + <translation>Ambiente de trabalho</translation> </message> <message> - <location line="+5"/> - <source>Show Documentation</source> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+3"/> + <location line="+108"/> + <source>Documentation</source> + <translation>Documentação</translation> + </message> + <message> + <location line="-36"/> + <source>&Help</source> + <translation>&Ajuda</translation> </message> <message> <location line="+7"/> - <source>Command Window</source> - <translation type="unfinished"></translation> + <source>Report Bug</source> + <translation>Reportar Bug</translation> </message> <message> - <location line="+4"/> - <source>Command History</source> - <translation type="unfinished">Histórico de Comandos</translation> + <location line="+6"/> + <source>Visit Agora</source> + <translation>Visite Agora</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished"></translation> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation>Visite Octave Forge</translation> </message> +</context> +<context> + <name>octave_dock_widget</name> <message> - <location line="+4"/> - <source>Workspace</source> - <translation type="unfinished">Ambiente de trabalho</translation> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> + <translation>Desacoplar widget</translation> </message> <message> - <location line="+4"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="+9"/> + <source>Hide widget</source> + <translation>Esconder widget</translation> </message> <message> - <location line="+4"/> - <source>Documentation</source> - <translation type="unfinished">Documentação</translation> + <location line="+82"/> + <source>Dock widget</source> + <translation>Acoplar widget</translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation>ajuda</translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation>O arquivo %1 não existe no path. Para depurar a função, você precisa mudar para o diretório %2 ou adicionar esse diretório ao path.</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Help</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> + <translation>O arquivo %1 é desconsiderado em prol de outro arquivo com mesmo nome no path. Para depurar a função, mude para o diretório %2.</translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Reportar Bug</translation> + <source>Change Directory or Add Directory to Load Path</source> + <translation>Alterar diretório ou adicionar ao path</translation> </message> <message> <location line="+2"/> - <source>Visit Agora</source> - <translation type="unfinished"></translation> + <source>Change Directory</source> + <translation>Alterar Diretório</translation> </message> <message> - <location line="+2"/> - <source>Visit Octave Forge</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation>Adicionar diretório ao path</translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Cancel</source> + <translation>Cancelar</translation> </message> </context> <context> <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> - <translation type="unfinished">Configurações</translation> + <translation>Configurações</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Octave logo only</source> - <translation type="unfinished"></translation> + <translation>Geral</translation> </message> <message> - <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Editor</translation> + <location line="+97"/> + <source>Octave logo only</source> + <translation>Apenas logotipo Octave</translation> </message> <message> <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font</source> - <translation type="unfinished"></translation> + <source>Letter icons</source> + <translation>Ícones de letra</translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation>Ícones de gráficos</translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> + <location line="+39"/> + <source>Editor</source> + <translation>Editor</translation> + </message> + <message> + <location line="+16"/> + <source>Show white space</source> + <translation>Mostrar espaço em branco</translation> </message> <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <source>Show line numbers</source> - <translation type="unfinished"></translation> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation>Não mostre espaços em branco usados para identação</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Highlight current line</source> - <translation type="unfinished"></translation> + <location line="+28"/> + <source>Color</source> + <translation>Cor</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Code completion</source> - <translation type="unfinished"></translation> + <location line="+120"/> + <source>Indent width</source> + <translation>Tamanho de identação</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show complete path in window title</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Tab indents line</source> + <translation>Tab identa linha</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> + <source>Auto indentation</source> + <translation>Autoidentação</translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation>Tamanho de TAB</translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation>Mostrar guias de identação</translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation>Apagar remove identação na linha</translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation>Número de caracteres para ativar lista de sugestões</translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Usar editor de arquivos personalizado:</translation> + <location line="+71"/> + <source>Match keywords</source> + <translation>Honrar palavras-chave</translation> + </message> + <message> + <location line="+13"/> + <source>Case sensitive</source> + <translation>Caixa alta/baixa</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>emacs</source> - <translation type="unfinished">emacs</translation> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation>Substituir palavra por outra sugerida</translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation>Honrar palavras no documento</translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation>Reabrir abas da sessão anterior durante inicialização</translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> + <translation>Usar editor de texto externo</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> - <source>Terminal</source> - <translation type="unfinished">Terminal</translation> + <source>Command line (%f=file, %l=line):</source> + <translation>Linha de comando (%f=file, %l=line):</translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation>Estilos do Editor</translation> + </message> + <message> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation><html><head/><body><p>Selecionar fonte, tamanho de fonte (como diferença para o tamanho padrão), decoração de fonte (negrito, itálico, sublinhado), cor de texto e cor de fundo de tela (para o último, a cor rosa (255,0,255) é sinônimo da cor de fundo padrão)</p></body></html></translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> - <source>Cursor type:</source> - <translation type="unfinished"></translation> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation>Usar Cor do Plano de Frente</translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation>Cores do Terminal</translation> + </message> + <message> + <location line="+45"/> + <source>Font</source> + <translation>Fonte</translation> + </message> + <message> + <location line="-744"/> + <source>Show line numbers</source> + <translation>Mostra número das linhas</translation> </message> <message> <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Cursor blinking</source> - <translation type="unfinished"></translation> + <source>Highlight current line</source> + <translation>Enfatizar linha corrente</translation> + </message> + <message> + <location line="+262"/> + <source>Code completion</source> + <translation>Completação de código</translation> + </message> + <message> + <location line="-282"/> + <source>Show complete path in window title</source> + <translation>Mostrar caminho completo no título da janela</translation> + </message> + <message> + <location line="+548"/> + <source>emacs</source> + <translation>emacs</translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+67"/> + <source>Terminal</source> + <translation>Terminal</translation> + </message> + <message> + <location line="+15"/> + <source>Cursor type:</source> + <translation>Tipo do Cursor:</translation> + </message> + <message> + <location line="+23"/> + <source>Cursor blinking</source> + <translation>Cursor piscando</translation> + </message> + <message> + <location line="+101"/> + <source>Font size</source> + <translation>Tamanho de fonte</translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> - <translation type="unfinished">Navegador de Arquivos</translation> + <translation>Navegador de Arquivos</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Mostrar nomes de arquivo</translation> + <source>Show file size</source> + <translation>Mostrar tamanho do arquivo</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file size</source> - <translation type="unfinished">Mostrar tamanho do arquivo</translation> + <source>Show file type</source> + <translation>Mostrar tipo do arquivo</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show file type</source> - <translation type="unfinished">Mostrar tipo do arquivo</translation> + <source>Show date of last modification</source> + <translation>Mostrar data de última modificação</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show date of last modification</source> - <translation type="unfinished">Mostrar data de última modificação</translation> + <source>Show hidden files</source> + <translation>Mostrar arquivos ocultos</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Show hidden files</source> - <translation type="unfinished">Mostrar arquivos ocultos</translation> + <source>Synchronize octave directory with the file browser</source> + <translation>Sincronizar diretório do Octave com diretório do navegador de arquivos</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Alternating row colors</source> - <translation type="unfinished">Alternar cores das linhas</translation> + <translation>Alternar cores das linhas</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation>Ambiente de trabalho</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation>Armazenar cores de classes</translation> + </message> + <message> + <location line="+35"/> <source>Network</source> - <translation type="unfinished"></translation> + <translation>Rede</translation> + </message> + <message> + <location line="+45"/> + <source>Use proxy server</source> + <translation>Usar servidor proxy</translation> + </message> + <message> + <location line="+10"/> + <source>Proxy Type:</source> + <translation>Tipo de Proxy:</translation> + </message> + <message> + <location line="-33"/> + <source>HttpProxy</source> + <translation>HttpProxy</translation> + </message> + <message> + <location line="-1107"/> + <source>Icon set for dock widgets</source> + <translation>Conjunto de ícones para widgets</translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation>Linguagem (requer reinicialização)</translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> - <source>Use proxy server</source> - <translation type="unfinished"></translation> + <location line="+7"/> + <source>Icon size</source> + <translation>Tamanho de Ícone</translation> + </message> + <message> + <location line="+1098"/> + <source>Socks5Proxy</source> + <translation>Socks5Proxy</translation> + </message> + <message> + <location line="-16"/> + <source>Hostname:</source> + <translation>Hostname:</translation> + </message> + <message> + <location line="+54"/> + <source>Port:</source> + <translation>Porta:</translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Proxy Type:</source> - <translation type="unfinished"></translation> + <location line="-27"/> + <source>Username:</source> + <translation>Nome do usuário:</translation> + </message> + <message> + <location line="+37"/> + <source>Password:</source> + <translation>Senha:</translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> - <source>HttpProxy</source> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation>Configuração do sistema</translation> + </message> + <message> + <location line="-268"/> + <source>IBeam Cursor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Socks5Proxy</source> + <location line="+1"/> + <source>Block Cursor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> - <source>Hostname:</source> + <location line="+1"/> + <source>Underline Cursor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Port:</source> - <translation type="unfinished"></translation> + <location line="+129"/> + <source>Difference to the default size</source> + <translation>Diferença do tamanho padrão</translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation>Cor de fundo, rosa (255,0,255) significa padrão</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Username:</source> - <translation type="unfinished"></translation> + <location line="+2"/> + <source>b</source> + <translation>b</translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Password:</source> - <translation type="unfinished">Senha:</translation> + <location line="+1"/> + <source>i</source> + <translation>i</translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation>u</translation> </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> - <translation type="unfinished"></translation> + <translation>Janela de Comandos</translation> </message> </context> <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> - <translation type="unfinished"></translation> + <translation>Digite aqui e pressione 'Enter' para procurar</translation> </message> <message> <location line="+4"/> <source>Global search</source> - <translation type="unfinished"></translation> + <translation>Busca global</translation> </message> </context> <context> <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> - <translation type="unfinished"></translation> + <translation>Bem-vindo ao GNU Octave</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> - <translation type="unfinished"></translation> + <translation>Aparentemente o Octave GUI foi lançado pela primeira vez neste computador, já que nenhum arquivo de configuração foi encontrado em '~/.octave-gui'. Este tutorial irá guiá-lo para realizar configurações essenciais antes de utilizar o Octave. Se deseja transferir suas configurações definidas previamente, feche este diálogo e copie os arquivos para o local apropriado. IMPORTANT: Este tutorial não é totalmente funcional ainda. Simplesmente prossiga e configurações padrão serão criadas.</translation> </message> <message> <location line="+41"/> <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> - <translation type="unfinished"></translation> + <translation>Próximo</translation> </message> <message> <location line="-124"/> <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> - <translation type="unfinished"></translation> + <translation>Anterior</translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> - <translation type="unfinished"></translation> + <translation>Bem-vindo ao Octave!</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> - <translation type="unfinished"></translation> + <translation>Esta é a versão de desenvolvimento do Octave com a primeira GUI oficial.</translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> - <translation type="unfinished"></translation> + <translation>Você parece ter executado o Octave GUI pela primeira vez neste computador. Este assistente irá ajudá-lo. Clique 'Finalizar' para escrever um arquivo de configuração padrão e lançar o Octave GUI.</translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> - <translation type="unfinished"></translation> + <translation>Finalizar</translation> </message> </context> <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> - <translation type="unfinished">Nome</translation> + <translation>Nome</translation> + </message> + <message> + <location line="+1"/> + <source>Class</source> + <translation>Classe</translation> </message> <message> - <location line="+0"/> - <source>Class</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Dimension</source> + <translation>Dimensão</translation> </message> <message> - <location line="+0"/> - <source>Dimension</source> - <translation type="unfinished"></translation> + <location line="+1"/> + <source>Value</source> + <translation>Valor</translation> </message> <message> - <location line="+0"/> - <source>Value</source> - <translation type="unfinished">Valor</translation> + <location line="+1"/> + <source>Storage Class</source> + <translation>Classe de Armazenamento</translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation>Clique com botão direito para copiar, renomear ou mostrar</translation> </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> - <translation type="unfinished">Ambiente de trabalho</translation> + <translation>Ambiente de trabalho</translation> + </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation>Visualizar variáveis no ambiente de trabalho.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation>Copiar</translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation>Renomear</translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation>Somente símbolos do nível de topo podem ser renomeados.</translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation>Veja as variáveis no ambiente de trabalho ativo.<br></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation>Cores para classe de armazenamento:</translation> </message> </context> </TS>
--- a/libgui/languages/ru_RU.ts +++ b/libgui/languages/ru_RU.ts @@ -2,53 +2,98 @@ <!DOCTYPE TS> <TS version="2.0" language="ru_RU"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> <translation type="unfinished">Документация</translation> </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> <translation type="unfinished"></translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> <translation type="unfinished">Созд&ать</translation> </message> @@ -68,6 +113,11 @@ <translation type="unfinished">Сохранить &как</translation> </message> <message> + <location line="+4"/> + <source>Print</source> + <translation type="unfinished"></translation> + </message> + <message> <location line="+3"/> <source>&Undo</source> <translation type="unfinished">О&тменить</translation> @@ -93,22 +143,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> <translation type="unfinished">С&ледующая закладка</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> <translation type="unfinished">Пр&едыдущая закладка</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> <translation type="unfinished">&Установить/снять закладку</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> <translation type="unfinished"></translation> </message> @@ -133,17 +183,37 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> + <location line="+3"/> + <source>&Comment</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> <translation type="unfinished"></translation> </message> @@ -153,22 +223,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+51"/> + <location line="+2"/> + <source>Go&to Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+63"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> <translation type="unfinished">&Правка</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> <translation type="unfinished"></translation> </message> @@ -181,72 +251,271 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> <translation type="unfinished"></translation> </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished">Текущий каталог</translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation type="unfinished">Файловый менеджер</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation type="unfinished">Просмотр файлов.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <source>Are you sre you want to delete +</source> + <translation type="unfinished"></translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Перейти на уровень выше.</translation> + <source>Can not delete a directory that is not empty</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Введите путь или имя файла.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Двойной щелчок по файлу откроет его.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> <translation type="unfinished"></translation> </message> @@ -276,7 +545,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> <translation type="unfinished"></translation> </message> @@ -291,7 +565,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> <translation type="unfinished"></translation> </message> @@ -310,11 +584,202 @@ <source>Search se&lection</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Idle.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+100"/> + <source>Searching...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation type="unfinished">Просмотр и поиск в журнале выполненных команд.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> <translation type="unfinished">Двойной щелчок по команде перенесёт её в командную строку.</translation> </message> @@ -329,7 +794,7 @@ <translation type="unfinished">Журнал выполненных команд</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> <translation type="unfinished"></translation> </message> @@ -338,250 +803,103 @@ <source>Evaluate</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>lexer_octave_gui</name> <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">По умолчанию</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Комментарий</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Команда</translation> - </message> - <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Число</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Зарезервированное слово</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">Строка в одинарных кавычках</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Оператор</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Идентификатор</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">Строка в двойных кавычках</translation> + <location line="+1"/> + <source>Create script</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Сохранить область переменных</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> <translation type="unfinished">Загрузить область переменных</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> <translation type="unfinished">Об Octave</translation> </message> <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Просмотр содержимого текущей области переменных.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Просмотр и поиск в журнале выполненных команд.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Просмотр файлов.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> + <location line="-338"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+2"/> + <location line="+52"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+2"/> - <source>Class</source> + <source>Function</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> + <location line="+3"/> <source>Figure</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="-55"/> <source>Open...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> + <location line="+18"/> <source>Preferences...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+4"/> <source>Exit</source> <translation type="unfinished">Выход</translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> <translation type="unfinished">&Правка</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="+7"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Select All</source> + <location line="-602"/> + <source>Set working directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delete</source> + <location line="+686"/> + <source>Find Files...</source> <translation type="unfinished"></translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> <translation type="unfinished"></translation> </message> @@ -591,143 +909,228 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+4"/> <source>Continue</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+8"/> <source>Exit Debug Mode</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> + <location line="+48"/> + <source>Show File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation type="unfinished">Файловый менеджер</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> + <location line="+106"/> + <source>On Disk</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> <translation type="unfinished"></translation> </message> <message> <location line="+4"/> + <source>One directory up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-392"/> + <source>Load workspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+192"/> <source>&Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Show Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> + <location line="+3"/> <source>Show Command History</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+6"/> <source>Show Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> + <location line="+5"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Command History</source> <translation type="unfinished">Журнал выполненных команд</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished">Текущий каталог</translation> - </message> - <message> - <location line="+4"/> + <location line="+6"/> <source>Workspace</source> <translation type="unfinished">Область переменных</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Editor</source> <translation type="unfinished">Редактор</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> + <location line="+108"/> <source>Documentation</source> <translation type="unfinished">Документация</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> + <location line="-36"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Report Bug</source> + <translation type="unfinished">Сообщить об ошибке</translation> + </message> + <message> + <location line="+6"/> + <source>Visit Agora</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_dock_widget</name> + <message> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>&Help</source> + <location line="+9"/> + <source>Hide widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+29"/> + <source>Unock widget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Сообщить об ошибке</translation> - </message> - <message> - <location line="+2"/> - <source>Visit Agora</source> + <source>Change Directory or Add Directory to Load Path</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Visit Octave Forge</source> + <source>Change Directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Cancel</source> <translation type="unfinished"></translation> </message> </context> @@ -735,223 +1138,331 @@ <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> <translation type="unfinished">Параметры</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+97"/> <source>Octave logo only</source> <translation type="unfinished"></translation> </message> <message> + <location line="+10"/> + <source>Letter icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Editor</source> + <translation type="unfinished">Редактор</translation> + </message> + <message> <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> + <source>Show white space</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> + <source>Case sensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Редактор</translation> + <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+46"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> + <location line="-745"/> <source>Show line numbers</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+27"/> <source>Highlight current line</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+262"/> <source>Code completion</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-282"/> <source>Show complete path in window title</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Выбрать редактор:</translation> - </message> - <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+548"/> <source>emacs</source> <translation type="unfinished">emacs</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> + <location line="+67"/> <source>Terminal</source> <translation type="unfinished">Командная строка</translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> + <location line="+15"/> <source>Cursor type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+23"/> <source>Cursor blinking</source> <translation type="unfinished"></translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+102"/> + <source>Font size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> <translation type="unfinished">Файловый менеджер</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Показывать имена файлов</translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file size</source> <translation type="unfinished">Показывать размер файлов</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file type</source> <translation type="unfinished">Показывать типы файлов</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show date of last modification</source> <translation type="unfinished">Показывать дату последнего изменения</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show hidden files</source> <translation type="unfinished">Показывать скрытые файлы</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <source>Synchronize octave directory with the file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> <source>Alternating row colors</source> <translation type="unfinished">Чередующиеся цвета строк</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation type="unfinished">Область переменных</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Network</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> + <location line="+45"/> <source>Use proxy server</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Proxy Type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> + <location line="-33"/> <source>HttpProxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-1108"/> + <source>Icon set for dock widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1099"/> <source>Socks5Proxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> + <location line="-16"/> <source>Hostname:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+54"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-27"/> <source>Username:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+37"/> <source>Password:</source> <translation type="unfinished">Пароль:</translation> </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-137"/> + <source>Difference to the defalt size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> @@ -959,7 +1470,7 @@ <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> <translation type="unfinished"></translation> </message> @@ -973,13 +1484,11 @@ <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> <translation type="unfinished"></translation> </message> @@ -988,10 +1497,6 @@ <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> <translation type="unfinished"></translation> </message> @@ -1000,34 +1505,26 @@ <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> <translation type="unfinished"></translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> <translation type="unfinished"></translation> </message> @@ -1035,32 +1532,72 @@ <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> <translation type="unfinished">Идентификатор</translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Dimension</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Value</source> <translation type="unfinished">Значение</translation> </message> + <message> + <location line="+1"/> + <source>Storage Class</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> <translation type="unfinished">Область переменных</translation> </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation type="unfinished">Просмотр содержимого текущей области переменных.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation type="unfinished"></translation> + </message> </context> </TS>
--- a/libgui/languages/translators +++ b/libgui/languages/translators @@ -6,7 +6,8 @@ de_DE Jacob Dawid <jacob.dawid@googlemail.com> en_US Jacob Dawid <jacob.dawid@googlemail.com> es_ES Valentin Ortega-Clavero <arcanos3030@gmail.com> -pt_BE Júlio Hoffimann Mendes <julio.hoffimann@gmail.com> +fr_FR David Bateman <dbateman@free.fr>, Catalin Codreanu <codreanu.catalin@gmail.com> +pt_BR Júlio Hoffimann Mendes <julio.hoffimann@gmail.com> ru_RU Andriy Shinkarchuck <adriano32.gnu@gmail.com> uk_UA Andriy Shinkarchuck <adriano32.gnu@gmail.com> nl_NL Sander van Rijn <svr003@gmail.com>
--- a/libgui/languages/uk_UA.ts +++ b/libgui/languages/uk_UA.ts @@ -2,53 +2,98 @@ <!DOCTYPE TS> <TS version="2.0" language="uk_UA"> <context> + <name>ListDialog</name> + <message> + <location filename="../src/dialog.cc" line="+250"/> + <source>Select All</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../src/workspace-model.cc" line="+75"/> + <source>automatic</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>global</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>hidden</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>inherited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>persistent</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>documentation_dock_widget</name> <message> - <location filename="../src/documentation-dockwidget.cc" line="+34"/> + <location filename="../src/documentation-dock-widget.cc" line="+34"/> <source>Documentation</source> <translation type="unfinished">Документація</translation> </message> + <message> + <location line="+1"/> + <source>See the documentation for help.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>file_editor</name> <message> - <location filename="../src/m-editor/file-editor.cc" line="+146"/> - <location line="+38"/> - <location line="+43"/> - <location line="+26"/> + <location filename="../src/m-editor/file-editor.cc" line="+294"/> + <location line="+49"/> + <location line="+28"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-106"/> - <source>File %1 is already open in the editor.</source> + <location line="-193"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+38"/> + <location line="+117"/> <source>Could not open file %1 for read: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>File not saved! A file with the selected name %1 is already open in the editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>The associated file editor tab has disappeared. It was likely closed by some means.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+141"/> + <location line="+205"/> <source>&%1 %2</source> <translation type="unfinished"></translation> </message> <message> - <location line="+130"/> + <location line="+159"/> <source>&New File</source> <translation type="unfinished">&Створити</translation> </message> @@ -68,6 +113,11 @@ <translation type="unfinished">Зберегти &як</translation> </message> <message> + <location line="+4"/> + <source>Print</source> + <translation type="unfinished"></translation> + </message> + <message> <location line="+3"/> <source>&Undo</source> <translation type="unfinished">В&ернути</translation> @@ -93,22 +143,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Next Bookmark</source> <translation type="unfinished">До &наступної закладки</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Pre&vious Bookmark</source> <translation type="unfinished">До &попередньої закладки</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Toggle &Bookmark</source> <translation type="unfinished">В&становити/видалити закладку</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>&Remove All Bookmarks</source> <translation type="unfinished"></translation> </message> @@ -133,17 +183,37 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>&Comment Selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Uncomment Selected Text</source> + <location line="+3"/> + <source>&Comment</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>&Uncomment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> + <source>&Recent Editor Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>&Close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Close All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Close Other Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-94"/> <source>&Find and Replace</source> <translation type="unfinished"></translation> </message> @@ -153,22 +223,22 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+51"/> + <location line="+2"/> + <source>Go&to Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+63"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+6"/> - <source>Open &Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> + <location line="+35"/> <source>&Edit</source> <translation type="unfinished">&Правка</translation> </message> <message> - <location line="+19"/> + <location line="+21"/> <source>&Debug</source> <translation type="unfinished"></translation> </message> @@ -181,72 +251,271 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+687"/> - <location line="+102"/> - <location line="+98"/> - <location line="+63"/> - <location line="+14"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+726"/> + <source>Goto line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Line number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+70"/> + <source><unnamed></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Do you want to save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Do you want to cancel closing, save or discard the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <location line="+114"/> + <location line="+104"/> + <location line="+66"/> + <location line="+22"/> <source>Octave Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="-276"/> - <source>The file '%1' has been modified. Do you want to save the changes?</source> + <location line="-305"/> + <source>The file +%1 +is about to be closed but has been modified. +%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+184"/> + <source>Octave Files (*.m);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+102"/> + <location line="+34"/> + <source>File not saved! The selected file name +%1 +is the same as the current file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+81"/> + <source> + +Warning: The contents in the editor is modified!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>It seems that the file +%1 +has been deleted or renamed. Do you want to save it now?%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-192"/> <source>Could not open file %1 for write: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>File not saved! You've selected a file name - - %1 - -which is the same as the current file name. Use Save to overwrite. (Could allow overwriting, with message, if that is what folks want.)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> + <location line="+170"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> <translation type="unfinished"></translation> </message> - <message> - <location line="+14"/> - <source>It seems that '%1' has been deleted or renamed. Do you want to save it now?</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>files_dock_widget</name> <message> - <location filename="../src/files-dockwidget.cc" line="+43"/> - <source>Current Directory</source> - <translation type="unfinished">Поточний каталог</translation> + <location filename="../src/files-dock-widget.cc" line="+67"/> + <source>File Browser</source> + <translation type="unfinished">Файловий менеджер</translation> + </message> + <message> + <location line="+1"/> + <source>Browse your files.</source> + <translation type="unfinished">Переглянути файли.</translation> + </message> + <message> + <location line="+18"/> + <source>Enter the path or filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Move up one directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Goto current octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Set octave directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Set octave directroy to current browser directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Actions on current directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Show Home directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <location line="+244"/> + <source>Find Files ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-240"/> + <location line="+252"/> + <source>New File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-249"/> + <location line="+252"/> + <source>New Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-223"/> + <source>Doubleclick a file to open it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+185"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Open in Default Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Copy Selection to Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Load Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Set Current Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Rename file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Rename file/directory: +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source> + to: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>Delete file/directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <source>Are you sre you want to delete +</source> + <translation type="unfinished"></translation> </message> <message> <location line="+11"/> - <source>Move up one directory.</source> - <translation type="unfinished">Перейти вгору деревом каталогів.</translation> + <source>Can not delete a directory that is not empty</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+128"/> + <source>Set directory of file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Create File</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Enter the path or filename.</source> - <translation type="unfinished">Введіть повний шлях до файлу або назву файлу.</translation> + <location line="+0"/> + <source>Create file in +</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> - <source>Doubleclick a file to open it.</source> - <translation type="unfinished">Подвійне клацання відкриє файл.</translation> + <location line="+17"/> + <source>Create Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Create folder in +</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>find_dialog</name> <message> - <location filename="../src/m-editor/find-dialog.cc" line="+58"/> + <location filename="../src/m-editor/find-dialog.cc" line="+77"/> <source>Find &what:</source> <translation type="unfinished"></translation> </message> @@ -276,7 +545,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+1"/> + <source>Find &Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>&Replace</source> <translation type="unfinished"></translation> </message> @@ -291,7 +565,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+13"/> <source>&Whole words</source> <translation type="unfinished"></translation> </message> @@ -310,11 +584,202 @@ <source>Search se&lection</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+61"/> + <source>Search from end</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search from start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+117"/> + <source>Replace Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>%1 items replaced</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Find Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>No more matches found</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_dialog</name> + <message> + <location filename="../src/find-files-dialog.cc" line="+47"/> + <source>Find Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Named:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Enter the filename expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Start in:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter the start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Browse for start directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Recurse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Search recursively through directories for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Include matching directories in search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Name case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set matching name is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Contains text:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Search must match text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Text to match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Text case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Set text content is case insensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Idle.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Find</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Start search for matching files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Stop searching</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>File name/location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>File contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+100"/> + <source>Searching...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Set search directory</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>find_files_model</name> + <message> + <location filename="../src/find-files-model.cc" line="+29"/> + <source>Filename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Directory</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>history_dock_widget</name> <message> - <location filename="../src/history-dockwidget.cc" line="+55"/> + <location filename="../src/history-dock-widget.cc" line="+42"/> + <source>Browse and search the command history.</source> + <translation type="unfinished">Перегляд і пошук серед історії виконаних команд.</translation> + </message> + <message> + <location line="+23"/> <source>Doubleclick a command to transfer it to the terminal.</source> <translation type="unfinished">Подвійне клацання перенесе команду до командного рядку.</translation> </message> @@ -329,7 +794,7 @@ <translation type="unfinished">Історія виконаних команд</translation> </message> <message> - <location line="+42"/> + <location line="+20"/> <source>Copy</source> <translation type="unfinished"></translation> </message> @@ -338,250 +803,103 @@ <source>Evaluate</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>lexer_octave_gui</name> <message> - <location filename="../src/m-editor/lexer-octave-gui.cc" line="+145"/> - <source>Default</source> - <translation type="unfinished">Стандартні налаштування</translation> - </message> - <message> - <location line="+2"/> - <source>Comment</source> - <translation type="unfinished">Коментар</translation> - </message> - <message> - <location line="+2"/> - <source>Command</source> - <translation type="unfinished">Команда</translation> - </message> - <message> - <location line="+2"/> - <source>Number</source> - <translation type="unfinished">Число</translation> - </message> - <message> - <location line="+2"/> - <source>Keyword</source> - <translation type="unfinished">Зарезервоване слово</translation> - </message> - <message> - <location line="+2"/> - <source>Single-quoted string</source> - <translation type="unfinished">Рядок в одинарних лапках</translation> - </message> - <message> - <location line="+2"/> - <source>Operator</source> - <translation type="unfinished">Оператор</translation> - </message> - <message> - <location line="+2"/> - <source>Identifier</source> - <translation type="unfinished">Ідентифікатор</translation> - </message> - <message> - <location line="+2"/> - <source>Double-quoted string</source> - <translation type="unfinished">Рядок у подвійних лапках</translation> + <location line="+1"/> + <source>Create script</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>main_window</name> <message> - <location filename="../src/main-window.cc" line="+135"/> - <source>Save Workspace</source> - <translation type="unfinished">Зберегти область змінних</translation> - </message> - <message> - <location line="+11"/> + <location filename="../src/main-window.cc" line="+155"/> <source>Load Workspace</source> <translation type="unfinished">Завантажити область змінних</translation> </message> <message> - <location line="+155"/> - <source>Set working direcotry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <location line="+381"/> + <location line="+355"/> + <location line="+769"/> <source>About Octave</source> <translation type="unfinished">Про Octave</translation> </message> <message> - <location line="-290"/> - <source>View the variables in the active workspace.</source> - <translation type="unfinished">Перегляд змісту поточної області змінних.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse and search the command history.</source> - <translation type="unfinished">Перегляд і пошук серед історії виконаних команд.</translation> - </message> - <message> - <location line="+2"/> - <source>Browse your files.</source> - <translation type="unfinished">Переглянути файли.</translation> - </message> - <message> - <location line="+2"/> - <source>See the documentation for help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> + <location line="-338"/> <source>&File</source> <translation type="unfinished">&Файл</translation> </message> <message> - <location line="+2"/> + <location line="+52"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Script</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Function</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+2"/> - <source>Class</source> + <source>Function</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Enumeration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> + <location line="+3"/> <source>Figure</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>Variable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Model</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>GUI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="-55"/> <source>Open...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Close Command Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Import Data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Save Workspace...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> + <location line="+18"/> <source>Preferences...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Page Setup...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Print</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Print Selection...</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+4"/> <source>Exit</source> <translation type="unfinished">Вийти</translation> </message> <message> - <location line="+4"/> + <location line="+51"/> <source>&Edit</source> <translation type="unfinished">&Правка</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> + <location line="+7"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>Paste To Workspace...</source> + <location line="-895"/> + <location line="+817"/> + <source>Save Workspace As</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Select All</source> + <location line="-602"/> + <source>Set working directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delete</source> + <location line="+686"/> + <source>Find Files...</source> <translation type="unfinished"></translation> </message> <message> <location line="+6"/> - <source>Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Find Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> <source>Clear Command Window</source> <translation type="unfinished"></translation> </message> @@ -591,143 +909,228 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Clear Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+36"/> <source>De&bug</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Step</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step in</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+3"/> <source>Step out</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+4"/> <source>Continue</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+8"/> <source>Exit Debug Mode</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <source>&Desktop</source> + <location line="+48"/> + <source>Show File Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>File Browser</source> + <translation type="unfinished">Файловий менеджер</translation> + </message> + <message> + <location line="+14"/> + <source>Reset Default Window Layout</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Load workspace</source> + <location line="+106"/> + <source>On Disk</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Enter directory name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Current Directory: </source> <translation type="unfinished"></translation> </message> <message> <location line="+4"/> + <source>One directory up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Browse directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-392"/> + <source>Load workspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+192"/> <source>&Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Show Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> + <location line="+3"/> <source>Show Command History</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <source>Show Current Directory</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+6"/> <source>Show Workspace</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> + <location line="+5"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Command History</source> <translation type="unfinished">Історія виконаних команд</translation> </message> <message> - <location line="+4"/> - <source>Current Directory</source> - <translation type="unfinished">Поточний каталог</translation> - </message> - <message> - <location line="+4"/> + <location line="+6"/> <source>Workspace</source> <translation type="unfinished">Область змінних</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Editor</source> <translation type="unfinished">Редактор</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> + <location line="+108"/> <source>Documentation</source> <translation type="unfinished">Документація</translation> </message> <message> - <location line="+5"/> - <source>Reset Windows</source> + <location line="-36"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Report Bug</source> + <translation type="unfinished">Повідомити про помилку</translation> + </message> + <message> + <location line="+6"/> + <source>Visit Agora</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-3"/> + <source>Visit Octave Forge</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_dock_widget</name> + <message> + <location filename="../src/octave-dock-widget.cc" line="+52"/> + <source>Undock widget</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>&Help</source> + <location line="+9"/> + <source>Hide widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+82"/> + <source>Dock widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+29"/> + <source>Unock widget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qscintilla</name> + <message> + <location filename="../src/m-editor/octave-qscintilla.cc" line="+85"/> + <source>help</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>octave_qt_link</name> + <message> + <location filename="../src/octave-qt-link.cc" line="+270"/> + <source>The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Report Bug</source> - <translation type="unfinished">Повідомити про помилку</translation> - </message> - <message> - <location line="+2"/> - <source>Visit Agora</source> + <source>Change Directory or Add Directory to Load Path</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Visit Octave Forge</source> + <source>Change Directory</source> <translation type="unfinished"></translation> </message> <message> - <location line="+20"/> - <source>Current Directory:</source> + <location line="+1"/> + <source>Add Directory to Load Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Cancel</source> <translation type="unfinished"></translation> </message> </context> @@ -735,223 +1138,331 @@ <name>settings_dialog</name> <message> <location filename="../src/settings-dialog.ui" line="+29"/> - <location filename="../src/ui-settings-dialog.h" line="+461"/> <source>Settings</source> <translation type="unfinished">Налаштування</translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+5"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> - <location filename="../src/ui-settings-dialog.h" line="-4"/> - <source>Icon set for dock widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+97"/> <source>Octave logo only</source> <translation type="unfinished"></translation> </message> <message> + <location line="+10"/> + <source>Letter icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Graphic icons</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Editor</source> + <translation type="unfinished">Редактор</translation> + </message> + <message> <location line="+16"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Letter icons</source> + <source>Show white space</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Do not show white spaces used for indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+120"/> + <source>Indent width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Tab indents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Auto indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Tab width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Show indentation guides</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Backspace unindents line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+84"/> + <source>Characters before list with suggestions is displayed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> + <source>Match keywords</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Graphic icons</source> + <source>Case sensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Replace word by suggested one</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>Match words in document</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+61"/> + <source>Restore editor tabs from previous session on startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Use custom file editor</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+11"/> - <source>Editor</source> - <translation type="unfinished">Редактор</translation> + <location line="+10"/> + <source>Command line (%f=file, %l=line):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Editor Styles</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> + <location line="+24"/> + <source><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+76"/> + <source>Use Foreground Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Terminal Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+46"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> - <location line="+147"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> - <location line="+10"/> - <source>Font Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-109"/> - <location filename="../src/ui-settings-dialog.h" line="-9"/> + <location line="-745"/> <source>Show line numbers</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+27"/> <source>Highlight current line</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+262"/> <source>Code completion</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-282"/> <source>Show complete path in window title</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Restore tabs from previous session on startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> - <source>Use custom file editor:</source> - <translation type="unfinished">Використовувати інший редактор:</translation> - </message> - <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+548"/> <source>emacs</source> <translation type="unfinished">emacs</translation> </message> <message> - <location line="+10"/> - <location filename="../src/ui-settings-dialog.h" line="+6"/> + <location line="+67"/> <source>Terminal</source> <translation type="unfinished">Командний рядок</translation> </message> <message> - <location line="+62"/> - <location filename="../src/ui-settings-dialog.h" line="-2"/> + <location line="+15"/> <source>Cursor type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+23"/> <source>Cursor blinking</source> <translation type="unfinished"></translation> </message> <message> - <location line="+36"/> - <location filename="../src/ui-settings-dialog.h" line="+8"/> + <location line="+102"/> + <source>Font size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>File Browser</source> <translation type="unfinished">Файловий менеджер</translation> </message> <message> <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-6"/> - <source>Show filenames</source> - <translation type="unfinished">Показувати назви файлів</translation> - </message> - <message> - <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file size</source> <translation type="unfinished">Показувати розмір файлів</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show file type</source> <translation type="unfinished">Показувати типи файлів</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show date of last modification</source> <translation type="unfinished">Показувати дату останньої зміни</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> <source>Show hidden files</source> <translation type="unfinished">Показувати приховані файли</translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <source>Synchronize octave directory with the file browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> <source>Alternating row colors</source> <translation type="unfinished">Чергувати колір рядків</translation> </message> <message> <location line="+21"/> - <location filename="../src/ui-settings-dialog.h" line="+13"/> + <source>Workspace</source> + <translation type="unfinished">Область змінних</translation> + </message> + <message> + <location line="+30"/> + <source>Storage Class Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Network</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> - <location filename="../src/ui-settings-dialog.h" line="-11"/> + <location line="+45"/> <source>Use proxy server</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+10"/> <source>Proxy Type:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+3"/> + <location line="-33"/> <source>HttpProxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-1108"/> + <source>Icon set for dock widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Language (requires restart)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Icon size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1099"/> <source>Socks5Proxy</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <location filename="../src/ui-settings-dialog.h" line="+2"/> + <location line="-16"/> <source>Hostname:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+54"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="-27"/> <source>Username:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> - <location filename="../src/ui-settings-dialog.h" line="+1"/> + <location line="+37"/> <source>Password:</source> <translation type="unfinished">Пароль:</translation> </message> + <message> + <location filename="../src/settings-dialog.cc" line="+69"/> + <location line="+4"/> + <location line="+334"/> + <source>System setting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-137"/> + <source>Difference to the defalt size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Background color, pink (255,0,255) means default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>b</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>i</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>u</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>terminal_dock_widget</name> <message> - <location filename="../src/terminal-dockwidget.cc" line="+34"/> + <location filename="../src/terminal-dock-widget.cc" line="+38"/> <source>Command Window</source> <translation type="unfinished"></translation> </message> @@ -959,7 +1470,7 @@ <context> <name>webinfo</name> <message> - <location filename="../src/qtinfo/webinfo.cc" line="+74"/> + <location filename="../src/qtinfo/webinfo.cc" line="+78"/> <source>Type here and press 'Return' to search</source> <translation type="unfinished"></translation> </message> @@ -973,13 +1484,11 @@ <name>welcome_wizard</name> <message> <location filename="../src/welcome-wizard.ui" line="+26"/> - <location filename="../src/ui-welcome-wizard.h" line="+286"/> <source>Welcome to GNU Octave</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</source> <translation type="unfinished"></translation> </message> @@ -988,10 +1497,6 @@ <location line="+50"/> <location line="+52"/> <location line="+52"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> - <location line="+2"/> - <location line="+2"/> - <location line="+2"/> <source>Next</source> <translation type="unfinished"></translation> </message> @@ -1000,34 +1505,26 @@ <location line="+52"/> <location line="+52"/> <location line="+87"/> - <location filename="../src/ui-welcome-wizard.h" line="-5"/> - <location line="+2"/> - <location line="+2"/> - <location line="+5"/> <source>Previous</source> <translation type="unfinished"></translation> </message> <message> <location line="-45"/> - <location filename="../src/ui-welcome-wizard.h" line="-3"/> <source>Welcome to Octave!</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>This is the development version of Octave with the first official GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location filename="../src/ui-welcome-wizard.h" line="+1"/> <source>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</source> <translation type="unfinished"></translation> </message> <message> <location line="+48"/> - <location filename="../src/ui-welcome-wizard.h" line="+2"/> <source>Finish</source> <translation type="unfinished"></translation> </message> @@ -1035,32 +1532,72 @@ <context> <name>workspace_model</name> <message> - <location filename="../src/workspace-model.cc" line="+42"/> + <location filename="../src/workspace-model.cc" line="-42"/> <source>Name</source> <translation type="unfinished">Ідентифікатор</translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Dimension</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Value</source> <translation type="unfinished">Значення</translation> </message> + <message> + <location line="+1"/> + <source>Storage Class</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Right click to copy, rename, or display</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>workspace_view</name> <message> - <location filename="../src/workspace-view.cc" line="+39"/> + <location filename="../src/workspace-view.cc" line="+47"/> <source>Workspace</source> <translation type="unfinished">Область змінних</translation> </message> + <message> + <location line="+1"/> + <source>View the variables in the active workspace.</source> + <translation type="unfinished">Перегляд змісту поточної області змінних.</translation> + </message> + <message> + <location line="+75"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Only top-level symbols may be renamed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+125"/> + <source>View the variables in the active workspace.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Colors for the storage class:</source> + <translation type="unfinished"></translation> + </message> </context> </TS>
--- a/libgui/qterminal/libqterminal/QTerminal.h +++ b/libgui/qterminal/libqterminal/QTerminal.h @@ -30,6 +30,8 @@ #include <QColor> #include <QList> #include <QMenu> +#include <QClipboard> +#include <QApplication> class QTerminal : public QWidget { @@ -45,11 +47,13 @@ virtual ~QTerminal (void) { } - virtual void setTerminalFont(const QFont& font) = 0; + virtual void setTerminalFont (const QFont& font) = 0; + + virtual void setSize (int h, int v) = 0; - virtual void setSize(int h, int v) = 0; + virtual void sendText (const QString& text) = 0; - virtual void sendText(const QString& text) = 0; + virtual QString selectedText () = 0; enum CursorType { @@ -88,6 +92,11 @@ virtual void handleCustomContextMenuRequested (const QPoint& at) { + QClipboard * cb = QApplication::clipboard (); + + _paste_action->setEnabled (cb->text().length() > 0); + _copy_action->setEnabled (selectedText().length() > 0); + _contextMenu->move (mapToGlobal (at)); _contextMenu->show (); } @@ -102,13 +111,18 @@ _contextMenu = new QMenu (this); - QAction *copyAction - = _contextMenu->addAction (tr ("Copy"), - this, SLOT (copyClipboard ())); + _copy_action = _contextMenu->addAction ( + QIcon (":/actions/icons/editcopy.png"), + tr ("Copy"), this, SLOT (copyClipboard ())); - QAction *pasteAction - = _contextMenu->addAction (tr ("Paste"), - this, SLOT (pasteClipboard ())); + _paste_action = _contextMenu->addAction ( + QIcon (":/actions/icons/editpaste.png"), + tr ("Paste"), this, SLOT (pasteClipboard ())); + + _contextMenu->addSeparator (); + + _contextMenu->addAction (tr ("Clear All"), parent (), + SLOT (handle_clear_command_window_request ())); connect (this, SIGNAL (customContextMenuRequested (QPoint)), this, SLOT (handleCustomContextMenuRequested (QPoint))); @@ -129,6 +143,8 @@ private: QMenu *_contextMenu; + QAction * _copy_action; + QAction * _paste_action; }; #endif // QTERMINAL_H
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp @@ -137,8 +137,37 @@ // FIXME -- not sure how to make these work properly given the way the // Unix terminal handles colors. -void QUnixTerminalImpl::setBackgroundColor (const QColor& color) { } -void QUnixTerminalImpl::setForegroundColor (const QColor& color) { } +void QUnixTerminalImpl::setBackgroundColor (const QColor& color) + { + ColorEntry cols[TABLE_COLORS]; + + const ColorEntry * curr_cols = m_terminalView->colorTable(); + for(int i=0;i<TABLE_COLORS;i++) + { + cols[i] = curr_cols[i]; + } + + cols[DEFAULT_BACK_COLOR].color = color; + + m_terminalView->setColorTable(cols); + + } +void QUnixTerminalImpl::setForegroundColor (const QColor& color) +{ + ColorEntry cols[TABLE_COLORS]; + + const ColorEntry * curr_cols = m_terminalView->colorTable(); + for(int i=0;i<TABLE_COLORS;i++) + { + cols[i] = curr_cols[i]; + } + + cols[DEFAULT_FORE_COLOR].color = color; + + m_terminalView->setColorTable(cols); + + +} void QUnixTerminalImpl::setSelectionColor (const QColor& color) { } void QUnixTerminalImpl::setCursorColor (bool useForegroundColor, @@ -172,3 +201,7 @@ m_terminalView->pasteClipboard(); } +QString QUnixTerminalImpl::selectedText () +{ + return m_terminalView->selectedText (); +}
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h @@ -48,6 +48,8 @@ void setSelectionColor (const QColor& color); void setCursorColor (bool useForegroundColor, const QColor& color); + QString selectedText(); + public slots: void copyClipboard(); void pasteClipboard();
--- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp @@ -2260,7 +2260,7 @@ void TerminalView::copyClipboard() { - if ( !_screenWindow ) + if ( !_screenWindow || !hasFocus()) return; QString text = _screenWindow->selectedText(_preserveLineBreaks); @@ -2278,7 +2278,10 @@ void TerminalView::pasteClipboard() { - emitSelection(false,false); + if(hasFocus ()) + { + emitSelection(false,false); + } } void TerminalView::pasteSelection() @@ -2698,3 +2701,9 @@ _lineSpacing = i; setVTFont(font()); // Trigger an update. } + +QString TerminalView::selectedText () +{ + QString text = _screenWindow->selectedText (_preserveLineBreaks); + return text; +}
--- a/libgui/qterminal/libqterminal/unix/TerminalView.h +++ b/libgui/qterminal/libqterminal/unix/TerminalView.h @@ -323,6 +323,8 @@ void setSelection(const QString &t); + QString selectedText (); + /** * Reimplemented. Has no effect. Use setVTFont() to change the font * used to draw characters in the display.
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp @@ -1436,6 +1436,8 @@ void QWinTerminalImpl::copyClipboard (void) { + if(!hasFocus()) return; + QClipboard *clipboard = QApplication::clipboard (); QString selection = d->getSelection (); @@ -1456,8 +1458,19 @@ void QWinTerminalImpl::pasteClipboard (void) { + if(!hasFocus()) return; + QString text = QApplication::clipboard()->text (QClipboard::Clipboard); if (! text.isEmpty ()) sendText (text); } + + +////////////////////////////////////////////////////////////////////////////// + +QString QWinTerminalImpl::selectedText () +{ + QString selection = d->getSelection (); + return selection; +}
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h @@ -60,6 +60,8 @@ void setSelectionColor (const QColor& color); void setCursorColor (bool useForegoundColor, const QColor& color); + QString selectedText (); + public slots: void copyClipboard (void); void pasteClipboard (void);
--- a/libgui/src/color-picker.cc +++ b/libgui/src/color-picker.cc @@ -3,7 +3,7 @@ // by Harald Jedele, 23.03.01, GPL version 2 or any later version. // // Copyright (C) FZI Forschungszentrum Informatik Karlsruhe -// Copyright (C) 2013 Torsten <ttl@justmail.de> +// Copyright (C) 2013 Torsten // // This file is part of Octave. // @@ -22,6 +22,8 @@ // <http://www.gnu.org/licenses/>. // +// Author: Torsten <ttl@justmail.de> + #include "color-picker.h" // constuctor with initial color as parameter
--- a/libgui/src/color-picker.h +++ b/libgui/src/color-picker.h @@ -3,7 +3,7 @@ // by Harald Jedele, 23.03.01, GPL version 2 or any later version. // // Copyright (C) FZI Forschungszentrum Informatik Karlsruhe -// Copyright (C) 2013 Torsten <ttl@justmail.de> +// Copyright (C) 2013 Torsten // // This file is part of Octave. // @@ -22,6 +22,8 @@ // <http://www.gnu.org/licenses/>. // +// Author: Torsten <ttl@justmail.de> + #ifndef COLORPICKER_H #define COLORPICKER_H
--- a/libgui/src/documentation-dock-widget.cc +++ b/libgui/src/documentation-dock-widget.cc @@ -31,9 +31,20 @@ { setObjectName ("DocumentationDockWidget"); setWindowIcon (QIcon (":/actions/icons/logo.png")); - setWindowTitle (tr ("Documentation")); + set_title (tr ("Documentation")); setStatusTip (tr ("See the documentation for help.")); _webinfo = new webinfo (this); setWidget (_webinfo); } + +void +documentation_dock_widget::copyClipboard () +{ + _webinfo->copyClipboard (); +} +void +documentation_dock_widget::pasteClipboard () +{ + _webinfo->pasteClipboard (); +}
--- a/libgui/src/documentation-dock-widget.h +++ b/libgui/src/documentation-dock-widget.h @@ -35,6 +35,10 @@ documentation_dock_widget (QWidget *parent = 0); +protected slots: + void copyClipboard (); + void pasteClipboard (); + private: webinfo *_webinfo;
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -64,7 +64,7 @@ { setObjectName ("FilesDockWidget"); setWindowIcon (QIcon(":/actions/icons/logo.png")); - setWindowTitle (tr ("File Browser")); + set_title (tr ("File Browser")); setToolTip (tr ("Browse your files.")); QWidget *container = new QWidget (this); @@ -72,10 +72,10 @@ setWidget (container); connect (this, SIGNAL (open_file (const QString&)), - parent (), SLOT (open_file (const QString&))); + main_win (), SLOT (open_file (const QString&))); connect (this, SIGNAL (displayed_directory_changed (const QString&)), - parent (), SLOT (set_current_working_directory (const QString&))); + main_win (), SLOT (set_current_working_directory (const QString&))); // Create a toolbar _navigation_tool_bar = new QToolBar ("", container); @@ -108,6 +108,9 @@ QToolButton * popdown_button = new QToolButton(); popdown_button->setToolTip(tr ("Actions on current directory")); QMenu * popdown_menu = new QMenu(); + popdown_menu->addAction (QIcon (":/actions/icons/home.png"), + tr ("Show Home directory"), + this, SLOT (popdownmenu_home (bool))); popdown_menu->addAction(_sync_browser_directory_action); popdown_menu->addAction(_sync_octave_directory_action); popdown_button->setMenu(popdown_menu); @@ -119,6 +122,9 @@ tr ("Search directory"), this, SLOT (popdownmenu_search_dir (bool))); popdown_menu->addSeparator(); + popdown_menu->addAction( tr ("Find Files ..."), + this, SLOT(popdownmenu_findfiles(bool))); + popdown_menu->addSeparator(); popdown_menu->addAction(QIcon(":/actions/icons/filenew.png"), tr ("New File"), this, SLOT(popdownmenu_newfile(bool))); @@ -195,7 +201,7 @@ this, SLOT (set_current_directory (const QString &))); connect (this, SIGNAL (run_file_signal (const QFileInfo&)), - parent (), SLOT (run_file_in_terminal (const QFileInfo&))); + main_win (), SLOT (run_file_in_terminal (const QFileInfo&))); QCompleter *completer = new QCompleter (_file_system_model, this); _current_directory->setCompleter (completer); @@ -359,6 +365,8 @@ menu.addAction (QIcon (":/actions/icons/ok.png"), tr ("Set Current Directory"), this, SLOT (contextmenu_setcurrentdir (bool))); + menu.addSeparator (); + menu.addAction (tr ("Find Files ..."), this, SLOT(contextmenu_findfiles(bool))); } menu.addSeparator(); @@ -497,7 +505,7 @@ QFileInfo info = _file_system_model->fileInfo(index); if(QMessageBox::question(this, tr("Delete file/directory"), - tr("Are you sre you want to delete\n") + info.filePath(), + tr("Are you sure you want to delete\n") + info.filePath(), QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes) { if(info.isDir()) @@ -576,6 +584,25 @@ } } +void +files_dock_widget::contextmenu_findfiles (bool) +{ + QItemSelectionModel *m = _file_tree_view->selectionModel (); + QModelIndexList rows = m->selectedRows (); + + if(rows.size() > 0) + { + QModelIndex index = rows[0]; + + QFileInfo info = _file_system_model->fileInfo(index); + + if(info.isDir()) + { + process_find_files(info.absoluteFilePath ()); + } + } +} + void files_dock_widget::notice_settings (const QSettings *settings) { @@ -607,11 +634,24 @@ } void +files_dock_widget::popdownmenu_home (bool) +{ + QString dir = QDir::homePath (); + set_current_directory (dir); +} + +void files_dock_widget::popdownmenu_search_dir (bool) { - QString dir - = QFileDialog::getExistingDirectory (this, tr ("Set directory of file browser")); - process_set_current_dir (dir); + QString dir = QFileDialog::getExistingDirectory + (this, tr ("Set directory of file browser"),_file_system_model->rootPath()); + set_current_directory (dir); +} + +void +files_dock_widget::popdownmenu_findfiles (bool) +{ + process_find_files(_file_system_model->rootPath()); } void @@ -662,3 +702,41 @@ { emit displayed_directory_changed (dir); } + +void files_dock_widget::process_find_files(const QString & dir) +{ + emit find_files_signal(dir); +} + +void +files_dock_widget::copyClipboard () +{ + if (_file_tree_view->hasFocus ()) + contextmenu_copy_selection (true); + if (_current_directory->hasFocus ()) + { + QClipboard *clipboard = QApplication::clipboard (); + + QLineEdit * edit = _current_directory->lineEdit (); + if (edit && edit->hasSelectedText ()) + { + clipboard->setText (edit->selectedText ()); + } + } +} + +void +files_dock_widget::pasteClipboard () +{ + if (_current_directory->hasFocus ()) + { + QClipboard *clipboard = QApplication::clipboard (); + QString str = clipboard->text (); + QLineEdit * edit = _current_directory->lineEdit (); + if (edit && str.length () > 0) + edit->insert (str); + } +} + + +
--- a/libgui/src/files-dock-widget.h +++ b/libgui/src/files-dock-widget.h @@ -94,11 +94,18 @@ void contextmenu_newfile (bool); void contextmenu_newdir (bool); void contextmenu_setcurrentdir (bool); + void contextmenu_findfiles (bool); /* popdown menu options */ void popdownmenu_newfile(bool); void popdownmenu_newdir(bool); void popdownmenu_search_dir (bool); + void popdownmenu_findfiles (bool); + void popdownmenu_home (bool); + + /* from octave_doc_widget */ + void copyClipboard (); + void pasteClipboard (); signals: @@ -114,10 +121,14 @@ /** Emitted, whenever the user requested to run a file. */ void run_file_signal (const QFileInfo& info); + /** Emitted, whenever wants to search for a file . */ + void find_files_signal (const QString &startdir); + private: void process_new_file(const QString &parent_name); void process_new_dir(const QString &parent_name); void process_set_current_dir(const QString &parent_name); + void process_find_files(const QString &dir_name); /** set a new directory or open a file **/ void display_directory (const QString& dir, bool set_octave_dir = true);
--- a/libgui/src/find-files-dialog.cc +++ b/libgui/src/find-files-dialog.cc @@ -106,6 +106,7 @@ _file_list->setAlternatingRowColors(true); _file_list->setToolTip (tr ("Search results")); _file_list->horizontalHeader ()->restoreState (settings->value ("findfiles/column_state").toByteArray ()); + _file_list->horizontalHeader ()->setStretchLastSection (true); _file_list->sortByColumn ( settings->value ("findfiles/sort_files_by_column",0).toInt (), static_cast<Qt::SortOrder>(settings->value ("findfiles/sort_files_by_order",Qt::AscendingOrder).toUInt ())); @@ -161,7 +162,6 @@ content_layout->setColumnStretch (2,1); content_layout->addWidget (_content_case_check,5,1); - QGridLayout *main_layout = new QGridLayout; main_layout->setSizeConstraint (QLayout::SetFixedSize); main_layout->addWidget (name_group, 0, 0); @@ -205,7 +205,7 @@ delete _dir_iterator; } -void find_files_dialog::handle_done (int button) +void find_files_dialog::handle_done (int) { // make sure we stopped processing stop_find ();
--- a/libgui/src/find-files-model.h +++ b/libgui/src/find-files-model.h @@ -31,6 +31,8 @@ class find_files_model : public QAbstractListModel { + Q_OBJECT + public: find_files_model(QObject *p=0); ~find_files_model ();
--- a/libgui/src/history-dock-widget.cc +++ b/libgui/src/history-dock-widget.cc @@ -72,7 +72,7 @@ QVBoxLayout *vbox_layout = new QVBoxLayout (); setWindowIcon (QIcon(":/actions/icons/logo.png")); - setWindowTitle (tr ("Command History")); + set_title (tr ("Command History")); setWidget (new QWidget ()); vbox_layout->addWidget (_history_list_view); @@ -169,3 +169,28 @@ { _history_model->setStringList (QStringList ()); } + +void +history_dock_widget::copyClipboard () +{ + if(_history_list_view->hasFocus()) + handle_contextmenu_copy(true); + if(_filter_line_edit->hasFocus () && _filter_line_edit->hasSelectedText ()) + { + QClipboard *clipboard = QApplication::clipboard (); + clipboard->setText ( _filter_line_edit->selectedText ()); + } +} + +void +history_dock_widget::pasteClipboard () +{ + if(_filter_line_edit->hasFocus ()) + { + QClipboard *clipboard = QApplication::clipboard (); + QString str = clipboard->text (); + if (str.length() > 0) + _filter_line_edit->insert (str); + } +} +
--- a/libgui/src/history-dock-widget.h +++ b/libgui/src/history-dock-widget.h @@ -62,6 +62,9 @@ void handle_contextmenu_create_script(bool flag); void ctxMenu(const QPoint &pos); + void copyClipboard (); + void pasteClipboard (); + private: void construct ();
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..913096e66e7847161f4c20044c0125feed55f7fe GIT binary patch literal 5491 zc$@)q6^!bMP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF000#_Nkl<Zc%0>1 zX_Q@6mHzfQcX(r^Qk6<lnJSe8l8}Tz5{7_5hQ$zRl`x3Rkual+cG*bV2()6e8Wj~0 z+qJp@6>+JwHXQ|o$l%am41~!j31p~@WT@2ehC80K`^SCv<&9O95L~@hpRAKRynAn* z@7v$rXP<rFBW6Zr%hGZjzD98;4Q*=#Sp`3%;U^iY9nc8?42YtDv0uP)C9Ir)k<arZ z-eDX_^AXk(@P1pCJ_SHPLni~|Cx_^pL&zVMvh~cC(aEW;?dh@EQR#FllSx~)Wim57 z*YgUwd||M^kRRyHzc<()Y<5HAZ6LeOLhIWGQacFn0Y=oDw;X@}pvGHAz@aNZ0HB1A zd{=<?7N@M@8IxzUpE!H|?5<gJk2a@FosRa7PGr(8u&e}x5Fio&0A>xP6+E|yT&^E` zckjfOjqCB(KfhIc`;847cWxg1A0MNhw=r(Df#i-HKco(Ekag{_C?HEK5+3$1(Aaj- zlxdldEI$3DBac7%baZ#mMmjSJU_gZdv{KMogIPBk3WOk#5RlS<lqMJo0|UL-u>N(t z^x|{jn%}+h`tIFWX=2Js3)#N_I;d5|-%tSrKo~v-<|}Nza@PE@7oD^0yw2lJJOizx zI-o)yLEwXRBd`Dw4e@M_a1lWW3DdGbLSXmqZTS6*zrwRmJoWCjE#ad!rak8Hk2j8R zz>UXos0v8aRTCY&bJ>(>;)ai3dP(=mOU^|ynMU9`P%5ndLqh@{S(AnV%TA(q|86|@ z^w03*<G*^fuebI7B)a~az=Ht)EfgSykG{pidiVA-&;Rh!k6(BV+D4Cs=N6z<<eFuu z!+;)+lxD_}(twpnVe8iQ_~{QH^jAN>;fE%Uy4T?!zdOv}>&I{~3dqtm2?sqFjh)p0 z&zD_)^Rz|Boq^DI5C;B`U=D}%D_cBf(@H=S@Z2*$!GAvTlb77ww12WO=Jz>%sIlKQ z8r#SeKwwbH!TL|nJ~ng5l{em&nJ~T!o|6Z&ZV2#jgKpHA8A1ry$qd%5TaE93=bPL1 zY#aTL2~2uC#}5S~dB%tokfEzn4*vWP3s0GR$7L&SGt$Wv0<T#AuqL2CC<RnDJDJAL zT|IdCfq&`iS#N$WiD^F?2?--mfJi!6_t}LXp7P~Se(F|fNrBLJBR{VJHXP8yK}1u7 zF~drvuy6k!Jo3QZ{XOgL&n7VSvEfJ<QUO_7k#Ml#<~hf=-1Es5U$7EVAPn3(AcyJ# zN^5A%Fbz5Ewar@f_!*|1!rtEZ@cjqw*|%rQm}@<L@`<7DA3^~V9(G(bVMgwu%WwQ* zwk4fL=sVRn9|Z8)^Fg4{-j+sdOA_yH-V4hzh8kzNH8WV{dCN{?>-Kl>=y&d0@9dv- zxx<gY((HLn6_BEf=i9A+{mI2QeRkI5iQNdCTthJNJ~NL9JQ2b3L$tM~aLIYcp`$H> zpFjON-dMLC3EOD;jLLBiM*<OGC9-&J?Tc9XgU6qi!NP0v{DU1MA|Ol4!Jsx@to`np z7caed(FtcFa0Y==`q~J5Gq8<5^Sl6KJ6dqX1t((cm@JfHFf*Qb=5_pO?Izf^IU*8< z|BN846rTO%!+7<Do-ZeG)IB+VsBVSXKzEV?Y*{w#=m{6jn)@LXbA4cSAdb8r|M&b5 zlR8J^s*4t5Oj`z?A7zYE3M@P4SO{YL_T}|RRFE)|S*p=B%nYd%7M=W2^lbRnP5nFe zzX;%k+Ux2F&~T^OnLW20bJBHE2QGZSfH*fNA`nrP+~ea$z$=ekFTk{}vAFt@C1@R$ zhU<mplrdBqQV`Btx&TDLvoF2{+ZvfWRQ~<SaWFIB`$*Vn9JA!~F)uv+>(6B9>NoTJ zaBourva~`3*!+nZ$IO}6Ho6nV!T_KTtUO05|Jv({j*r<#Ou)65pNf`j5}qGK*eeVd zyTW<rEPx>izkFsb3{yf1Q3tSgzZp4TMi2y;(lr<3XZ-Qp_tw96W|mg`G{+B>FRCIy z!|6`6<ge<Uc>-K#0Lm|x^ZKEzTM4|D1jqGp^if^7{;D&OO4{(e$ekJuKPKVt&RhT~ z1s-4dGNcrBBn(AFqhr%1%$R$;wR__;S0Eg>3P4!}WdgEv4JqvW=!EIrGgGNia0-Kf z4x55)1h^J_(eZKof*H7B`B|_n6TW{y_RX5o4A&2^^o(O5CE-Uu`z?qFQpUv-K4>z6 zAV7OZ7g{H#PVMj6cLIQ?>Ih(j9m4KCf83PC2;4lBR|LQ#vUD@>rz}1SH!MFJh9Thx z^|Ei)m>I6?<Lp!C!;}L5{^%-rzJ_T?Xk87smXJCkn85&~B`|*K%v9gjb<47};)NVP z<Wv!$(Yq+wo?4VjkAYJd1S`J^cq72g6i{?LoOS8~T>q(aAc)`x3N$k8Rp1JahtrnK zgERyl{Ew%QFF3GFqbcyH+SFJbB2;K?p9~|r_H-U}rT|!9CLl{I42^xKWjZD%S%q-C z0>G*aD5~Gp@7EH+%y3*EA6t4NuD@z2m>EGBxzQn&T^J}7J)E+54opMhz6XDSe7*q7 zG@xsM)&j5XksGCuZfoft9Nd3=OhDvVQ0*}DCnd7u;W|0Et^?2W;CUW=-!Jzd2&(og zk6qWpz+fKB&RvWfmVX3FYXo5kX1veN$QN9kxM(JByX8XIwt-x}IOJF=dyK<z9E84$ z<fyU4)Vm~0E9^1>jN)V@afD%{;1=`nN(3}|U~LbA0IugDm&@bQ3s1#$%a<YuLxiC^ zV8+AH3q==;jyVE%-g+rA85@JSd>!y+B$UZ;@-P#vfax3q==QP;FcoG9JJGH+!*z-v z4$4xm?6v2F5Kt<z^o>`449hP)8?F~XmkObW`IQ6m1sC(?Ov6`hUyj@Fei%D<?L#tY zLF;Nah+{!K4y|=moTUInCSdVY4&8|Wc8aWd9WfP-6s9Ru7{K@4ItvFufG`Zp`|+{k zxNuz;pSf-smS1)@9M^+V3j9I+V@9FiVAhdSaPOC{#l+5b^bh2###TG#@^Kiz_q|9^ zrf6d-P5}VHM1~elm$cK+Duh-F%o<uZ@5~I}4-hJa&);$hF2DFp6pJ2IJVhNI)z|mZ zrciJ(y?X-gyXPhxF?|wpxnfCiJmk2QQUEigos^o2T>v0JoM7RNl|~w@6}VKSsEw*I z@EAM*-1+${aq;=5p-^xlxiyKvhqFh16~%<f6FczDdv3zKIo%i>EPyM<SUcvJ1b`vU zBtULQCUFA^5T{A#4u*^fK=lo}=AmJzkj*4<&t2DI*+-WkUjqL@18+n`vFKvl*wOgL zJvU>?N%P?OK^^!57)r*}3PM<55sU`G5FiLLggr3Ohh4jNV4%MrzVA1kSCvv|ZO!25 zxzmx$7vXyT2detvy5|R&IDQO{TQD18sH%+CNC8?akdPq39T1c>KmZXDL&9|&xVa(* z2PG1T1X8IK5{U#X%Yu{=%nZ|%*t}&IuKD!6Fr>ugpF9iaox22%TU~2lW*CNyGPjta zxDnv{0hH2J%j<G6gb!R-*|gT>#gq^NK@j3!zwsFQ`g3^YwYOoKav0Y^<R%el14Lv% z2mk^QHb@c#dx&!JXf`km1Ey)hwryCJ1>3e^nkKgN?1JO^a2yXr^$QW(Ht~m-|BR<s zt&V_!%7B7U;S=Y57;|QK!}p^pw@`HP?eF~pg`x`~C}y!to*xA0?&`!<m!4g<9(Z%z zCj52%7GyK2hP45$b$K@MJP&Rt;0F#&AvB0!un+)=K#%~01W5sb=!HW(?<=L?I8ky` zC=_5A1`NYM5GsUms#`PX8&YD+)?HZn^h?O3lU1+FT+hcTi|66!xzkJc5&R&;Z(e*A zeSL$FQdWV8Qfv>$EtrL?E<LB>JYZV}k_ihy6rYq*b<<*etdxQlNf0RjqMwO8140zR z)JFmkFd$fhpsEOn_v7Oz7=~~iuS`HK1LYhX8d9MAoX9E?BnYezM0GI3woKRw3sO`s zedE|;NO2%X2EeS5FBC8^FaRk9l!^#wG;IqZz+jLt0rml5?Sl{z0i>)w5(<zu1RD?x zPz~tXEm8C?Uug}^fJTi30E9t+VzF2zAYMdyUVtzN!HDh?;0R1Uk6bR-kbq**MX^`} zgHiHgFt}vt5JW~fmQ<1*y8#hFkc5^dNNEry`|^F?W&<QbP;$F~56BFJHbAT!DxgtH ztm2%%20t@E6jgI7SCEk#;J`hlt{Es4UF7o)3`17<e~AFch3f@X0W}t#5Y<a_Aw(H; z6&VCT8lW%)i_}&CFbci*>vY?)O@ey?X@Rr}p+ks@n;Tg_J`bXjO=?`AbWAnt2WEzd zzZz4zPb&?}H1P3rKNJPQ3bJB<_x%9fQzt+xU9vPvlGjz^i>JI8G!c~(AV30Af>;e| zk?8^Af`}OPj!--EkTN5*2|+#t0Yb>;zyZkEvhnk46aYe*$VNq!*!m%BBoY>G`}@lx zlIq-vN`N(7&o5P$qUlnQD7$MV_}VR)0bv5fU>4h1rni*|U?aPc6*fx>=LsVLp?pxO zAkr)bl$BAkb|VE45rmZGs2*EH#Pz+3`<Q{E>tZC0EAAD7%5GLW1y)XlLQ1emK(L39 zQ|lnCy+B+L5%zB8^ctaaAR_^iRs@jhXMtLm08u$G*Y@a(PY3RiQdTKQH@WX%`f$NI z`iwxrfHV^zl>>|RKR{5iOh9qx*F84Iy#T*Y3&VzxHiR%hqHzo;pDWD*4YMz;L4>CF z0`$Jt0=g6=#V`hnTuwkp3nU~saQCq}_T}P^`}lwY0I=EdNA3CV2vQ(30g@(!psHY4 zrv{1&B2A^rTo<t;0BGRnhtL@1>9|p>il)BE4arP`bOA~yUt%M>K7Pc37b7y+69#Qh z+WwxIA~^}f0Z22blod9d5d^_9O(YXGLRJ0U#e{7kn@OR)tp%x60w|@zglGYiP9<R5 zX1Qtu)TaK_=w$gYaz8|FRT@ua^e_8A0D=Kwq@ar1SjovNou01^))C-rxi?63-S}T& z;q|MH^psX%BtS|<L^PQWEz`ut%{%b)Z&t(e{PGY9h%!9}F1z@wQf?p50FfH{2a0(1 zxmT*!5M{w|dHGs7y=Wb!yK#UGf)GVFTCc?Ghsx+5sY61@Bs4q(o_bR!I$x+HwEE?! z+4{QgWLGA<-B(hw69Ni?qfD(%T0$U|N?_IVui)ubtE)4_lBo^DfMuBwRO_1rrJ}-1 z<qHGmcp1yktf5t@lA~35MW>m;aSad*%QRq`MwRuWeF9hj!UUTcgaaGk%gK+Dw0f!( zRlAByOuPByO!(Rp>CWTFkai(d5rVxa9@OLojS8pnS6*dl`m2omjjunD^2UR&Ey%<< zzEY}TouYRAAFum03$T%aQa%RvY<$g0o^*lx&Q~`#R{#K5t!tdH<B>#u<E_@{*&ts- zXn+tl1z(wU#h?wtD1(<$*16G02~bK^5g3MH-O{@@@rnMH0Tvd>NW$q`AG+p@2gxvd zP}AxO5bTHPS>G$<UOLUn4lWW_78DYMc0r^Yf{*trfydig1q?+%ef35+yf+NPs^A%u zA8$zz01LuwL6F~$e31N^&P@Kfx9;w`DXZysgc3*Ia9*ok_rp;WPs)<^A(R7Rx0E8+ zzaNlN!Zgh);I%5KRZnGWL_nqV<8{7Ls$BA}twolXzhpqm47BplyYsDgbE%U);r-=n zuQkG1r+~z~+oJ&`#{YV-(DyC7_su)f<Blt-fI#d=-y5wUpb~uChf+c9a<!6xO6yB0 z5r$#Y`>K=>FNLKA$Rq?A7<g}OKA)I-7n$id8d`ZM1pt6O|DVU2xiw!O-<rB2*)bOs z41%-=p`$WbCHPtbDv4;Mf~rMPiGWJ~j|&^I)hoBPFKVKaJfJDc_gN+}xN8mX4#(Z0 z(lfvAuf4PB&u{7#F#nDcH2_Jm#~-!uj=h7cJ37q`=Oo%@0YMJLG9rSw4rnD2ja;EN z4#eOA)LCCCHRP-jzrX<i4Fe<-AR~prU9VzK&~m@Z&V0~+wK@1<6%aRT;ax|ka;xv3 z&^G4OWczGzm<MSOCWSB!QC2`Dc+)h?;G4yQN(Izfzt;ETUbepPBM3tTL5M&BN+dwS zM*pr?vCB!^AGFN>lE3E8zTvRd5nwO6tHD(g8hTc0aLrdbN2M;vjyo2_9!v^gN`@%` zvjjROp;igaR8UDkv*1@L`Kou6p+=y95H^A^MBk2A^v<C5n_+hD-Tvw?4h(DAMg$Di z%*9`sU=6-`N2gi1ren$phMi19vU`98DPWo<A`BCT**G55T0d^F0%Cu!1Rs`Oa0Wq$ zAXErKMxY4_Hk{lZ?C5#5f49;7HI<tF-QcA!^p6zN2o*qpAh48RX|#&MmMg~kn?65z z%G^mU9W!7E1%tv82?W!Wks@Lxl-wZ(KU|Ad5P=TM+X%Qupco;W2$jaZ?Qdesu5EAh zW#)Z}?T)8{-`#dlzc)Oj-wc_jepPaiJ0Y8U>((hP_Qxi5FB0id;~*)3A#|h!gJ2r6 z)D1{OV%V>URW#Nbp;9G_hh^Z3C6pEz*t-RrH?7TY^-_<yqvk#!$XEvz!vFp42ZiMz z6(9gffDnK*poHiU`JQECye-#FA2)vCr0!#pX&nbcG9(m?m;@<NE&!JQUVYu~z=i-4 z(3+!{FN&cc5e5qVd$(fq#<k(5zT)%!=_CJ*lVew@Ri7&y6zZV}IM`;K{SDF_PBU{o z=Z^_@T`;YqZBbX(QL=q}H<IZrq#%G5v<?B*6)!?+M-u;6DsTt`LPqt1!eAeE@7RD% zTiz~g>M#DT&+hsWXC|%^jJ;4%-2z$zivNZR5CU9Qg8)lIC{`1Mv-^}5XUEb`Tc132 z+_<R|Cv;P5TPN()C<wy>kti=^V-}+2b5uuQt)K!AZlMqR_wB&;T|L2;y}cXWQ^^+# z$%#*LYRsQ_<t@GSgFLi$*nc}LmpuR`ndYE4m7IMGQ~v&it>n&WPl)c(>2yanl}@J; zX<?fdgp6K*D6QanE{aYu9CV7gzM`|I*XND>NWS6PW7Z(q{uUY5cA-KSp#n66N*0IK z{}&Wc`dkP=5FjH}Xd%Hum;h&>ys-$KPK0i|WWQ5Fr3ownFheK>xnD_pH;iN-jN~pz pYabYS{_%B(?RUZ>BH;g9`(N09aryT~5t9G_002ovPDHLkV1oV88883<
index fc69dce64993a4906bc5c99a55e379e3dda36ec2..b873377e131d46434504db352cce73f7af27385d GIT binary patch literal 1928 zc$@)<2Y2|1P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*l9 z1s5)Ta3)#+00#(3L_t(o!=0CVaMec@$3N%n?<V)&JV*$6K+=X_3KU{_3E?#raHe%y zpiUJWE0pR~>r88>Xtj>cRL9Y3r_iF)@zJR>1kn!DGPTxPp{)px&?3;<fROT#M*>Mp zlbhrw_xaoPkK`uY5Flh{cJ7|vp1b=!-#z=?UEvyK$!kXfp3zF9vQ~w9qcTfH@{CH4 zibPappNhO`RQ9OSx^;ey<vNO7t#k3Kho>8n$BfEaqk^iS0;+-$!Kk49zy0k$ipaA@ zX>6#U7#%f$SuZ!5TyZOmN`s0NstBrJRQo4~f`Br{Qvya1QIa^KJ{gePRAggA{ltHd z3c#H0|M`XyHmORksyHJes-Pm&<OP^HCWo4^M@6n7M+F~8R~jxPeVP-NrkGE{Nt;og zJT$lZH}8wYMhsxawnIzR=vEab^hMrBcfbgDRD`&_EKFs{yJ}P?V`&<rKL6^4@^kw) zuln8HzXd?)3<xJ?yh3VN0MlMLRBn{#RamZ~WTMVdVQqB*pRdZlp8Vp!r;d`d?O`Ux zTTThi#p6lo>FN35&D;E~8K10BtaA&U&oWiPsKr?Yb<7(Zyza>XCUu-3lxU&2q+}96 zG#Vw9N=|=uj&D{R#Logy+ps_6Tf0O>!dSq8Q%Be+-@kb*qbbg&Kn-dP&N);S0STBv z<~7quLzQpcV&6GzrdrFg@(`mgqTt*>wayXG$qO96^-goy667T!W8;DR8^sDv1gGFs zSWyuicI;h$d6ABbA6_z-;2DqHP?*Bv5~?QFGJf(x+FviCr!x&W;x@#N`Ue*MbMbd4 zvmvJuz-#;hMY+PK8yg>Aw!3V}IFUYDL<B^r%o|6t{3dd0=MPfr9B;ky0`XYyRS6hd zTESgwo?`l(1ptJB{b$`f1zqP?-S^I!rp@)$Njb7wHkOo>d@G#e5%l9O6Hunnqak{I z#jgA*q1kr=aIy6~KY#SABVLKs_pfK(lH2?Ko3cD{Hnvyb;Vttg9`pi%z=P!#6@6h1 zqYF7eULwJn11}8#Xg+;BTe5Gvi)pj#iFQV4Z9c=kw_YRGJE+8e`u(q%I&&_CMPnHk zP!<+?3-@-VzkKi8r{7c0^Kt>_td&a>CaVJKCkF;>Iej7vz%BC@Gr4XyvllJnjxT<N z$2L4qVbS2uNhT7!yYC+Z_JTqW>)hQI@-n+XMC2M7J=oto1i*yqPh{Eog+(k~u{!J9 zrJyTw4c5AL>)X%iXm(f2>5~KP((zRUL*dJODk`h9>_ja4I9NQ!o8@5jbpz<Q_#wT~ zuEA&~)(-2J_S0E*K~Zs*T@y6;*3HWRa3haCoBpaR0BHGNwqJSWjahb)r&#C4sB_nz zTSNwuap?M2)!cNMzn@OCfA@~8Z=d|sqAXhltaDD&>2z~CnH2hk2kBP<ajs7dEPf(} zS9HU$3{(zDKx-}AH$O}JN3DZLeEqEym6T@rC9T6+#7m`8>o2sn{wUyi;{g}fKrk-B zJfu$((kMrRQwdF5#rz=*l$4Dpl$Spc^{J-Ayz%lMICZRXz$X;WXXTm)E@SCJ!pC<` zyt)^8>EOz)Mxem6xVS+dnYrQDF)x3PhyyWn1xuLHJ)Y^E9dt+92L|biwDaV5?kAl} z(cRfjI+e<rBp3?w_3u5wnBtPl0345|vDTU4H~*%+UoxbhQ;~cXFbV;IHG#84w?93y zyTFt>R()+fr4^OK_CI(mMkJZK@~zlB^Y=e1y1f4uEJlR7lW#EP=wF8<sFIVLOE|B9 zqH$$Z)zmU`{t~Kdr)K%Z55GzB=pIx(TH;9>BXOE47hD;DZrqg%?y!o~8WooTVT|zj zta9$HEgrFUq+5=V{Kaxg%gVrk;7}ZGt*!2gLS(<aG~t{q_pR&j9b&C>zH|82@#A;f z_{n>1w8c^*yBW2&5Dte4hQowHL4u(WIpI9=i;Cr{O6VS4+T_IDW34;yJ15rRtOM&D z4aYlJx91$MH+OTc=juRw5x^lsG{-rIxhDLbTTaMr>kc7OFHqWdl@>&VNXoLaB}!vQ zoQrXv_M}fVW$8-!M3R<sy(tby;(TzbiMlg?BR9V=>u`(3V#r9>(LB9tt_nX>k<X|O zKF3Vv?Vv)?6DEWL<OK`?BlP(2aWcg%A043K{f7utPX}uU09<Tq8vz3ux^^_2H=n(4 zCn6C+7Jvl$gtJdU1+Wgf)0Xz6<>RC!nzlG6ST)qP9w69$hDdi0-CbRDcXrYpjUJQh zJq^80yFE|b3=#RJs;u)Q^Jo=}iZd!=`rnUg)EN=+#8I4za6|O;Q$Kk7k>|pxUYin? zRLb@Uqb$K+?lwlG+^9UHBFj~!P6fH-rJPx&m{HjxYBqdu&+HRJ$N4`U@5+$Nn2_24 O0000<MNUMnLSTZ6KcDFU
index f1346267374d7556080c8e9fb4868596fe0d3192..0914478e88aa4d1fdc41f4cf371805a1698000a9 GIT binary patch literal 1785 zc$@+G1_t?wP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*l9 z1r{ic2(m5!00wzUL_t(o!<|=sY*l9&|NWl#oZI_RN=u=)rLcaaIKCWogcT4c#i)xb zi%v0-g|R<OoH`f$*p_I-#Y_zmbQ+U=M9sPo3E7OnX>?>tz&SSroU|M3=tvnYZAa<H z?QQSvIrqGef85@(et$g4$$4_#C(rYHf6se<@B0$7*p9!v<vK>njc~6Jbw*e#WXuSM zgzOjLzlD6o2v3Wk>&TWWi+LDl8r=R;^EyL5W`ui<5F&&S5Frc+BZQ2;NB!TE{IwA@ zHP%%o7Yv~Gk4+|zy2}U~g)9&fB7hMYEe<Sl1&bYlYY0-{L6HoQ19?oy!;N*7|5*@# zO@H{`gNArggn1%VLsA3~5>+u58yAOA6?IUWXAlx1fFh9rI=ukxBNi>G03*t7BRF_| zbH&pa$kdzxY&dqlUW^<OVtIDvS-M?Ae6}=#&y++_9&u)z)qAN7nvwzjH4MbBo_TKf zZ|{8u03aA}iPjCr;ZF%*?a}jbBlwLF4MIU~)*&JGRxH97R^-oTec|oP7ZE!4FsjoX zmkHH$+T+mB&=1!f3y$Ps#!bblZqooeMF=AnY6TF*9ZSOVE)D?IeXWR$bfBoXxEcVG z$s~N=TldnY!0bAQU>ty&#xs$?+8shhVF4(hqKF#7_tq@ILQJg>h=CXbRfULv09|vF zdC55$U`1ecd!P!Nd#uIIcmxYJ3ZOdnSXHD$G56A)cbiEqh>i3wNxS*C&=N{Q1yCV& zm4>Ixee%yQps(kHnHlhgvBq11%7F|3McPL2a@|)y_RsB)egua?O#t9DeG!Fu#3!1X z4(vQtvSTTkrG+FwqCB<~UVIfoHCt{bR>j|sA4NJfJSz!Xp7<T2l{El>D1bBX>l=#_ z*LFYf#+8=m>MA@(gg+=KF8=nXqz${epVl0CIcKOVg5f}ry64A;+<rFz;6``noQfOA zMd^ylao-M<>BB#HAFomMIDm7G>$=~FmzHLyHH9vO0K`T{aOLcaV*uLQE{%)1^RCZh z^~TMU0Jxz%7-zg@EOiCj3Y=}PB{KKj|9ab-j^j9a0936dIsMikfj8!Nw6%^KyRGiy zs9d#n&TDgPfrD2E{Ci10o`W}I@zIDexBWu^NTQ@{C4A4D6z;g8DN~i_8Ca{mgnrIh z$luk`_TIP!dEmj_lValK6?o*}Gt=+1i=En62Qpuh`4;c%`2fSo#H?{EMpyoHRuwh~ ztlp7hKxaD}OxORy;$?`$Cd>4y^|dqRDRcx@b+MCO{Ij*6Sv8x`e*oC?wMS9C`lIu1 zqY$vFDw#~CJ>z-AsPKTJDnQk&8dwA)DL92Ir(|IHE!7KBY0oOG1s&h_zt!2*^|<Re zWdJlSZaB?w49vD91Hr}cYDCuV#+C^T6vxXDj>Z-QpmQWZph{=`3wZI|J&7g&iyRA0 z8_52Rhn`9~`I|@uXpjgO<JQ44tQ+XVV1Msel0;uG4nFdgDGS{9^~bQHYSpv=E+sRt zR*eGyoBo8BaijIy4jW{i6*6B47y){&C2;t9^SChI8^QI?_9+V#$CuB@z=f27Pe-QK zf&JT#;urt;GE^EsKtTp1&b|E(Zk+?YMN8v|OlVEI`4xB<Pea5(N7_Sue;O_2Tc`i^ z<nYNnK%0fEF+vp~4GCk21GRD7UsE*aerGz~g7?b?EGsDi6d)7=MR!-1PAf$AJM|-~ zYzVCO1qxcL8mJ<$iXZ*A8&AC1jqa2`x06wC2cpp^!qF%qkubuM2tv^q@(YVNqY~<O z>syq%$6CD>sM0FbDqvO7c&QKjPG7}e+Xr!VXl5V*2|&RKnxm>Pv%){|d@Db_?>xvl z0?V>TX@VsBeTx$vNi_AP(UT6)>jg;q770H<zh`lE*hh1J8t-0i!TKwILtcKtxZNt1 zO3h7v0l@tH<Ypm$D&!|cZeGVs?(QH&*ddljT*O=h*APPiaKrO)+x4?(yzmg*igkds zV*q-(yXU|_j;@y*ubI0ZI03Ss;8uWcRyeZ?N&r@Y!Hh+(XK}-`NM<Zl2`dIQU1t&Q zy@LM1Aq*xG7#tYDU^4j*=c{1OlcyYqx`E_3MYzvl?$Syap&B90=>1WQs3GZ4QRMey zWwPyO-+z7ovr&K8`V{)U9U>NJ;a{CHhKw8GLqax)aJ>-x&`mklrj!vrPcety-E({E b#61587p#Z=Q^He~00000NkvXXu0mjf-kUo~
index 539aed7163882bf4dc990b6cfe261e34401175d3..e744e18e14c72cb9dafbedb90288d3ae50436298 GIT binary patch literal 1757 zc$@*<1|s>1P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*l9 z1sD?5hei?r00v!2L_t(o!<|=sY?W6T|NWlxzPI<IltQ5&6xLFU<I6!uSfS#i80X^3 zqEk%7F!rA_&IP|_q7fG}HH)Crn7A#|tP2?-n=v?zj!X$S=Z1ijc4HkKDWipUEA8#= zZSU>--uFEIaeE7we%~i~b5HJh@;txud(Qct^ANMx_P@O4I!3CEaE}m;M%W-^%m_z> zjEnH!LcU^zCq>YEXv<2Ac^GG!-1buYIzxWX2=^EvL<k`uLKqT82pRt!A3sm>H%8Fb z+E|+`7(l}x+e{I4rxCUaSt2Av03$M<99ZBA7CHjg5Tw9^A{ihD@`#WJTN`WtQxJen zfB4^nhIm4RMIux~QUnkZD`PG;E(~F1)InvDK}d)IibMvu>ILW?v*<_#7*qBc!Q*E) z*F1TSOwAd<h9hU2#mFHcmStC-rQ0>cXDcK4OnDU55og9#y_d?MEg9fnqd>*wQ_t@D z-F;6100cuW(YfI${3!vfJ$$yp2%Zt5MJULvIwZuNng#g6^5XgIFT8#6JVHkvMqRq+ zBB7d2dmI@V`O%sq!J(W_-cqb;lLpu!LKv}7D}X5OSR9^rasa3s>_lX&2aC$e>Hr{_ zOv3lQbuVoS%+50i@&MGgo{9w4ZWl5N3qS!CMbrqszh*HCF||G*24W0U6(Rxxbj@|< zB{#?b%LA+10#(@DXDxPAL{P9%0M&`lsv;eVxfkxd$4n|gY%IPw?H1ocODG8yK!w;@ z8J;rs@jt(S!Tt|sX22W88gDUbhcW;ZX&b@IjbHuvKes*dQ5*=h0f5u?MU)m1pKNQ} zzvD#t_9bMN7Lovo>ev!^6{`@c-*P>$D*k@-Fw&{fSxMOP*zXaotp@-^0i1eY-&l~i zvg?62E_FQHSmQY&{9#F1*|$C|UD(<8q~^%W4Mut+7!3redw+t+?e_oxuJv7=Q*z_D zs9au~_uu|1efX#E<29-t1#rf3UH9u1m6h3LO`!`R0I{(#Tsr;Y1c2_Y3wb_w-u-#3 z-ne-Z05?<w<K%0`5?9bv;xxUM$b9Ag*Sp?y9LFgFplU72>8}O}yoqs7S7+YbZH=Em z?W(nN-kV!X9K1T@-$(M%9K0Emk9$lEyKewM66IAZ;CtRAcgGD)8LGO-z*-$3^m9%j zr>m#yy}S*%|G{08d@8DI@ZHCsn*OF;=rp`Kl=+g(H~C=y2N+EzX7yV>zVoNEm0^Rx z>K!=-bhfv_boDPSTZ%|*vP`d9-!NmGQb%A_7dqL^KU?{kRkNGw4*<Kr_6X`$e{9}m z6arRNC6mc?XFQJ>7ank21*n=;1B+lR1*deylngAprLG{A_N>BM(D8l$n^${#A9Wq4 z3V^1?4W}87f!UH|AUGdhjmX+v*m4sCWffHjM`Hy6xH=XfP^Gi}1-y9X-b5RK1&)QL z4P@WO1HVl<#hXY4Xpjh(;nv|QtQ#7{aD3qUajK~=_@26u%)nYT4ghTW6FTx{o0|?A zWS$nXSO^#a`mZE#@Wb}}^IZFpf&rXM8TfQ$Y8}|ubQr(<$Cshf0s;y$AaUmHcW~>C z0Or9!y8RV+=TAb!K~LI4b3BcX>aEisJvn&12+(#R>y1!FNJGLHVt+#g?yp}o=j555 zx8VJ%1xw4z0R;$!K+)IRtJ4aR{dV)1Dq8}pgMot9ss^eEtm4Q2?Zabl_MtE3&+TP2 z(1U0+if}ZFNF<DKB!W;hhT_sioKXq&JIx(R-EFO22~=qnY89}mXuU9qy(cf@uieAA zJTfzofCQl6O`4;sFtfrx_FO0L+ItpcBY~yar!+wlao^%tPZDi|Y4oQ940r*OzD2?h z5ce!DkNRkjr}6H^4y?cQHxw0@<lR=ORBCSW3jpR9$2SY{Ga)}Ea=jfhx!ysDutO}1 zxQMw1t|3MO;F{;-whvFE_1r^nYt{kQP5|id>ze}uIl5kMy<+Zu;26j_!L0z@tZ-%( zlmM&(!x@VK&*GYAk<3`A5>^cAdru=ga0&6@5ez317#<qJa5DK0=X-vgCr&sHbpy$7 zh;XmNT+>Pzp&B90c>gFy)R1(jSmejCBH8uxAH2Tr>8L+yeF}Zwj<8T63IF<pF=T}i zJ|tv|2-ge28#?7&nNmjh9K{@XclYg`H^=!u3mSa~+KuME00000NkvXXu0mjfU9u>6
index df8099f4da979116b503edca617c2decabd99d6f..62405e014fa74ef9b678ab23a08c8c37615713a2 GIT binary patch literal 1825 zc$@(t2j2LJP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*l9 z1s^-ubV#`X00yB+L_t(o!<|=sY*l9&|NWl#oZI_RN}<pXT2`pleSk6`TcHxA7@cuI z%oGz@82d|SoC|(rCK_>B{D={Bek5*-ChI~Zgc*a=sANh&oeU{M$_9l}Tj+(}QQFJx zZSU<p_q>mP+}^ggy`{8I^5(qfoaemn@A*B?`#bMT%wn7W^p5KosWrk~LNpoSS|KAw zI4opbg#Q-u4I?}ug1!SAR$9!#c&C?}UO&Iekl!@IT}B8ILI{WuhJ+D9#;#-i-;(^L z5wy29tw_!rz}nxpn-c0aBWxA2Oh||TMr3SqV1X-G=m=axkb(>pNgsKThlJeU+O*<7 z^8&E`cmI9L5HE<ZM1*QciU2}lWyHmU3j<ggc2Hen5D>zLB9R4dWPJ3FT6Cm*j4ESB z@S`&i)xUU-Ox-nrHHXf$h>-(AEXzfnquVvar>aAEq%w@!kaNeVuB5VPPx|=R2vBwH z)GIrF^VmxO0KsjS=v;FIUQqxK96VEH1iuzyt5A@SIv~WZ`UUt*UFlrv3-5MaK;Y0b zXh=u92-S2t!{OoK@7{mNKalq+2*s*4tB)-rgb@q10*K<_#lbmG4gd{<od}Iav8bY= z0RWQ8Bs?#(>h<-$+13WX06=5wsgQ5&W+B6{02EMBgpJ@^_b<kLOsxlqffxf-g@}Lv zT{FSF<U3iQ&bPYBSB1?tYq6y&gn1hUP#tep73o04z5J0!&9oFmM&paqZs|R=gpyDJ zRETZW!J=ay`{Q8@_P>`K#C5U#@h?pC>GC2tce4_vKX<>bJdBe~U;OYtHa+_R><hF5 zfYbh2l$Q`6ZExSZ<#^@hC1j2kk^qU?$P#3#-j6`zh6!p_@wX!fkxq>O0G8FiuPDg3 z&$QueJTQL$$n%GBYH0CW3li6NJo#2n$16?s8ApWQDXXaX+Q+3E+hQ+jp1gc#xG#he zUy$1VeT3FM3IMnjyD>gF0MxB$ED9jn-8tSbEi1>uMHSdvYM=SRRlG^nBLLbQ*LA;K zRb8D6tB5WH07OPd(R2E>aR9yDmkWGqivSo+r_kRQod$A=D`+lrn%_)hAAjOx_gQfq zrv!kiwVYfq1r31snWB-+#K85dU1KrjY}q8Ajb#q3>SGp&<cp9bXQ}9k_q~$<ki^oO zI(V5(f%~;9mu3W6TVi0X4iNfjXFjVd+I^*<Aoo7CW7cn`rfJhcXYD_4XFn%%oqVwW zJ&Yt1bNVJ2j-aBly5QN$pn-4o;XDI6+umTN{FhfOMJQ4z)7H0$MSCWqFS1O_9f4I{ z=u9q@nbXhlV(gs)VCR>fMZ<j`EO^$_c@e*OZqFTyR0vpAm25WKo6Tg1G2sEnRDh~E zHL&nUQ*g?c7iD1CJq^=Y>gk+ynP#lQTF~)4@2fZZ`kr$grv`wg#SNwzjDWe6WFfc^ zybqxVc3{I41}ds*5DZ7A1Nh(U0B(%>@Kx!oK8)AewkO&FEO0C|Z6JFd-1n=LQ@Wm1 zfCh<R1@0ZH!K&MX7>W-}%I)k57$_;h(we$yK9`eOSgXbXfc1YsN5R{c=KTiQmxU}9 z0!D!T>j~_?d45V{(~HZ`W^to;q5x}_H$Y_iVmp^I@aRZ!9oW-+5I_C<=b^F{1QeuC zqV3&_xOXyuA`HZ$SK(*9Y4oShzk$q!6A*C_O=r*&PotxD<IGD>_8%(&^t_ObMyMjB zAz=)$cWo7(Xk2vHI*^UNgUrviVrgY1pa7u|C}MqmI-?NTueXe<a;tB3&{xn}RbLgp zRXqQ84BtB&LoDUp-Ogwrif}lLU^t9WD2QMvgg`ig((*;TqY~;jS~`@v(^|dmtI{ge zDqvO7dU+7LPh7*Fdxvms_|8Cl5`cnJG)GloW`%$B)lPn5_Zg5)1eWHu(gaDwJ&U8! zB-#hl=ui6?$oNQl775QsJY#Wf#KZY`8kf2{u)60jC@C!~__?K0sk@V305Cr}_K*-i z6!K#t6UQ-=KRXB!bckgk7ZKOMHN>zF+{$?P(9P3mJ@+)+`c;6n;{f_&vAbX(PuE{t zubWRkc@$)v;6{LMPB?Q4N&r@Yp{&I~#^P4SBAK;NC9D`U_MJv>pa=1xVGJb_7`lBM zL&@Yt&h>BTyl~ucsB1`mMTEN@<`1oe5vmc=jGZ6Fh#Ha(6^pz$mM6P^{Oyx_UJiRB z)}zq#>@YD;3;z7LF=UkyJ}u-{5v~@3lTOO{G^LF2Rf^enY3I7mspI?~&_TDLP*9Ya P00000NkvXXu0mjfh524+
index 1f23c74cf28e36acad285ff232eb4eaa3d3c6b62..6241ca7b5aa5410d274b4099a6a8087fb83d3d4a GIT binary patch literal 1933 zc$@)^2Xgp{P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*l9 z1sE^@=Lhxx00#|8L_t(o!=0CDY*g13$A9PCH{S6Iwh2%$HA?~tn-T+|Y*iA%lBR*? z11%w6qNXZEX;h_AtEQ3Krm6xFjVfhPQE`fzq9kh55G4>KAR&;l1sDi8IA-yJU5pvq z<C*cidH42%Jq8Cb;43}Need2m|NlAny#IMexXGCR!HJM(bc9h^r9zcanWiGSMx{$d zBC4`aMRpjKPgH5%JhQ@b8$$+Kob&$iNk-(CMrD;zK~+!zRl$g0RM6hv-uXX7<S#}E zS67XR4w}HUe}zq^xMfDAT1E0z1XVDqz2Gn;q!f5c$Os}z5=S&3O>&Ehtgo&bb6`*e zX1sg!DI;u9l}uG}MnqIWMX1OPF|{CriX4yfOhbkW0gjFoTu25qbX#iT0o_hojPj?$ z_l$n+m`MDV2~62?c!3(-til~Vp7(@1WQ4`#**sX9!-#BeK(D@zrwB&_K8rzF{r*iq z*!bw{04VJtp?1o9_}3+H*IS3njPh3%mZ~UeuQOCwHF^lkN9Ns5e(`19Niw#qWo)9c zPH--fNJ>{%*KhCK5^PTI>F0`dZng_ps45t>IIEzJdyBJf8ysNl<yx}48!0L&84D1N zM)CdRr1xh8X4xTvegrD3_h$#z&R3BfEa1SYBgZJey0e(U3}<~%gBpW#4pl`!Lgq^3 zH9bke$iTWefpggOWi1QKvKjOc1?T!M>l}%U+|cQ{OUyM#klP(8PK5HlC01}EI0dJ| zvhu8(;xwME<=BBeG@YxXBhrR*j>3{*j2bzLF@6yv+EaidVYAs*_2c_Ko%8H?)@6hN zB)o#cOkrNQeCER4rSsQ{^n^u3K!j)R8j6&SBcpQWHNedc=lJ*EU#0fMkpT&={K>OS zzi%M`YtOq^GW=M(i2Qz2)##+BD!<7uDS768J<GC|*IYVy=}A{}HnBj7Kl}%>r!VO< zdh+N2syF<Ol%MPemXkLG5Mt4ezGub5%KPTe4|i){JkMTn?mgg;7Yc=bT2@{T&bjO9 zLI#lA-Oag!@AMI<I~C?{FTa2df*!V_%w6;d-&yp13QL9o&=G0li@iJ9x%F*EjQMt- zy`dpxcD^@zZ%68fkAHsli064;Cg7a4B68!>ph1tP-H8Nmz4}rgIKYqAJjax(x&8L% z7Zx*b@p7sbJVYoXv)|gRe2+ct{-YxDLOKZt1n=De!2Vqya{1E#t`w{XzIP4y)gvoA z=bC3DG7Z+cHo-ljxBF)Och|P7I0*}vJvOK}bWVXc&B0^0MIhP{p}FB~-~I4W733F{ z42nQSmLah2-ZTMsD}QRc*wXL5XlU7>HLB24taAn0ll(V3egWs`PV}#;-HF(s38;W| z&S@%@YDguMLa*>3y(%Ei^{9a*=#JwRjv_C=pr4VZ^L6;i?m-bqT8FiWd1|7q_kDj- zJQnk!(P*qS*6o^OE~7Q(OKZ%hIcE9H8&BKpCz((=k-a;%_JR7zB=N2&6YidY$dz=m z)^h6T0mA$DP%&ZhbqRz!eU5he)|>n`?;Lu#BMc1jEG}Wtr>CxaHSXoj5OE-ej;s<U zbPi{xD)X1D;Ddi|>@&1?$5zhNoM8OqY2@Y?a;c?>n(!eamoBns#p)YI;B+*Fwa$0| zGyX$Oztsh^*BerAs7Rg)7=_lR4qiO!@!aC&G@kpKBl~vsZNE@|h70v)t^pZYG46&0 zj>QeWcxtY@`q9SY`rxWr;utSDdNYGBBMAyJJXS5bpMv6{T)fcGPxI5VJi2lsRr4QW z>a2NqUI>81@g2l=Z^A$IDQCX;n4FUzqe1e<pXIuKXC}DgDpF}woT`Ws!5HEBX=OZK zSp-1j(nT(}wqUI#zp$A6qM>AF^)KP6#uFs}yp&<3rQkqtD2|rqW;dYz%DSBs!0j_e zi;U1iqPGWlVq6hVPAH}<J9N{G_ru!>z58=YN=p%I`=tGHTN?u^q5H*x8Ygb0wXP{} zPOQUO2i7^NPhV#BC-r>T&`EulKOliX1aQbVG{-rIxhehaZ`R5Ks}CbmB`~b#Q(6!a zBEDsNW0dga1g(jHwq!umw{-Xck))+Q=5suf;H$bCCZGF=%)I=5#VsC>BeyCX=H;FD zsPIP>`L61fcFd%E2NkkB;g0MOxgkTy2weeOO8VS=@gUX5)({#!39dSV)|QrAh(J1A z+p3$)q9?W^5)ot;NT^3RdlXav>!34bX-irzB`wjE#W}&Mp|bfPS#9Ttbav6%(LrZ> zJDt(!DY;z<^)~GGJaJP*<Y%g~+LLtCDi{@K(upddMx7B6PaH*lgi+D6Fa7%Sr{Bo& zW7ZcH-?v>d*kY3P%5Gys%8bey6<Mk(lU0zbI_2~+#f{3FqGsJ!E2r0f)6V|^fC11j Tu*Upt00000NkvXXu0mjfY>u!A
index f7567a7b98c76cc8e0ef78cbc6eb9f2b0949c4c2..e412e81d3ab7b98e24f34a5d239e659d1b8a4015 GIT binary patch literal 2077 zc$@(p2;%pNP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*n% z2op3Lz|#u=00*5(L_t(o!=0CXjFi<C#((GB_nn=OWj|QiU0CI-2#Q1nqAL`w(6luz zm{z4pHHv@rBU-hssZEXA^fRs4`ju!+n~I?t)W%TTYKhTcTNPBaE(#0Vb#YnP71&*N zXLe?1=DnwX%+A0lB5;zMxq0ur_kGTDp8MQ;g-?k~|Nd?mIBjz(*Q(I&R2Hg8%Bf^j zWLQ;RRgo8*%FC+sufJ%P=OjXoH@NKC?dLd=+nma^P6bs#1yltmf>S{!ekb~mi^zjc z=~&l3GkwYc7CzJAYQ$DKm31mory{6=Q=RxYObV6yKna~7qU15s5oM4YROFs@?K59L zB>;>6^51Ve;a*j#Q5AC{q6#X)tW?PP^)Y5816pewF%=?=ks|ERN9-N<bY>&QO$MCu z>undzc=#QW><I%nZ^O3b>U6yd(@L3_=nkFm<<<mWYEIIY2#%Z8|FT6o(h>g|gO=W{ zkFNgX6~6~SIUEXI=WV2LOaSwr*w*5dKd7)$MJZ<;Q{mbfleqHq+LO^2?{)7Ww&5mb z=lZ$@vs^AOnM~%cvo}QR%m1lL#hWd)h!v`WQ;&HCH7=YSKk1JH%pU3@G2TaGQ`2mK zbUIC;kU!_y#gSX}CQ%iDIqSA2BJVF%kt7~4Fg21+`SID4Ih8P90ClKym>H^yfQ0S{ z^IGl{;q=Jcvd9cyZr-z^CBZ3&D4126HzOBIg}X2Liu+gzQscvub7Adt@q&q93Z}xU z)_7&UgZ+KH__wEs#cDXW{bFX%TTlXDEb#i~P3-OIB8=6reC2BD8=HvDT}s!+MxNOv zWFw_9R>#3hzV+FEE&JhI*2X#jf{v?bs1ZKb(Q)UB&CQpdCQ_nBL_mbL)M?~f&LlSH zB1VP>+49nJ1YwMSZ`#P(_0Iz^Iy}Tbp8ONpOqyhB5{s5Dr@pZXSJ%w`i*IG?laDf< z9YaLOFaGA1NhAAKU%zEf=cDa2@`0+{QP<S;{V!+_s|FsnGI`}rra!@0q+~Du1yVZ` z5haR>RZMs9>>xXq!6wRf|6Mn;cK!3@#xlI$`7Zff$p-Ft;Lj9l?WSLTz$;?55qL8Q z!|;Zd)>bgHWBEc1NR5xP=Z&Y)6}J(DA%*;SiJ^&j;^DiG2oJ0DhYlU!Kz|?JdsLM~ zGDUr;EUgQczA{q0=DOE<-qs)pY5+6u<!HfFH9(_0s!ABfssN4*9U@s<M?=#T8c%Dk z8vCGYCxZw2D`3M|4FF5(0=(H39#Z91AV+6(Y()#IN_H$=mHk_<Ze}bq%Jk37<BZw! zC>AOvNALT)7)y_ms;%SZpFL1{udT-6y$$-ve^pOzRVj^4%@frs#j}q;0%n}KU=g*G z>M>v1jRy}7(AU$2sxp=trLn1+on`gGLW8fL6aZDn(4h~HWZ1o{w1g+sGk;+_-h4#^ zAMWd=w|iFwY&@B)nrl|v5qY~%E800B07~<;=|{Z&tu2@tnbE`4HB3fCDk|Qydnaaw zi13};e}i+?8(2f2c(Zyvn$AxyzknH{N)U#X=RLdM1K?}d-++kVf}oP|j<>f~YCfg4 zjgM+f1-zMQu~^(&%;$v(<3T1|K+H;R;EBew1Py1PssurZnbFYH%)UL{IOkZfXh}uo zenJDi-JLiWaM@LBNTfc#k>$PNJrWcOh41a}@Bc{{1XBUaX&BE*JjDc?MU)-!vq;Qe z&0JAj5FjE9ANsIDaV%ciFM^<&=6Ev2%(?R`%kSveKOPa8NwDB4o__Q4kq%%|;IW)T zZ#jSML)oBqv50{<M&eD(8=cC1s)Vs>AGqd*9}!QK1QtwqM7a!YGv|EF8_KaeUBr7U zDP!?p>8u)EzVseP@eviNRRO1PaNh_IiZb;mG1b=9(|Y=hBSsU(s%kxB&RH}yPdz4p zce0Lx1bXbV)h$b(;CC;61JjiV7$T7fPxXv&<#<VyX2$$Q7tt_zO64^dgs3V}6j58( zz_jVJD`UCsFOc8yGO7W6xjf5<b9A;X`Q&4{-t$ro*mf0}<5Wyl#EIaXaOc7nuA9?% z!v0b0dzbuuE1A;V3<iRs7z6$N_K8O1f3SSqOjbtTh9X0}H;c@Oyz$ew2Kf2g0}Nyf zCw4L#>?4^>5>F;cB;v#q31Z0<wGEAOTqm?!mv@@j)!y5_$V|Lp-oTr&ZubytUhd_& zy`%JIjt?Xf0Sx(w=a?DpQ{iuVtV_PQW*Z{y0#iyyX(=tmf@f1-nvS6y2XhgF`G|DE zGg62c&U<>t3Tz+Fv8%h21$&;SrnatXbIWG4$cfg`{r05`RQQ#Od|vg)b<CCT4l2Y0 zVOk<26*@vEWFk0}FL3UGH(2-1jf6AKfeE8Rgo6VEC%{0Nu79rE=PtW`6C%TcECC5i z##wSu0ldLz(KDF$9LjsrMUR=_)iJ044dR1)7#__qIx@oO;lqrk(>vv454yp<n}a~? zJQ4Y>s;mj5d}$S&ia8Z=6Zc1TYEDD~F&YcQoRRLi`}Wsvc_djF^94~U6nsWb^~4>& zf3tHUEl%Y|6<Mh&3sjJ!Zp!5{Wu3}nqHgW3s~2^Bbe{hMd>0Yd071^y00000NkvXX Hu0mjfB@OMk
new file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2bc8d43e6508c29b4b28ea144834ee2dc231583a GIT binary patch literal 220 zc%17D@N?(olHy`uVBq!ia0vp^AT}ol8<6B)wpSQPF%}28J29*~C-V}>VN3FMcVYMs zf(!O8pA1r4;1O92R4fd_j105pNB{-dOFVsD+3&K63UlddFOKU13dMN3IEF}EPMvU& z_kaNhvu{|_U-b`u@7SZ-KXo3Ro78#2=gfo_|IocZO+*+hU+6F>bxtsGc<ZwN)ij2N z<gI!cZ|w@1&)Z*owZ5j4+2h!sXP<6fS|=w~e7yE>?P+#nOAF>oaZ!+S89ZJ6T-G@y GGywq3ibt~m
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..64d296b71140fb05da3077395c01be5ce287c3bb GIT binary patch literal 199 zc%17D@N?(olHy`uVBq!ia0vp^AT}ol8<6B)wpSQPF%}28J29*~C-V}>VN3FMcVYMs zf(!O8pA1r4;1O92R4fd_j105pNB{-dOFVsD+3&K63bSeFm2TM#6ms`;aSV~ToNQud z_V2s{OG1)@&<2N0H<gY5Giun_*xLRV2%n#0dHBGA0}7p|UEE~yj$|q+3#B=1ZrzaX k<KuJUyXh`#!#lhT=8Jg`uReHa2hd0cPgg&ebxsLQ0Cs3Q`v3p{
new file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c594db71e2222fbd22f80832bf0797b34b4432b4 GIT binary patch literal 210 zc%17D@N?(olHy`uVBq!ia0vp^AT}ol8<6B)wpSQPF%}28J29*~C-V}>VN3FMcVYMs zf(!O8pA1r4;1O92R4fd_j105pNB{-dOFVsD+3&K63bP9wOU=0k6bkZmaSV~T+}nSU z_kaNpQ~!$f>n6XkXSCiqe@m~<QLgyp2Un{3zX>(uO11C0c7934Wd@Vgsk04_l^siu x310Q;1Vg3U=Czd}teb=GPYo2T&u0D1aK%Mp&87Ocu|U%qJYD@<);T3K0RUgJMGgP}
--- a/libgui/src/m-editor/file-editor-interface.h +++ b/libgui/src/m-editor/file-editor-interface.h @@ -61,8 +61,6 @@ virtual void set_focus () = 0; - virtual void connect_visibility_changed (void) = 0; - public slots: virtual void request_new_file (const QString& command = QString ()) = 0; virtual void request_new_script (const QString& command = QString ()) = 0;
--- a/libgui/src/m-editor/file-editor-tab.cc +++ b/libgui/src/m-editor/file-editor-tab.cc @@ -26,7 +26,6 @@ #ifdef HAVE_QSCINTILLA -#include <Qsci/qsciapis.h> #if defined (HAVE_QSCI_QSCILEXEROCTAVE_H) #define HAVE_LEXER_OCTAVE #include <Qsci/qscilexeroctave.h> @@ -54,13 +53,14 @@ #include "debug.h" #include "octave-qt-link.h" +#include "version.h" // Make parent null for the file editor tab so that warning // WindowModal messages don't affect grandparents. file_editor_tab::file_editor_tab (const QString& directory_arg) { QString directory = directory_arg; - + _lexer_apis = 0; _app_closing = false; // Make sure there is a slash at the end of the directory name @@ -70,7 +70,14 @@ _file_name = directory; - _edit_area = new QsciScintilla (this); + _edit_area = new octave_qscintilla (this); + // Connect signal for command execution to a slot of this tab which in turn + // emits a signal connected to the main window. + // Direct connection is not possible because tab's parent is null. + connect (_edit_area, + SIGNAL (execute_command_in_terminal_signal (const QString&)), + this, + SLOT (execute_command_in_terminal (const QString&))); // Leave the find dialog box out of memory until requested. _find_dialog = 0; @@ -99,9 +106,6 @@ _edit_area->setMarginType (3, QsciScintilla::SymbolMargin); _edit_area->setFolding (QsciScintilla::BoxedTreeFoldStyle , 3); - //highlight current line color - _edit_area->setCaretLineBackgroundColor (QColor (245, 245, 245)); - // other features _edit_area->setBraceMatching (QsciScintilla::StrictBraceMatch); _edit_area->setAutoIndent (true); @@ -165,6 +169,12 @@ } void +file_editor_tab::execute_command_in_terminal (const QString& command) +{ + emit execute_command_in_terminal_signal (command); // connected to main window +} + +void file_editor_tab::set_file_name (const QString& fileName) { // update tracked file if we really have a file on disk @@ -212,6 +222,9 @@ void file_editor_tab::update_lexer () { + if (_lexer_apis) + _lexer_apis->cancelPreparation (); // stop preparing if apis exists + QsciLexer *lexer = _edit_area->lexer (); delete lexer; lexer = 0; @@ -252,29 +265,57 @@ { lexer = new QsciLexerDiff (); } + else if (_file_name.isEmpty () + || _file_name.at (_file_name.count () - 1) == '/') + { // new, no yet named file: let us assume it is octave +#if defined (HAVE_LEXER_OCTAVE) + lexer = new QsciLexerOctave (); +#elif defined (HAVE_LEXER_MATLAB) + lexer = new QsciLexerMatlab (); +#else + lexer = new QsciLexerBash (); +#endif + } else - { - // FIXME -- why should the bash lexer be the default? + { // other or no extension lexer = new QsciLexerBash (); } } - if (lexer) + _lexer_apis = new QsciAPIs(lexer); + if (_lexer_apis) { - QsciAPIs *apis = new QsciAPIs(lexer); - if (apis) - { + // get path to prepared api info + QDesktopServices desktopServices; + QString prep_apis_path + = desktopServices.storageLocation (QDesktopServices::HomeLocation) + + "/.config/octave/" + QString(OCTAVE_VERSION) + "/qsci/"; + _prep_apis_file = prep_apis_path + lexer->lexer () + ".pap"; + + if (!_lexer_apis->loadPrepared (_prep_apis_file)) + { // no prepared info loaded, prepare and save if possible + + // create raw apis info QString keyword; QStringList keyword_list; - int i; - for (i=1; i<=3; i++) // load the first 3 keyword sets + int i,j; + for (i=1; i<=3; i++) // test the first 5 keyword sets { keyword = QString(lexer->keywords (i)); // get list keyword_list = keyword.split (QRegExp ("\\s+")); // split - for (i = 0; i < keyword_list.size (); i++) // add to API - apis->add (keyword_list.at (i)); + for (j = 0; j < keyword_list.size (); j++) // add to API + _lexer_apis->add (keyword_list.at (j)); } - apis->prepare (); + + // dsiconnect slot for saving prepared info if already connected + disconnect (_lexer_apis, SIGNAL (apiPreparationFinished ()), 0, 0); + // check whether path for prepared info exists or can be created + if (QDir("/").mkpath (prep_apis_path)) + { // path exists, apis info can be saved there + connect (_lexer_apis, SIGNAL (apiPreparationFinished ()), + this, SLOT (save_apis_info ())); + } + _lexer_apis->prepare (); // prepare apis info } } @@ -284,6 +325,33 @@ _edit_area->setLexer (lexer); + // fix line number width with respect to the font size of the lexer + if (settings->value ("editor/showLineNumbers", true).toBool ()) + auto_margin_width (); + else + _edit_area->setMarginWidth (2,0); + +} + +void +file_editor_tab::save_apis_info () +{ + _lexer_apis->savePrepared (_prep_apis_file); +} + +QString +file_editor_tab::comment_string (const QString& lexer) +{ + if (lexer == "octave" || lexer == "matlab") + return QString("%"); + else if (lexer == "perl" || lexer == "bash" || lexer == "diff") + return QString("#"); + else if (lexer == "cpp") + return ("//"); + else if (lexer == "batch") + return ("REM "); + else + return ("%"); // should never happen } // slot for fetab_set_focus: sets the focus to the current edit area @@ -672,6 +740,9 @@ void file_editor_tab::do_comment_selected_text (bool comment) { + QString comment_str = comment_string (_edit_area->lexer ()->lexer ()); + _edit_area->beginUndoAction (); + if (_edit_area->hasSelectedText ()) { int lineFrom, lineTo, colFrom, colTo; @@ -680,25 +751,40 @@ if (colTo == 0) // the beginning of last line is not selected lineTo--; // stop at line above - _edit_area->beginUndoAction (); - for (int i = lineFrom; i <= lineTo; i++) { if (comment) - _edit_area->insertAt ("%", i, 0); + _edit_area->insertAt (comment_str, i, 0); else { QString line (_edit_area->text (i)); - if (line.startsWith ("%")) + if (line.startsWith (comment_str)) { - _edit_area->setSelection (i, 0, i, 1); + _edit_area->setSelection (i, 0, i, comment_str.length ()); _edit_area->removeSelectedText (); } } } - - _edit_area->endUndoAction (); + //set selection on (un)commented section + _edit_area->setSelection (lineFrom, 0, lineTo, _edit_area->text (lineTo).length ()); } + else + { + int cpline, col; + _edit_area->getCursorPosition (&cpline, &col); + if (comment) + _edit_area->insertAt (comment_str, cpline, 0); + else + { + QString line (_edit_area->text (cpline)); + if (line.startsWith (comment_str)) + { + _edit_area->setSelection (cpline, 0, cpline, comment_str.length ()); + _edit_area->removeSelectedText (); + } + } + } + _edit_area->endUndoAction (); } void @@ -1088,8 +1174,11 @@ update_lexer (); - QFontMetrics lexer_font_metrics (_edit_area->lexer ()->defaultFont (0)); - + //highlight current line color + QVariant default_var = QColor (240, 240, 240); + QColor setting_color = settings->value ("editor/highlight_current_line_color", + default_var).value<QColor> (); + _edit_area->setCaretLineBackgroundColor (setting_color); _edit_area->setCaretLineVisible (settings->value ("editor/highlightCurrentLine", true).toBool ()); @@ -1113,27 +1202,56 @@ _edit_area->setAutoCompletionReplaceWord (settings->value ("editor/codeCompletion_replace",false).toBool ()); - + _edit_area->setAutoCompletionCaseSensitivity + (settings->value ("editor/codeCompletion_case",true).toBool ()); _edit_area->setAutoCompletionThreshold (settings->value ("editor/codeCompletion_threshold",2).toInt ()); } else _edit_area->setAutoCompletionThreshold (-1); + if (settings->value ("editor/show_white_space",false).toBool ()) + if (settings->value ("editor/show_white_space_indent",false).toBool ()) + _edit_area->setWhitespaceVisibility (QsciScintilla::WsVisibleAfterIndent); + else + _edit_area->setWhitespaceVisibility (QsciScintilla::WsVisible); + else + _edit_area->setWhitespaceVisibility (QsciScintilla::WsInvisible); + if (settings->value ("editor/showLineNumbers", true).toBool ()) { _edit_area->setMarginLineNumbers (2, true); - _edit_area->setMarginWidth (2, lexer_font_metrics.width ("9999")); + auto_margin_width (); + connect (_edit_area, SIGNAL (linesChanged ()), + this, SLOT (auto_margin_width ())); } else { _edit_area->setMarginLineNumbers (2, false); - _edit_area->setMarginWidth (2, 0); + disconnect (_edit_area, SIGNAL (linesChanged ()), 0, 0); } - _long_title = settings->value ("editor/longWindowTitle", false).toBool (); + _edit_area->setAutoIndent + (settings->value ("editor/auto_indent",true).toBool ()); + _edit_area->setTabIndents + (settings->value ("editor/tab_indents_line",false).toBool ()); + _edit_area->setBackspaceUnindents + (settings->value ("editor/backspace_unindents_line",false).toBool ()); + _edit_area->setIndentationGuides + (settings->value ("editor/show_indent_guides",false).toBool ()); - update_window_title (false); + _edit_area->setTabWidth + (settings->value ("editor/tab_width",2).toInt ()); + + _long_title = settings->value ("editor/longWindowTitle", false).toBool (); + update_window_title (_edit_area->isModified ()); + +} + +void +file_editor_tab::auto_margin_width () +{ + _edit_area->setMarginWidth (2, "1"+QString::number (_edit_area->lines ())); } void
--- a/libgui/src/m-editor/file-editor-tab.h +++ b/libgui/src/m-editor/file-editor-tab.h @@ -28,9 +28,10 @@ #include <QFileSystemWatcher> #include <QSettings> #include <QFileInfo> -#include <Qsci/qsciscintilla.h> +#include <Qsci/qsciapis.h> #include "find-dialog.h" +#include "octave-qscintilla.h" class file_editor; @@ -102,6 +103,8 @@ void file_has_changed (const QString& fileName); + void execute_command_in_terminal (const QString& command); + signals: void file_name_changed (const QString& fileName, const QString& toolTip); @@ -112,6 +115,7 @@ void editor_check_conflict_save (const QString& saveFileName, bool remove_on_success); void run_file_signal (const QFileInfo& info); + void execute_command_in_terminal_signal (const QString&); protected: @@ -137,6 +141,12 @@ void handle_save_file_as_answer_close (const QString& fileName); void handle_save_file_as_answer_cancel (); + // When apis preparation has finished and is ready to save + void save_apis_info (); + + // When the numer of lines changes -> adapt width of margin + void auto_margin_width (); + private: enum editor_markers @@ -169,13 +179,14 @@ int check_file_modified (); void do_comment_selected_text (bool comment); + QString comment_string (const QString&); void add_breakpoint_callback (const bp_info& info); void remove_breakpoint_callback (const bp_info& info); void remove_all_breakpoints_callback (const bp_info& info); void center_current_line (); - QsciScintilla *_edit_area; + octave_qscintilla *_edit_area; QString _file_name; QString _file_name_short; @@ -189,6 +200,9 @@ find_dialog *_find_dialog; bool _find_dialog_is_visible; QRect _find_dialog_geometry; + + QsciAPIs *_lexer_apis; + QString _prep_apis_file; }; #endif
--- a/libgui/src/m-editor/file-editor.cc +++ b/libgui/src/m-editor/file-editor.cc @@ -57,17 +57,19 @@ { QSettings *settings = resource_manager::get_settings (); + // Have all file editor tabs signal what their file names are. editor_tab_map.clear (); + emit fetab_file_name_query (0); - if (settings->value ("editor/restoreSession", true).toBool ()) - { - // Have all file editor tabs signal what their file names are. - emit fetab_file_name_query (0); - } + // save file names (even if last session will not be restored next time) QStringList fetFileNames; for (editor_tab_map_const_iterator p = editor_tab_map.begin (); p != editor_tab_map.end (); p++) - fetFileNames.append (p->first); + { + QString file_name = p->first; + if (!file_name.isEmpty () && file_name.at (file_name.size () - 1) != '/') + fetFileNames.append (p->first); // do not append unnamed files + } settings->setValue ("editor/savedSessionTabs", fetFileNames); settings->sync (); @@ -85,20 +87,6 @@ set_focus (); } -void -file_editor::handle_visibility (bool visible) -{ - if (visible && ! isFloating ()) - focus (); -} - -void -file_editor::connect_visibility_changed (void) -{ - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility (bool))); -} - // set focus to editor and its current tab void file_editor::set_focus (void) @@ -306,7 +294,7 @@ tr ("Octave Editor"), tr ("Could not open file %1 for read:\n%2."). arg (openFileName).arg (result), - QMessageBox::Ok, 0); + QMessageBox::Ok, this); msgBox->setWindowModality (Qt::NonModal); msgBox->setAttribute (Qt::WA_DeleteOnClose); @@ -439,6 +427,7 @@ file_editor::handle_edit_file_request (const QString& file) { request_open_file (file); + set_focus (); } void @@ -802,10 +791,10 @@ tr ("&Remove All breakpoints"), _tool_bar); QAction *comment_selection_action - = new QAction (tr ("&Comment Selected Text"), _tool_bar); + = new QAction (tr ("&Comment"), _tool_bar); QAction *uncomment_selection_action - = new QAction (tr ("&Uncomment Selected Text"), _tool_bar); + = new QAction (tr ("&Uncomment"), _tool_bar); QAction *find_action = new QAction (QIcon (":/actions/icons/search.png"), tr ("&Find and Replace"), _tool_bar); @@ -953,10 +942,10 @@ editor_widget->setLayout (vbox_layout); setWidget (editor_widget); - connect (parent (), SIGNAL (new_file_signal (const QString&)), + connect (main_win (), SIGNAL (new_file_signal (const QString&)), this, SLOT (request_new_file (const QString&))); - connect (parent (), SIGNAL (open_file_signal (const QString&)), + connect (main_win (), SIGNAL (open_file_signal (const QString&)), this, SLOT (request_open_file (const QString&))); connect (new_action, SIGNAL (triggered ()), @@ -1041,7 +1030,7 @@ resize (500, 400); setWindowIcon (QIcon (":/actions/icons/logo.png")); - setWindowTitle ("Editor"); + set_title ("Editor"); //restore previous session if (settings->value ("editor/restoreSession", true).toBool ()) @@ -1080,8 +1069,11 @@ this, SLOT (handle_mru_add_file (const QString&))); connect (f, SIGNAL (run_file_signal (const QFileInfo&)), - parent (), SLOT (run_file_in_terminal (const QFileInfo&))); + main_win (), SLOT (run_file_in_terminal (const QFileInfo&))); + connect (f, SIGNAL (execute_command_in_terminal_signal (const QString&)), + main_win (), SLOT (execute_command_in_terminal (const QString&))); + // Signals from the file_editor non-trivial operations connect (this, SIGNAL (fetab_settings_changed (const QSettings *)), f, SLOT (notice_settings (const QSettings *))); @@ -1179,4 +1171,25 @@ _tab_widget->setCurrentWidget (f); } +void +file_editor::copyClipboard () +{ + QWidget * foc_w = focusWidget (); + + if(foc_w && foc_w->inherits ("octave_qscintilla")) + { + request_copy (); + } +} +void +file_editor::pasteClipboard () +{ + QWidget * foc_w = focusWidget (); + + if(foc_w && foc_w->inherits ("octave_qscintilla")) + { + request_paste (); + } +} + #endif
--- a/libgui/src/m-editor/file-editor.h +++ b/libgui/src/m-editor/file-editor.h @@ -47,8 +47,6 @@ file_editor (QWidget *p); ~file_editor (void); - void connect_visibility_changed (void); - void loadFile (const QString& fileName); QMenu *get_mru_menu (void) { return _mru_file_menu; } @@ -99,7 +97,6 @@ public slots: void focus (void); - void handle_visibility (bool visible); void request_new_file (const QString& commands); void request_new_script (const QString& commands); @@ -155,6 +152,10 @@ // Tells the editor to react on changed settings. void notice_settings (const QSettings *settings); +protected slots: + void copyClipboard (); + void pasteClipboard (); + private slots: void request_open_file (const QString& fileName, int line = -1,
--- a/libgui/src/m-editor/find-dialog.cc +++ b/libgui/src/m-editor/find-dialog.cc @@ -235,7 +235,7 @@ do_forward, line,col, true -#ifdef HAVE_FINDFIRST_MODERN +#ifdef HAVE_QSCI_VERSION_2_6_0 , true #endif );
new file mode 100644 --- /dev/null +++ b/libgui/src/m-editor/octave-qscintilla.cc @@ -0,0 +1,103 @@ +/* + +Copyright (C) 2013 Torsten + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: Torsten <ttl@justmail.de> + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef HAVE_QSCINTILLA + +#include <Qsci/qscilexer.h> + +#include "octave-qscintilla.h" +#include "file-editor-tab.h" + +octave_qscintilla::octave_qscintilla (QWidget *p) + : QsciScintilla (p) +{ } + +octave_qscintilla::~octave_qscintilla () +{ } + + +#ifdef HAVE_QSCI_VERSION_2_6_0 +// context menu requested +void +octave_qscintilla::contextMenuEvent (QContextMenuEvent *e) +{ + QMenu *context_menu = createStandardContextMenu ( ); // standard menu + + // the menu's position + QPoint global_pos, local_pos; + + if (e->reason () == QContextMenuEvent::Mouse) + { // context menu by mouse + global_pos = e->globalPos (); // global mouse position + local_pos = e->pos (); // local mouse position + } + else + { // context menu by keyboard or other: get point of text cursor + long position = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS); + long point_x = SendScintilla + (QsciScintillaBase::SCI_POINTXFROMPOSITION,0,position); + long point_y = SendScintilla + (QsciScintillaBase::SCI_POINTYFROMPOSITION,0,position); + local_pos = QPoint (point_x,point_y); // local cursor position + global_pos = mapToGlobal (local_pos); // global position of cursor + QRect editor_rect = geometry (); // editor rect mapped to global + editor_rect.moveTopLeft + (parentWidget ()->mapToGlobal (editor_rect.topLeft ())); + if (!editor_rect.contains (global_pos)) // is cursor outside editor? + global_pos = editor_rect.topLeft (); // yes, take top left corner + } + + // additional custom entries of the context menu + context_menu->addSeparator (); // separator before custom entries + + // help menu: get the position of the mouse or the text cursor + // (only for octave files) + QString lexer_name = lexer ()->lexer (); + if (lexer_name == "octave" || lexer_name == "matlab") + { + _word_at_cursor = wordAtPoint (local_pos); + if (!_word_at_cursor.isEmpty ()) + context_menu->addAction (tr ("help") + " " + _word_at_cursor, + this, SLOT (contextmenu_help (bool))); + } + + // finaly show the menu + context_menu->exec (global_pos); +} +#endif + + +// handle the menu entry for calling help +void +octave_qscintilla::contextmenu_help (bool) +{ + QString command = "help " + _word_at_cursor; + emit execute_command_in_terminal_signal (command); +} + +#endif
new file mode 100644 --- /dev/null +++ b/libgui/src/m-editor/octave-qscintilla.h @@ -0,0 +1,59 @@ +/* + +Copyright (C) 2013 Torsten + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: Torsten <ttl@justmail.de> + +#if !defined (octave_qscintilla_h) +#define octave_qscintilla_h 1 + +#include <Qsci/qsciscintilla.h> +#include <QMenu> +#include <QContextMenuEvent> + +class octave_qscintilla : public QsciScintilla +{ + Q_OBJECT + +public: + + octave_qscintilla (QWidget *p); + ~octave_qscintilla (); + +#ifdef HAVE_QSCI_VERSION_2_6_0 + virtual void contextMenuEvent (QContextMenuEvent *e); +#endif + +signals: + + void execute_command_in_terminal_signal (const QString&); + +private slots: + + void contextmenu_help (bool); + +private: + + QString _word_at_cursor; + +}; + +#endif
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -293,12 +293,11 @@ } QString icon; - foreach (QObject *obj, children ()) + foreach (octave_dock_widget *widget, dock_widget_list ()) { - QString name = obj->objectName (); - if (obj->inherits ("QDockWidget") && ! name.isEmpty ()) - { // if children is a dock widget with a name - QDockWidget *widget = qobject_cast<QDockWidget *> (obj); + QString name = widget->objectName (); + if (! name.isEmpty ()) + { // if children has a name icon = widget_icon_data[icon_set_found].path; // prefix or octave-logo if (widget_icon_data[icon_set_found].name != "NONE") icon = icon + name + ".png"; // add widget name and ext. @@ -543,35 +542,33 @@ void main_window::set_window_layout (QSettings *settings) { - restoreState (settings->value ("MainWindow/windowState").toByteArray ()); - - settings->beginGroup ("DockWidgets"); - // Restore the geometry of all dock-widgets - foreach (QObject *obj, children ()) + foreach (octave_dock_widget *widget, dock_widget_list ()) { - QString name = obj->objectName (); + QString name = widget->objectName (); - if (obj->inherits ("QDockWidget") && ! name.isEmpty ()) + if (! name.isEmpty ()) { - QDockWidget *widget = qobject_cast<QDockWidget *> (obj); + // If floating, make window from widget. + bool floating = settings->value + ("DockWidgets/" + name + "Floating", false).toBool (); + if (floating) + widget->make_window (); + else if (! widget->parent ()) // should not be floating but is + widget->setParent (this); // reparent + + // restore geometry QVariant val = settings->value (name); - widget->restoreGeometry (val.toByteArray ()); - // If floating, make window from widget. - bool floating = settings->value (name+"Floating", false).toBool (); - if (floating) - widget->setWindowFlags (Qt::Window); - - // make widget visible if desired (setWindowFlags hides widget). - bool visible = settings->value (name+"Visible", true).toBool (); + // make widget visible if desired + bool visible = settings->value + ("DockWidgets/" + name + "Visible", true).toBool (); widget->setVisible (visible); } } - settings->endGroup (); - + restoreState (settings->value ("MainWindow/windowState").toByteArray ()); restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ()); } @@ -586,24 +583,6 @@ } settings->setValue ("MainWindow/geometry", saveGeometry ()); - settings->beginGroup ("DockWidgets"); - // saving the geometry of all widgets - foreach (QObject *obj, children()) - { - QString name = obj->objectName (); - if (obj->inherits ("QDockWidget") && ! name.isEmpty ()) - { - QDockWidget *widget = qobject_cast<QDockWidget *> (obj); - settings->setValue (name, widget->saveGeometry ()); - bool floating = widget->isFloating (); - bool visible = widget->isVisible (); - settings->setValue (name+"Floating", floating); // store floating state - settings->setValue (name+"Visible", visible); // store visibility - if (floating) - widget->setWindowFlags (Qt::Widget); // if floating, recover the widget state such that the widget's - } // state is correctly saved by the saveSate () below - } - settings->endGroup(); settings->setValue ("MainWindow/windowState", saveState ()); // write the list of recent used directories QStringList curr_dirs; @@ -634,13 +613,34 @@ void main_window::copyClipboard (void) { - emit copyClipboard_signal (); + if (_current_directory_combo_box->hasFocus ()) + { + QLineEdit * edit = _current_directory_combo_box->lineEdit (); + if (edit && edit->hasSelectedText ()) + { + QClipboard *clipboard = QApplication::clipboard (); + clipboard->setText (edit->selectedText ()); + } + } + else + emit copyClipboard_signal (); } void main_window::pasteClipboard (void) { - emit pasteClipboard_signal (); + if (_current_directory_combo_box->hasFocus ()) + { + QLineEdit * edit = _current_directory_combo_box->lineEdit (); + QClipboard *clipboard = QApplication::clipboard (); + QString str = clipboard->text (); + if (edit && str.length () > 0) + { + edit->insert (str); + } + } + else + emit pasteClipboard_signal (); } // Connect the signals emitted when the Octave thread wants to create @@ -796,6 +796,9 @@ connect (file_browser_window, SIGNAL (load_file_signal (const QString&)), this, SLOT (handle_load_workspace_request (const QString&))); + connect (file_browser_window, SIGNAL (find_files_signal (const QString&)), + this, SLOT (find_files (const QString&))); + connect_uiwidget_links (); setWindowTitle ("Octave");
--- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -53,6 +53,7 @@ #include "terminal-dock-widget.h" #include "documentation-dock-widget.h" #include "octave-qt-link.h" +#include "octave-dock-widget.h" #include "find-files-dialog.h" /** @@ -249,6 +250,17 @@ documentation_dock_widget *doc_browser_window; file_editor_interface *editor_window; workspace_view *workspace_window; + QList<octave_dock_widget *> dock_widget_list () + { + QList<octave_dock_widget *> list = QList<octave_dock_widget *> (); + list.append (static_cast<octave_dock_widget *> (command_window)); + list.append (static_cast<octave_dock_widget *> (history_window)); + list.append (static_cast<octave_dock_widget *> (file_browser_window)); + list.append (static_cast<octave_dock_widget *> (doc_browser_window)); + list.append (static_cast<octave_dock_widget *> (editor_window)); + list.append (static_cast<octave_dock_widget *> (workspace_window)); + return list; + } QToolBar *_main_tool_bar; QMenu *_debug_menu;
--- a/libgui/src/module.mk +++ b/libgui/src/module.mk @@ -39,6 +39,7 @@ src/icons/graphic_logo_TerminalDockWidget.png \ src/icons/graphic_logo_WorkspaceView.png \ src/icons/help_index.png \ + src/icons/home.png \ src/icons/icons_license \ src/icons/jabber_protocol.png \ src/icons/letter_logo_DocumentationDockWidget.png \ @@ -59,6 +60,9 @@ src/icons/terminal.png \ src/icons/undo.png \ src/icons/up.png \ + src/icons/widget-close.png \ + src/icons/widget-dock.png \ + src/icons/widget-undock.png \ src/icons/zoom-in.png \ src/icons/zoom-out.png @@ -69,7 +73,8 @@ src/m-editor/moc-file-editor-interface.cc \ src/m-editor/moc-file-editor-tab.cc \ src/m-editor/moc-file-editor.cc \ - src/m-editor/moc-find-dialog.cc + src/m-editor/moc-find-dialog.cc \ + src/m-editor/moc-octave-qscintilla.cc endif octave_gui_MOC += \ @@ -86,6 +91,7 @@ src/moc-workspace-model.cc \ src/moc-workspace-view.cc \ src/moc-find-files-dialog.cc \ + src/moc-find-files-model.cc \ src/qtinfo/moc-parser.cc \ src/qtinfo/moc-webinfo.cc \ src/moc-octave-dock-widget.cc @@ -110,6 +116,7 @@ src/m-editor/file-editor-tab.h \ src/m-editor/file-editor.h \ src/m-editor/find-dialog.h \ + src/m-editor/octave-qscintilla.h \ src/main-window.h \ src/octave-gui.h \ src/octave-main-thread.h \ @@ -134,7 +141,9 @@ src/m-editor/file-editor-tab.cc \ src/m-editor/file-editor.cc \ src/m-editor/find-dialog.cc \ + src/m-editor/octave-qscintilla.cc \ src/main-window.cc \ + src/octave-dock-widget.cc \ src/octave-gui.cc \ src/octave-main-thread.cc \ src/octave-qt-link.cc \ @@ -168,8 +177,7 @@ -I$(top_srcdir)/liboctave/util \ -I$(top_builddir)/libinterp -I$(top_srcdir)/libinterp \ -I$(top_builddir)/libinterp/parse-tree -I$(top_srcdir)/libinterp/parse-tree \ - -I$(top_builddir)/libinterp/interp-core -I$(top_srcdir)/libinterp/interp-core \ - -I$(top_builddir)/libinterp/interpfcn -I$(top_srcdir)/libinterp/interpfcn \ + -I$(top_builddir)/libinterp/corefcn -I$(top_srcdir)/libinterp/corefcn \ -I$(top_srcdir)/libinterp/octave-value src_libgui_src_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
new file mode 100644 --- /dev/null +++ b/libgui/src/octave-dock-widget.cc @@ -0,0 +1,206 @@ +/* + +Copyright (C) 2012-2013 Richard Crozier +Copyright (C) 2013 Torsten <ttl@justmail.de> + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +#include <QApplication> +#include <QToolBar> +#include <QToolButton> +#include <QAction> +#include <QHBoxLayout> +#include <QLabel> +#include <QSettings> + +#include "resource-manager.h" +#include "octave-dock-widget.h" + + +octave_dock_widget::octave_dock_widget (QWidget *p) + : QDockWidget (p) +{ + + _parent = static_cast<QMainWindow *> (p); // store main window + setFeatures (QDockWidget::DockWidgetMovable); // not floatable or cloasable + + connect (this, SIGNAL (visibilityChanged (bool)), + this, SLOT (handle_visibility_changed (bool))); + + connect (p, SIGNAL (settings_changed (const QSettings*)), + this, SLOT (notice_settings (const QSettings*))); + + // the custom (extra) title bar of the widget + _dock_action = new QAction + (QIcon (":/actions/icons/widget-undock.png"), "", this); + _dock_action-> setToolTip (tr ("Undock widget")); + connect (_dock_action, SIGNAL (triggered (bool)), + this, SLOT (change_floating (bool))); + QToolButton *dock_button = new QToolButton (this); + dock_button->setDefaultAction (_dock_action); + dock_button->setFocusPolicy(Qt::NoFocus); + + QAction *close_action = new QAction + (QIcon (":/actions/icons/widget-close.png"), "", this ); + close_action-> setToolTip (tr ("Hide widget")); + connect (close_action, SIGNAL (triggered (bool)), + this, SLOT (change_visibility (bool))); + QToolButton *close_button = new QToolButton (this); + close_button->setDefaultAction (close_action); + close_button->setFocusPolicy(Qt::NoFocus); + + QHBoxLayout *h_layout = new QHBoxLayout (); + h_layout->addStretch (100); + h_layout->addWidget (dock_button); + h_layout->addWidget (close_button); + h_layout->setSpacing (0); + h_layout->setContentsMargins (6,0,0,0); + + QWidget *title_widget = new QWidget (); + title_widget->setLayout (h_layout); + setTitleBarWidget (title_widget); + + // copy & paste handling + connect (p, SIGNAL (copyClipboard_signal ()), this, SLOT (copyClipboard ())); + connect (p, SIGNAL (pasteClipboard_signal()), this, SLOT (pasteClipboard ())); +} + +octave_dock_widget::~octave_dock_widget () +{ + // save state of this dock-widget + bool floating = false; + bool visible; + QString name = objectName (); + QSettings *settings = resource_manager::get_settings (); + + settings->beginGroup ("DockWidgets"); + + if (!parent ()) + { // widget is floating, save actual floating geometry + floating = true; + settings->setValue (name+"_floating_geometry", saveGeometry ()); + } + else // not floating save docked (normal) geometry + settings->setValue (name, saveGeometry ()); + + visible = isVisible (); + settings->setValue (name+"Floating", floating); // store floating state + settings->setValue (name+"Visible", visible); // store visibility + + settings->endGroup (); + settings->sync (); +} + +// connect signal visibility changed to related slot (called from main-window) +void +octave_dock_widget::connect_visibility_changed (void) +{ + connect (this, SIGNAL (visibilityChanged (bool)), + this, SLOT (handle_visibility (bool))); + emit active_changed (isVisible ()); // emit once for init of window menu +} + + +// set the title in the dockwidgets title bar +void +octave_dock_widget::set_title (const QString& title) +{ + QHBoxLayout* h_layout = + static_cast<QHBoxLayout *> (titleBarWidget ()->layout ()); + QLabel *label = new QLabel (title); + h_layout->insertWidget (0,label); + setWindowTitle (title); +} + +// make the widget floating +void +octave_dock_widget::make_window () +{ + QSettings *settings = resource_manager::get_settings (); + + // save the docking area for later redocking + // FIXME: dockWidgetArea always returns 2 + settings->setValue ("DockWidgets/" + objectName () + "_dock_area", + _parent->dockWidgetArea (this)); + settings->sync (); + + // remove parent and adjust the (un)dock icon + setParent (0, Qt::Window); + _dock_action->setIcon (QIcon (":/actions/icons/widget-dock.png")); + _dock_action->setToolTip (tr ("Dock widget")); + + // restore the last geometry when floating + restoreGeometry (settings->value + ("DockWidgets/" + objectName ()+"_floating_geometry").toByteArray ()); +} + +// dock the widget +void +octave_dock_widget::make_widget () +{ + QSettings *settings = resource_manager::get_settings (); + + // save last floating geometry + settings->setValue ("DockWidgets/" + objectName () + "_floating_geometry", + saveGeometry ()); + settings->sync (); + + // add widget to last saved docking area + int area = settings->value ("DockWidgets/" + objectName () + "_dock_area", + Qt::TopDockWidgetArea).toInt (); + _parent->addDockWidget (static_cast<Qt::DockWidgetArea> (area), this); + + // FIXME: restoreGeometry is ignored for docked widgets and its child widget + // restoreGeometry (settings->value + // ("DockWidgets/" + objectName ()).toByteArray ()); + + // adjust the (un)dock icon + _dock_action->setIcon (QIcon (":/actions/icons/widget-undock.png")); + _dock_action->setToolTip (tr ("Undock widget")); +} + +// slot for (un)dock action +void +octave_dock_widget::change_floating (bool) +{ + if (parent()) + { + make_window (); + focus (); + } + else + make_widget (); +} + +// slot for hiding the widget +void +octave_dock_widget::change_visibility (bool) +{ + setVisible (false); + emit active_changed (false); +} + +// get focus widget +QWidget * +octave_dock_widget::focusWidget () +{ + QWidget * w = QApplication::focusWidget (); + if(w && w->focusProxy ()) w = w->focusProxy (); + return w; +}
--- a/libgui/src/octave-dock-widget.h +++ b/libgui/src/octave-dock-widget.h @@ -25,6 +25,9 @@ #include <QDockWidget> #include <QSettings> +#include <QIcon> +#include <QMainWindow> +#include <QMouseEvent> class octave_dock_widget : public QDockWidget { @@ -32,27 +35,13 @@ public: - octave_dock_widget (QWidget *p) - : QDockWidget (p) - { - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility_changed (bool))); - - connect (this, SIGNAL (topLevelChanged (bool)), - this, SLOT (top_level_changed (bool))); + octave_dock_widget (QWidget *p = 0); + virtual ~octave_dock_widget (); - connect (p, SIGNAL (settings_changed (const QSettings*)), - this, SLOT (notice_settings (const QSettings*))); - } - - virtual ~octave_dock_widget () { } - - virtual void connect_visibility_changed (void) - { - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility (bool))); - } - + virtual void connect_visibility_changed (void); + void make_window (void); + void make_widget (void); + void set_title (const QString&); signals: @@ -69,6 +58,8 @@ QDockWidget::closeEvent (e); } + QWidget * focusWidget(); + public slots: virtual void focus (void) @@ -91,6 +82,8 @@ { } + QMainWindow *main_win () { return _parent; } + protected slots: /** Slot to steer changing visibility from outside. */ @@ -99,18 +92,24 @@ if (visible) emit active_changed (true); } - - /** Slot when floating property changes */ - virtual void top_level_changed (bool floating) + /** slots to handle copy & paste */ + virtual void copyClipboard () + { + } + virtual void pasteClipboard () { - if (floating) - { - // Make a window from the widget when floating and make it - // visible again since setWindowFlags hides it. - setWindowFlags (Qt::Window); - show(); - } } + +private slots: + + void change_floating (bool); + void change_visibility (bool); + +private: + + QMainWindow *_parent; // store the parent since we are reparenting to 0 + QAction *_dock_action; + }; #endif
--- a/libgui/src/octave-gui.cc +++ b/libgui/src/octave-gui.cc @@ -105,10 +105,11 @@ else { // install translators for the gui and qt text - QTranslator gui_translator, qt_translator; - resource_manager::config_translators (&gui_translator,&qt_translator); - application.installTranslator (&qt_translator); - application.installTranslator (&gui_translator); + QTranslator gui_tr, qt_tr, qsci_tr; + resource_manager::config_translators (&qt_tr,&qsci_tr,&gui_tr); + application.installTranslator (&qt_tr); + application.installTranslator (&qsci_tr); + application.installTranslator (&gui_tr); // update network-settings resource_manager::update_network_settings ();
--- a/libgui/src/qtinfo/parser.cc +++ b/libgui/src/qtinfo/parser.cc @@ -1,21 +1,28 @@ -/* Copyright (C) 2009 P.L. Lucas - * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - */ +/* + +Copyright (C) 2009 P. L. Lucas +Copyright (C) 2012 Jacob Dawid + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: P. L. Lucas +// Author: Jacob Dawid <jacob.dawid@gmail.com> #ifdef HAVE_CONFIG_H #include <config.h>
--- a/libgui/src/qtinfo/parser.h +++ b/libgui/src/qtinfo/parser.h @@ -1,21 +1,28 @@ -/* Copyright (C) 2009 P.L. Lucas - * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - */ +/* + +Copyright (C) 2009 P.L. Lucas +Copyright (C) 2012 Jacob Dawid + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: P. L. Lucas +// Author: Jacob Dawid <jacob.dawid@gmail.com> #include <QStringList> #include <QIODevice>
--- a/libgui/src/qtinfo/webinfo.cc +++ b/libgui/src/qtinfo/webinfo.cc @@ -1,21 +1,28 @@ -/* Copyright (C) 2009 P.L. Lucas - * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - */ +/* + +Copyright (C) 2009 P. L. Lucas +Copyright (C) 2012 Jacob Dawid + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: P. L. Lucas +// Author: Jacob Dawid <jacob.dawid@gmail.com> #ifdef HAVE_CONFIG_H #include <config.h> @@ -24,6 +31,8 @@ #include "webinfo.h" #include <QVBoxLayout> #include <QHBoxLayout> +#include <QApplication> +#include <QClipboard> #include "file-ops.h" #include "help.h" @@ -211,3 +220,30 @@ _text_browser->setFont (_font_web); } +void +webinfo::copyClipboard () +{ + if (_search_line_edit->hasFocus () && _search_line_edit->hasSelectedText ()) + { + QClipboard *clipboard = QApplication::clipboard (); + + clipboard->setText (_search_line_edit->selectedText ()); + } + if (_text_browser->hasFocus ()) + { + _text_browser->copy (); + } +} + +void +webinfo::pasteClipboard () +{ + if (_search_line_edit->hasFocus ()) + { + QClipboard *clipboard = QApplication::clipboard (); + QString str = clipboard->text (); + if (str.length () > 0) + _search_line_edit->insert (str); + } +} +
--- a/libgui/src/qtinfo/webinfo.h +++ b/libgui/src/qtinfo/webinfo.h @@ -1,21 +1,28 @@ -/* Copyright (C) 2009 P.L. Lucas - * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - */ +/* + +Copyright (C) 2009 P. L. Lucas +Copyright (C) 2012 Jacob Dawid + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// Author: P. L. Lucas +// Author: 2012 Jacob Dawid <jacob.dawid@gmail.com> #include <QTextBrowser> #include "parser.h" @@ -42,6 +49,9 @@ void zoom_in (); void zoom_out (); + void copyClipboard (); + void pasteClipboard (); + private: QTextBrowser *_text_browser; QTabBar *_tab_bar;
--- a/libgui/src/resource-manager.cc +++ b/libgui/src/resource-manager.cc @@ -83,17 +83,31 @@ } void -resource_manager::config_translators (QTranslator *qt_tr,QTranslator *gui_tr) +resource_manager::config_translators (QTranslator *qt_tr, + QTranslator *qsci_tr, + QTranslator *gui_tr) { + bool loaded; + + QString qt_trans_dir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); QSettings *settings = resource_manager::get_settings (); // FIXME -- what should happen if settings is 0? + // get the locale from the settings QString language = settings->value ("language","SYSTEM").toString (); if (language == "SYSTEM") language = QLocale::system().name(); // get system wide locale + // load the translator file for qt strings - qt_tr->load("qt_" + language, - QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + loaded = qt_tr->load("qt_" + language, qt_trans_dir); + if (!loaded) // try lower case + qt_tr->load("qt_" + language.toLower (), qt_trans_dir); + + // load the translator file for qscintilla settings + loaded = qsci_tr->load("qscintilla_" + language, qt_trans_dir); + if (!loaded) // try lower case + qsci_tr->load("qscintilla_" + language.toLower (), qt_trans_dir); + // load the translator file for gui strings gui_tr->load (language, get_gui_translation_dir ()); } @@ -649,7 +663,6 @@ "dec2bin " "dec2hex " "deconv " - "default_save_options " "del2 " "delaunay " "delaunay3 " @@ -681,6 +694,7 @@ "do_braindead_shortcircuit_evaluation " "do_string_escapes " "doc " + "doc_cache_create " "doc_cache_file " "dos " "dot " @@ -851,7 +865,6 @@ "gcd " "gcf " "ge " - "gen_doc_cache " "genpath " "genvarname " "geocdf " @@ -920,6 +933,7 @@ "history " "history_control " "history_file " + "history_save " "history_size " "history_timestamp_format_string " "hold " @@ -1375,8 +1389,9 @@ "rcond " "rdivide " "re_read_readline_init_file " - "read_readline_init_file " "readdir " + "readline_re_read_init_file " + "readline_read_init_file " "readlink " "real " "reallog " @@ -1434,6 +1449,7 @@ "runlength " "runtests " "save " + "save_default_options " "save_header_format_string " "save_precision " "saveas " @@ -1441,7 +1457,6 @@ "saveimage " "saveobj " "savepath " - "saving_history " "scanf " "scatter " "scatter3 "
--- a/libgui/src/resource-manager.h +++ b/libgui/src/resource-manager.h @@ -68,7 +68,7 @@ static QString get_gui_translation_dir (void); - static void config_translators (QTranslator*, QTranslator*); + static void config_translators (QTranslator*, QTranslator*, QTranslator*); static void update_network_settings (void) {
--- a/libgui/src/resource.qrc +++ b/libgui/src/resource.qrc @@ -11,6 +11,7 @@ <file>icons/filesave.png</file> <file>icons/fileprint.png</file> <file>icons/folder_new.png</file> + <file>icons/home.png</file> <file>icons/ok.png</file> <file>icons/redo.png</file> <file>icons/reload.png</file> @@ -55,5 +56,8 @@ <file>icons/graphic_logo_HistoryDockWidget.png</file> <file>icons/graphic_logo_WorkspaceView.png</file> <file>icons/graphic_logo_DocumentationDockWidget.png</file> + <file>icons/widget-close.png</file> + <file>icons/widget-dock.png</file> + <file>icons/widget-undock.png</file> </qresource> </RCC>
--- a/libgui/src/settings-dialog.cc +++ b/libgui/src/settings-dialog.cc @@ -24,7 +24,6 @@ #include <config.h> #endif -#include "color-picker.h" #include "resource-manager.h" #include "workspace-model.h" #include "settings-dialog.h" @@ -91,12 +90,32 @@ ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor",false).toBool ()); ui->customFileEditor->setText (settings->value ("customFileEditor").toString ()); ui->editor_showLineNumbers->setChecked (settings->value ("editor/showLineNumbers",true).toBool () ); + + QVariant default_var = QColor (240, 240, 240); + QColor setting_color = settings->value ("editor/highlight_current_line_color", + default_var).value<QColor> (); + _editor_current_line_color = new color_picker (setting_color); + ui->editor_grid_current_line->addWidget (_editor_current_line_color,0,3); + _editor_current_line_color->setMinimumSize (50,10); + _editor_current_line_color->setEnabled (false); + connect (ui->editor_highlightCurrentLine, SIGNAL (toggled (bool)), + _editor_current_line_color, SLOT (setEnabled (bool))); ui->editor_highlightCurrentLine->setChecked (settings->value ("editor/highlightCurrentLine",true).toBool () ); + ui->editor_codeCompletion->setChecked (settings->value ("editor/codeCompletion",true).toBool () ); ui->editor_spinbox_ac_threshold->setValue (settings->value ("editor/codeCompletion_threshold",2).toInt ()); ui->editor_checkbox_ac_keywords->setChecked (settings->value ("editor/codeCompletion_keywords",true).toBool ()); ui->editor_checkbox_ac_document->setChecked (settings->value ("editor/codeCompletion_document",false).toBool ()); + ui->editor_checkbox_ac_case->setChecked (settings->value ("editor/codeCompletion_case",true).toBool ()); ui->editor_checkbox_ac_replace->setChecked (settings->value ("editor/codeCompletion_replace",false).toBool ()); + ui->editor_ws_checkbox->setChecked (settings->value ("editor/show_white_space",false).toBool ()); + ui->editor_ws_indent_checkbox->setChecked (settings->value ("editor/show_white_space_indent",false).toBool ()); + ui->editor_auto_ind_checkbox->setChecked (settings->value ("editor/auto_indent",true).toBool ()); + ui->editor_tab_ind_checkbox->setChecked (settings->value ("editor/tab_indents_line",false).toBool ()); + ui->editor_bs_unind_checkbox->setChecked (settings->value ("editor/backspace_unindents_line",false).toBool ()); + ui->editor_ind_guides_checkbox->setChecked (settings->value ("editor/show_indent_guides",false).toBool ()); + ui->editor_ind_width_spinbox->setValue (settings->value ("editor/indent_width",2).toInt ()); + ui->editor_tab_width_spinbox->setValue (settings->value ("editor/tab_width",2).toInt ()); ui->editor_longWindowTitle->setChecked (settings->value ("editor/longWindowTitle",false).toBool ()); ui->editor_restoreSession->setChecked (settings->value ("editor/restoreSession",true).toBool ()); ui->terminal_fontName->setCurrentFont (QFont (settings->value ("terminal/fontName","Courier New").toString()) ); @@ -117,9 +136,9 @@ QStringList items; items << QString("0") << QString("1") << QString("2"); ui->terminal_cursorType->addItems(items); - ui->terminal_cursorType->setItemText (0, "IBeam Cursor"); - ui->terminal_cursorType->setItemText (1, "Block Cursor"); - ui->terminal_cursorType->setItemText (2, "Underline Cursor"); + ui->terminal_cursorType->setItemText (0, tr ("IBeam Cursor")); + ui->terminal_cursorType->setItemText (1, tr ("Block Cursor")); + ui->terminal_cursorType->setItemText (2, tr ("Underline Cursor")); if (cursorType == "ibeam") ui->terminal_cursorType->setCurrentIndex (0); @@ -211,18 +230,24 @@ QVector<QSpinBox*> font_size (max_style); QVector<QCheckBox*> attrib_font (3 * max_style); QVector<color_picker*> color (max_style); + QVector<color_picker*> bg_color (max_style); int default_size = 10; QFont default_font = QFont (); + QColor default_color = QColor (); + QColor dummy_color = QColor (255,0,255); + for (int i = 0; i < max_style; i++) // create dialog elements for all styles { QString actual_name = lexer->description (styles[i]); QFont actual_font = lexer->font (styles[i]); description[i] = new QLabel (actual_name); description[i]->setWordWrap (true); - description[i]->setMaximumSize (180,QWIDGETSIZE_MAX); - description[i]->setMinimumSize (180,1); + description[i]->setMaximumSize (160,QWIDGETSIZE_MAX); + description[i]->setMinimumSize (160,1); select_font[i] = new QFontComboBox (); select_font[i]->setObjectName (actual_name+"_font"); + select_font[i]->setMaximumSize (180,QWIDGETSIZE_MAX); + select_font[i]->setMinimumSize (180,1); font_size[i] = new QSpinBox (); font_size[i]->setObjectName (actual_name+"_size"); if (styles[i] == 0) // the default @@ -232,6 +257,8 @@ font_size[i]->setRange (6,24); default_size = actual_font.pointSize (); font_size[i]->setValue (default_size); + default_color = lexer->defaultPaper (); + bg_color[i] = new color_picker (default_color); } else // other styles { @@ -240,7 +267,13 @@ select_font[i]->setEditText (lexer->description (0)); font_size[i]->setRange (-4,4); font_size[i]->setValue (actual_font.pointSize ()-default_size); - font_size[i]->setToolTip ("Difference to the defalt size"); + font_size[i]->setToolTip (tr ("Difference to the default size")); + if (lexer->paper (styles[i]) == default_color) + bg_color[i] = new color_picker (dummy_color); + else + bg_color[i] = new color_picker (lexer->paper (styles[i])); + bg_color[i]->setToolTip + (tr ("Background color, pink (255,0,255) means default")); } attrib_font[0+3*i] = new QCheckBox (tr("b")); attrib_font[1+3*i] = new QCheckBox (tr("i")); @@ -253,6 +286,7 @@ attrib_font[2+3*i]->setObjectName (actual_name+"_underline"); color[i] = new color_picker (lexer->color (styles[i])); color[i]->setObjectName (actual_name+"_color"); + bg_color[i]->setObjectName (actual_name+"_bg_color"); int column = 1; style_grid->addWidget (description[i], i, column++); style_grid->addWidget (select_font[i], i, column++); @@ -261,6 +295,7 @@ style_grid->addWidget (attrib_font[1+3*i], i, column++); style_grid->addWidget (attrib_font[2+3*i], i, column++); style_grid->addWidget (color[i], i, column++); + style_grid->addWidget (bg_color[i], i, column++); } // place grid with elements into the tab QScrollArea *scroll_area = new QScrollArea (); @@ -292,18 +327,19 @@ int row = 0; for (int i = 0; i < nr_of_classes; i++) { - description[i] = new QLabel (class_names.at (i)); + description[i] = new QLabel (" " + class_names.at (i)); description[i]->setAlignment (Qt::AlignRight); QVariant default_var = default_colors.at (i); QColor setting_color = settings->value ("workspaceview/color_"+class_chars.mid (i,1), default_var).value<QColor> (); color[i] = new color_picker (setting_color); - color[i]->setObjectName ("color_"+class_chars.mid (i,1)); - color[i]->setMinimumSize (30,10); - style_grid->addWidget (description[i], row,3*column); - style_grid->addWidget (color[i], row,3*column+1); + color[i]->setObjectName ("color_"+class_chars.mid (i, 1)); + color[i]->setMinimumSize (30, 10); + style_grid->addWidget (description[i], row, 3*column); + style_grid->addWidget (color[i], row, 3*column+1); if (++column == 3) { + style_grid->setColumnStretch (4*column, 10); row++; column = 0; } @@ -330,18 +366,19 @@ int row = 0; for (int i = 0; i < nr_of_classes; i++) { - description[i] = new QLabel (class_names.at (i)); + description[i] = new QLabel (" " + class_names.at (i)); description[i]->setAlignment (Qt::AlignRight); QVariant default_var = default_colors.at (i); QColor setting_color = settings->value ("terminal/color_"+class_chars.mid (i,1), default_var).value<QColor> (); color[i] = new color_picker (setting_color); - color[i]->setObjectName ("terminal_color_"+class_chars.mid (i,1)); - color[i]->setMinimumSize (30,10); - style_grid->addWidget (description[i], row,2*column); - style_grid->addWidget (color[i], row,2*column+1); + color[i]->setObjectName ("terminal_color_"+class_chars.mid (i, 1)); + color[i]->setMinimumSize (30, 10); + style_grid->addWidget (description[i], row, 2*column); + style_grid->addWidget (color[i], row, 2*column+1); if (++column == 2) { + style_grid->setColumnStretch (3*column, 10); row++; column = 0; } @@ -377,11 +414,21 @@ settings->setValue ("customFileEditor", ui->customFileEditor->text ()); settings->setValue ("editor/showLineNumbers", ui->editor_showLineNumbers->isChecked ()); settings->setValue ("editor/highlightCurrentLine", ui->editor_highlightCurrentLine->isChecked ()); + settings->setValue ("editor/highlight_current_line_color",_editor_current_line_color->color ()); settings->setValue ("editor/codeCompletion", ui->editor_codeCompletion->isChecked ()); settings->setValue ("editor/codeCompletion_threshold", ui->editor_spinbox_ac_threshold->value ()); settings->setValue ("editor/codeCompletion_keywords", ui->editor_checkbox_ac_keywords->isChecked ()); settings->setValue ("editor/codeCompletion_document", ui->editor_checkbox_ac_document->isChecked ()); + settings->setValue ("editor/codeCompletion_case", ui->editor_checkbox_ac_case->isChecked ()); settings->setValue ("editor/codeCompletion_replace", ui->editor_checkbox_ac_replace->isChecked ()); + settings->setValue ("editor/show_white_space", ui->editor_ws_checkbox->isChecked ()); + settings->setValue ("editor/show_white_space_indent", ui->editor_ws_indent_checkbox->isChecked ()); + settings->setValue ("editor/auto_indent", ui->editor_auto_ind_checkbox->isChecked ()); + settings->setValue ("editor/tab_indents_line", ui->editor_tab_ind_checkbox->isChecked ()); + settings->setValue ("editor/backspace_unindents_line", ui->editor_bs_unind_checkbox->isChecked ()); + settings->setValue ("editor/show_indent_guides", ui->editor_ind_guides_checkbox->isChecked ()); + settings->setValue ("editor/indent_width", ui->editor_ind_width_spinbox->value ()); + settings->setValue ("editor/tab_width", ui->editor_tab_width_spinbox->value ()); settings->setValue ("editor/longWindowTitle", ui->editor_longWindowTitle->isChecked()); settings->setValue ("editor/restoreSession", ui->editor_restoreSession->isChecked ()); settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value()); @@ -460,8 +507,12 @@ QSpinBox *font_size; QCheckBox *attrib_font[3]; color_picker *color; + color_picker *bg_color; int default_size = 10; QFont default_font = QFont ("Courier New",10,-1,0); + QColor default_color = QColor (); + QColor dummy_color = QColor (255,0,255); + for (int i = 0; i < max_style; i++) // get dialog elements and their contents { QString actual_name = lexer->description (styles[i]); @@ -471,6 +522,7 @@ attrib_font[1] = tab->findChild <QCheckBox *>(actual_name+"_italic"); attrib_font[2] = tab->findChild <QCheckBox *>(actual_name+"_underline"); color = tab->findChild <color_picker *>(actual_name+"_color"); + bg_color = tab->findChild <color_picker *>(actual_name+"_bg_color"); QFont new_font = default_font; if (select_font) { @@ -502,7 +554,24 @@ lexer->setDefaultFont (new_font); if (color) lexer->setColor (color->color (),styles[i]); + if (bg_color) + { + if (styles[i] == 0) + { + default_color = bg_color->color (); + lexer->setPaper (default_color,styles[i]); + lexer->setDefaultPaper (default_color); + } + else + { + if (bg_color->color () == dummy_color) + lexer->setPaper (default_color,styles[i]); + else + lexer->setPaper (bg_color->color (),styles[i]); + } + } } + lexer->writeSettings (*settings); settings->setValue (
--- a/libgui/src/settings-dialog.h +++ b/libgui/src/settings-dialog.h @@ -26,6 +26,8 @@ #include <QDialog> #include <QSettings> +#include "color-picker.h" + #ifdef HAVE_QSCINTILLA class QsciLexer; #endif @@ -57,6 +59,8 @@ void read_terminal_colors (QSettings *settings); void write_terminal_colors (QSettings *settings); + + color_picker *_editor_current_line_color; }; #endif // SETTINGSDIALOG_H
--- a/libgui/src/settings-dialog.ui +++ b/libgui/src/settings-dialog.ui @@ -32,7 +32,7 @@ <item> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> - <number>0</number> + <number>1</number> </property> <widget class="QWidget" name="tab_4"> <property name="enabled"> @@ -153,7 +153,7 @@ <item> <widget class="QRadioButton" name="general_icon_graphic"> <property name="text"> - <string>Graphic icons</string> + <string>Graphic icons</string> </property> </widget> </item> @@ -197,42 +197,323 @@ <layout class="QVBoxLayout" name="verticalLayout_6"> <item> <layout class="QVBoxLayout" name="verticalLayout_9"> + <property name="spacing"> + <number>4</number> + </property> <item> - <widget class="QCheckBox" name="editor_showLineNumbers"> - <property name="enabled"> - <bool>true</bool> + <layout class="QGridLayout" name="editor_common_settings_grid"> + <property name="spacing"> + <number>-1</number> </property> - <property name="text"> - <string>Show line numbers</string> + <item row="2" column="0"> + <widget class="QCheckBox" name="editor_ws_checkbox"> + <property name="text"> + <string>Show white space</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QCheckBox" name="editor_showLineNumbers"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Show line numbers</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="editor_longWindowTitle"> + <property name="text"> + <string>Show complete path in window title</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QCheckBox" name="editor_ws_indent_checkbox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Do not show white spaces used for indentation</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QCheckBox" name="editor_highlightCurrentLine"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Highlight current line</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <layout class="QGridLayout" name="editor_grid_current_line" rowstretch="0" columnstretch="0,0,0,0,0"> + <property name="horizontalSpacing"> + <number>12</number> + </property> + <property name="verticalSpacing"> + <number>0</number> + </property> + <item row="0" column="1"> + <widget class="QLabel" name="editor_label_cl_color"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Color</string> + </property> + </widget> + </item> + <item row="0" column="3"> + <spacer name="horizontalSpacer_11"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>80</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="4"> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="2"> + <spacer name="horizontalSpacer_12"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="2"> + <spacer name="horizontalSpacer_16"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="2"> + <spacer name="horizontalSpacer_17"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="2"> + <spacer name="horizontalSpacer_18"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <widget class="QCheckBox" name="editor_highlightCurrentLine"> - <property name="enabled"> - <bool>true</bool> + <layout class="QGridLayout" name="gridLayout_4"> + <property name="verticalSpacing"> + <number>0</number> </property> - <property name="text"> - <string>Highlight current line</string> - </property> - </widget> + <item row="0" column="3"> + <spacer name="horizontalSpacer_10"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>10</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>Indent width</string> + </property> + </widget> + </item> + <item row="2" column="4"> + <widget class="QCheckBox" name="editor_tab_ind_checkbox"> + <property name="text"> + <string>Tab indents line</string> + </property> + </widget> + </item> + <item row="0" column="4"> + <widget class="QCheckBox" name="editor_auto_ind_checkbox"> + <property name="text"> + <string>Auto indentation</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QSpinBox" name="editor_ind_width_spinbox"> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>32</number> + </property> + <property name="value"> + <number>2</number> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Tab width</string> + </property> + </widget> + </item> + <item row="0" column="6"> + <widget class="QCheckBox" name="editor_ind_guides_checkbox"> + <property name="text"> + <string>Show indentation guides</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QSpinBox" name="editor_tab_width_spinbox"> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>32</number> + </property> + </widget> + </item> + <item row="2" column="6"> + <widget class="QCheckBox" name="editor_bs_unind_checkbox"> + <property name="text"> + <string>Backspace unindents line</string> + </property> + </widget> + </item> + <item row="0" column="10"> + <spacer name="horizontalSpacer_13"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="5"> + <spacer name="horizontalSpacer_14"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>10</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="10"> + <spacer name="horizontalSpacer_20"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> </item> <item> - <widget class="QCheckBox" name="editor_longWindowTitle"> - <property name="text"> - <string>Show complete path in window title</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="editor_restoreSession"> - <property name="text"> - <string>Restore tabs from previous session on startup</string> + <widget class="Line" name="line_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> <layout class="QGridLayout" name="gridLayout_2"> + <property name="verticalSpacing"> + <number>0</number> + </property> + <item row="0" column="0"> + <widget class="QCheckBox" name="editor_codeCompletion"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Code completion</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> <item row="0" column="2"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <property name="spacing"> @@ -289,8 +570,27 @@ </layout> </item> <item row="1" column="2"> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> + <layout class="QGridLayout" name="gridLayout_3"> + <property name="verticalSpacing"> + <number>0</number> + </property> + <item row="0" column="1"> + <spacer name="horizontalSpacer_15"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>10</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0"> <widget class="QCheckBox" name="editor_checkbox_ac_keywords"> <property name="enabled"> <bool>false</bool> @@ -303,7 +603,43 @@ </property> </widget> </item> - <item> + <item row="1" column="0"> + <widget class="QCheckBox" name="editor_checkbox_ac_case"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Case sensitive</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QCheckBox" name="editor_checkbox_ac_replace"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Replace word by suggested one</string> + </property> + </widget> + </item> + <item row="0" column="3"> + <spacer name="horizontalSpacer_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="2"> <widget class="QCheckBox" name="editor_checkbox_ac_document"> <property name="enabled"> <bool>false</bool> @@ -313,8 +649,8 @@ </property> </widget> </item> - <item> - <spacer name="horizontalSpacer_8"> + <item row="1" column="3"> + <spacer name="horizontalSpacer_19"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -328,19 +664,6 @@ </item> </layout> </item> - <item row="0" column="0"> - <widget class="QCheckBox" name="editor_codeCompletion"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="text"> - <string>Code completion</string> - </property> - <property name="checked"> - <bool>false</bool> - </property> - </widget> - </item> <item row="0" column="1"> <spacer name="horizontalSpacer_7"> <property name="orientation"> @@ -351,19 +674,39 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>20</width> + <width>10</width> <height>0</height> </size> </property> </spacer> </item> - <item row="2" column="2"> - <widget class="QCheckBox" name="editor_checkbox_ac_replace"> - <property name="enabled"> - <bool>false</bool> + </layout> + </item> + <item> + <widget class="Line" name="line_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_11"> + <property name="topMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QCheckBox" name="editor_restoreSession"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> <property name="text"> - <string>Replace the rest of the actual word by suggested word</string> + <string>Restore editor tabs from previous session on startup</string> </property> </widget> </item> @@ -372,10 +715,20 @@ </layout> </item> <item> + <widget class="Line" name="line_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> @@ -385,36 +738,46 @@ </spacer> </item> <item> - <widget class="QCheckBox" name="useCustomFileEditor"> - <property name="enabled"> - <bool>true</bool> + <layout class="QVBoxLayout" name="verticalLayout_10"> + <property name="topMargin"> + <number>0</number> </property> - <property name="text"> - <string>Use custom file editor</string> + <property name="bottomMargin"> + <number>0</number> </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QLabel" name="customEditorLabel"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Command line (%f=file, %l=line):</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="customFileEditor"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>emacs</string> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="useCustomFileEditor"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Use custom file editor</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="customEditorLabel"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Command line (%f=file, %l=line):</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="customFileEditor"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>emacs</string> + </property> + </widget> + </item> + </layout> </item> </layout> </item> @@ -424,15 +787,55 @@ <attribute name="title"> <string>Editor Styles</string> </attribute> - <widget class="QTabWidget" name="tabs_editor_styles"> + <widget class="QWidget" name="verticalLayoutWidget_4"> <property name="geometry"> <rect> - <x>2</x> - <y>9</y> - <width>671</width> - <height>381</height> + <x>0</x> + <y>0</y> + <width>651</width> + <height>401</height> </rect> </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QLabel" name="label_10"> + <property name="maximumSize"> + <size> + <width>676</width> + <height>16777215</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="text"> + <string><html><head/><body><p>Select font, font size (as difference to the default size), font decoration (bold, italic, underline), textcolor and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></string> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="margin"> + <number>4</number> + </property> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabs_editor_styles"> + <property name="maximumSize"> + <size> + <width>676</width> + <height>351</height> + </size> + </property> + </widget> + </item> + </layout> </widget> </widget> <widget class="QWidget" name="tab_5"> @@ -488,22 +891,29 @@ </item> </layout> </widget> - <widget class="QWidget" name="verticalLayoutWidget_2"> + <widget class="QWidget" name="verticalLayoutWidget_3"> <property name="geometry"> <rect> <x>10</x> <y>90</y> <width>631</width> - <height>164</height> + <height>291</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout"> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="Line" name="line_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> <item> <widget class="QGroupBox" name="terminal_colors_box"> <property name="minimumSize"> <size> <width>0</width> - <height>162</height> + <height>81</height> </size> </property> <property name="title"> @@ -511,18 +921,19 @@ </property> </widget> </item> - </layout> - </widget> - <widget class="QWidget" name="verticalLayoutWidget_3"> - <property name="geometry"> - <rect> - <x>10</x> - <y>260</y> - <width>631</width> - <height>121</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="Line" name="line_5"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> <item> <spacer name="verticalSpacer_3"> <property name="orientation"> @@ -544,7 +955,7 @@ <x>10</x> <y>10</y> <width>631</width> - <height>30</height> + <height>31</height> </rect> </property> <layout class="QHBoxLayout" name="horizontalLayout_5"> @@ -568,7 +979,7 @@ <item> <widget class="QLabel" name="label_12"> <property name="text"> - <string>Font Size</string> + <string>Font size</string> </property> </widget> </item> @@ -667,24 +1078,65 @@ <attribute name="title"> <string>Workspace</string> </attribute> - <widget class="QGroupBox" name="workspace_colors_box"> + <widget class="QWidget" name="verticalLayoutWidget_6"> <property name="geometry"> <rect> - <x>19</x> - <y>19</y> + <x>10</x> + <y>8</y> <width>631</width> - <height>81</height> + <height>381</height> </rect> </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>81</height> - </size> - </property> - <property name="title"> - <string>Storage Class Colors</string> - </property> + <layout class="QVBoxLayout" name="verticalLayout_13"> + <item> + <widget class="QGroupBox" name="workspace_colors_box"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>81</height> + </size> + </property> + <property name="title"> + <string>Storage Class Colors</string> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line_8"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>1</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_6"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> </widget> </widget> <widget class="QWidget" name="tab_3"> @@ -693,25 +1145,18 @@ </attribute> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> - <widget class="QCheckBox" name="useProxyServer"> - <property name="text"> - <string>Use proxy server</string> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label_3"> + <layout class="QGridLayout" name="gridLayout_5"> + <item row="1" column="1"> + <widget class="QLabel" name="label_4"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> - <string>Proxy Type:</string> + <string>Hostname:</string> </property> </widget> </item> - <item row="0" column="1"> + <item row="0" column="2"> <widget class="QComboBox" name="proxyType"> <property name="enabled"> <bool>false</bool> @@ -728,24 +1173,34 @@ </item> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_4"> + <item row="3" column="1"> + <widget class="QLabel" name="label_6"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> - <string>Hostname:</string> + <string>Username:</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="useProxyServer"> + <property name="text"> + <string>Use proxy server</string> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="proxyHostName"> + <item row="0" column="1"> + <widget class="QLabel" name="label_3"> <property name="enabled"> <bool>false</bool> </property> + <property name="text"> + <string>Proxy Type:</string> + </property> </widget> </item> - <item row="2" column="0"> + <item row="2" column="1"> <widget class="QLabel" name="label_5"> <property name="enabled"> <bool>false</bool> @@ -755,31 +1210,7 @@ </property> </widget> </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="proxyPort"> - <property name="enabled"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_6"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Username:</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="proxyUserName"> - <property name="enabled"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="4" column="0"> + <item row="4" column="1"> <widget class="QLabel" name="label_7"> <property name="enabled"> <bool>false</bool> @@ -789,7 +1220,28 @@ </property> </widget> </item> - <item row="4" column="1"> + <item row="1" column="2"> + <widget class="QLineEdit" name="proxyHostName"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QLineEdit" name="proxyPort"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QLineEdit" name="proxyUserName"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="4" column="2"> <widget class="QLineEdit" name="proxyPassword"> <property name="enabled"> <bool>false</bool> @@ -801,6 +1253,19 @@ </item> </layout> </item> + <item> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </widget> @@ -1120,5 +1585,53 @@ </hint> </hints> </connection> + <connection> + <sender>editor_highlightCurrentLine</sender> + <signal>toggled(bool)</signal> + <receiver>editor_label_cl_color</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>184</x> + <y>86</y> + </hint> + <hint type="destinationlabel"> + <x>515</x> + <y>86</y> + </hint> + </hints> + </connection> + <connection> + <sender>editor_codeCompletion</sender> + <signal>toggled(bool)</signal> + <receiver>editor_checkbox_ac_case</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>83</x> + <y>172</y> + </hint> + <hint type="destinationlabel"> + <x>525</x> + <y>203</y> + </hint> + </hints> + </connection> + <connection> + <sender>editor_ws_checkbox</sender> + <signal>toggled(bool)</signal> + <receiver>editor_ws_indent_checkbox</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>85</x> + <y>119</y> + </hint> + <hint type="destinationlabel"> + <x>282</x> + <y>119</y> + </hint> + </hints> + </connection> </connections> </ui>
--- a/libgui/src/terminal-dock-widget.cc +++ b/libgui/src/terminal-dock-widget.cc @@ -35,7 +35,7 @@ setObjectName ("TerminalDockWidget"); setWindowIcon (QIcon(":/actions/icons/logo.png")); - setWindowTitle (tr ("Command Window")); + set_title (tr ("Command Window")); setWidget (terminal); }
--- a/libgui/src/workspace-view.cc +++ b/libgui/src/workspace-view.cc @@ -44,7 +44,7 @@ { setObjectName ("WorkspaceView"); setWindowIcon (QIcon (":/actions/icons/logo.png")); - setWindowTitle (tr ("Workspace")); + set_title (tr ("Workspace")); setStatusTip (tr ("View the variables in the active workspace.")); view->setWordWrap (false); @@ -266,3 +266,11 @@ } setToolTip (tool_tip); } + +void +workspace_view::copyClipboard () +{ + if (view->hasFocus ()) + handle_contextmenu_copy (); +} +
--- a/libgui/src/workspace-view.h +++ b/libgui/src/workspace-view.h @@ -69,6 +69,8 @@ void handle_model_changed (void); + void copyClipboard(); + private: void relay_contextmenu_command (const QString& cmdname);
--- a/libinterp/Makefile.am +++ b/libinterp/Makefile.am @@ -33,9 +33,7 @@ -I$(srcdir)/octave-value \ -I$(srcdir)/operators \ -Iparse-tree -I$(srcdir)/parse-tree \ - -Iinterp-core -I$(srcdir)/interp-core \ - -Iinterpfcn -I$(srcdir)/interpfcn \ - -Icorefcn \ + -Icorefcn -I$(srcdir)/corefcn \ -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu AM_CFLAGS += $(WARN_CFLAGS) @@ -48,11 +46,11 @@ ## $(DEF_FILES), and building those requires all the sources ## (except builtins.cc) to be available. BUILT_SOURCES = \ - interp-core/mxarray.h \ - interp-core/oct-errno.cc \ - interpfcn/defaults.h \ - interpfcn/graphics-props.cc \ - interpfcn/graphics.h \ + corefcn/mxarray.h \ + corefcn/oct-errno.cc \ + corefcn/defaults.h \ + corefcn/graphics-props.cc \ + corefcn/graphics.h \ operators/ops.cc \ parse-tree/lex.cc \ parse-tree/oct-gperf.h \ @@ -71,10 +69,10 @@ ## Files that are created during build process and installed, ## BUT not distributed in tarball. BUILT_NODISTFILES = \ - interp-core/mxarray.h \ - interp-core/oct-errno.cc \ - interpfcn/defaults.h \ - interpfcn/graphics.h \ + corefcn/mxarray.h \ + corefcn/oct-errno.cc \ + corefcn/defaults.h \ + corefcn/graphics.h \ builtin-defun-decls.h \ operators/ops.cc \ oct-conf.h \ @@ -103,7 +101,7 @@ $(BUILT_DISTFILES) octinclude_HEADERS = \ - interpfcn/graphics-props.cc \ + corefcn/graphics-props.cc \ parse-tree/oct-gperf.h \ builtins.h \ builtin-defun-decls.h \ @@ -112,13 +110,12 @@ $(PARSE_TREE_INC) \ $(PARSER_INC) \ $(OPERATORS_INC) \ - $(INTERP_CORE_INC) \ - $(INTERPFCN_INC) + $(COREFCN_INC) nodist_octinclude_HEADERS = \ - interp-core/mxarray.h \ - interpfcn/defaults.h \ - interpfcn/graphics.h \ + corefcn/mxarray.h \ + corefcn/defaults.h \ + corefcn/graphics.h \ oct-conf.h \ version.h @@ -127,8 +124,6 @@ $(OCTAVE_VALUE_SRC) \ $(PARSE_TREE_SRC) \ $(PARSER_SRC) \ - $(INTERP_CORE_SRC) \ - $(INTERPFCN_SRC) \ $(COREFCN_SRC) noinst_LTLIBRARIES = @@ -137,8 +132,6 @@ include octave-value/module.mk include operators/module.mk include template-inst/module.mk -include interp-core/module.mk -include interpfcn/module.mk include corefcn/module.mk include dldfcn/module.mk @@ -161,10 +154,10 @@ $(TEMPLATE_INST_SRC) nodist_liboctinterp_la_SOURCES = \ - interp-core/mxarray.h \ - interp-core/oct-errno.cc \ - interpfcn/defaults.h \ - interpfcn/graphics.h \ + corefcn/mxarray.h \ + corefcn/oct-errno.cc \ + corefcn/defaults.h \ + corefcn/graphics.h \ operators/ops.cc \ builtin-defun-decls.h \ builtins.cc \ @@ -181,8 +174,6 @@ octave-value/liboctave-value.la \ parse-tree/libparse-tree.la \ parse-tree/libparser.la \ - interp-core/libinterp-core.la \ - interpfcn/libinterpfcn.la \ corefcn/libcorefcn.la \ $(top_builddir)/liboctave/liboctave.la \ $(LIBOCTINTERP_LINK_DEPS) @@ -365,7 +356,7 @@ CLEANFILES = \ $(DLDFCN_PKG_ADD_FILE) \ - interpfcn/graphics-props.cc \ + corefcn/graphics-props.cc \ parse-tree/oct-parse.output DISTCLEANFILES = \
rename from libinterp/interp-core/c-file-ptr-stream.cc rename to libinterp/corefcn/c-file-ptr-stream.cc
rename from libinterp/interp-core/c-file-ptr-stream.h rename to libinterp/corefcn/c-file-ptr-stream.h
--- a/libinterp/corefcn/dassl.cc +++ b/libinterp/corefcn/dassl.cc @@ -558,8 +558,11 @@ %! assert (x, y, tol); %!test +%! old_tol = dassl_options ("absolute tolerance"); %! dassl_options ("absolute tolerance", eps); %! assert (dassl_options ("absolute tolerance") == eps); +%! ## Restore old value of tolerance +%! dassl_options ("absolute tolerance", old_tol); %!error dassl_options ("foo", 1, 2) */
rename from libinterp/interpfcn/data.cc rename to libinterp/corefcn/data.cc --- a/libinterp/interpfcn/data.cc +++ b/libinterp/corefcn/data.cc @@ -3342,6 +3342,11 @@ return retval; } +/* +%% Debian bug #706376 +%!assert (isempty (speye(2^16)), false) +*/ + DEFUN (isnumeric, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} isnumeric (@var{x})\n\
rename from libinterp/interpfcn/debug.cc rename to libinterp/corefcn/debug.cc --- a/libinterp/interpfcn/debug.cc +++ b/libinterp/corefcn/debug.cc @@ -609,7 +609,8 @@ DEFUN (dbstop, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{rline} =} dbstop (\"@var{func}\")\n\ -@deftypefnx {Built-in Function} {@var{rline} =} dbstop (\"@var{func}\", @var{line}, @dots{})\n\ +@deftypefnx {Built-in Function} {@var{rline} =} dbstop (\"@var{func}\", @var{line})\n\ +@deftypefnx {Built-in Function} {@var{rline} =} dbstop (\"@var{func}\", @var{line1}, @var{line2}, @dots{})\n\ Set a breakpoint in function @var{func}.\n\ \n\ Arguments are\n\ @@ -654,6 +655,7 @@ "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} dbclear (\"@var{func}\")\n\ @deftypefnx {Built-in Function} {} dbclear (\"@var{func}\", @var{line}, @dots{})\n\ +@deftypefnx {Built-in Function} {} dbclear (@var{line}, @dots{})\n\ Delete a breakpoint in the function @var{func}.\n\ \n\ Arguments are\n\ @@ -661,7 +663,8 @@ @table @var\n\ @item func\n\ Function name as a string variable. When already in debug\n\ -mode this should be left out and only the line should be given.\n\ +mode this argument should be omitted and only the line number should be\n\ +given.\n\ \n\ @item line\n\ Line number from which to remove a breakpoint. Multiple\n\ @@ -1033,6 +1036,80 @@ return retval; } +DEFUN (dblist, args, , + "-*- texinfo -*-\n\ +@deftypefn {Command} {} dblist\n\ +@deftypefnx {Command} {} dblist @var{n}\n\ +In debugging mode, list @var{n} lines of the function being debugged\n\ +centered around the the current line to be executed. If unspecified @var{n}\n\ +defaults to 10 (+/- 5 lines)\n\ +@seealso{dbwhere, dbtype}\n\ +@end deftypefn") +{ + octave_value retval; + + int n = 10; + + if (args.length () == 1) + { + octave_value arg = args(0); + + if (arg.is_string ()) + { + std::string s_arg = arg.string_value (); + + n = atoi (s_arg.c_str ()); + } + else + n = args(0).int_value (); + + if (n < 0) + error ("dblist: N must be a non-negative integer"); + } + + octave_user_code *dbg_fcn = get_user_code (); + + if (dbg_fcn) + { + bool have_file = true; + + std::string name = dbg_fcn->fcn_file_name (); + + if (name.empty ()) + { + have_file = false; + name = dbg_fcn->name (); + } + + int l = octave_call_stack::caller_user_code_line (); + + if (l > 0) + { + if (have_file) + { + int l_min = std::max (l - n/2, 0); + int l_max = l + n/2; + do_dbtype (octave_stdout, dbg_fcn->name (), l_min, l-1); + + std::string line = get_file_line (name, l); + if (! line.empty ()) + octave_stdout << l << "-->\t" << line << std::endl; + + do_dbtype (octave_stdout, dbg_fcn->name (), l+1, l_max); + } + } + else + { + octave_stdout << "dblist: unable to determine source code line" + << std::endl; + } + } + else + error ("dblist: must be inside a user function to use dblist\n"); + + return retval; +} + static octave_value_list do_dbstack (const octave_value_list& args, int nargout, std::ostream& os) {
rename from libinterp/interpfcn/dirfns.cc rename to libinterp/corefcn/dirfns.cc --- a/libinterp/interpfcn/dirfns.cc +++ b/libinterp/corefcn/dirfns.cc @@ -563,6 +563,7 @@ @table @code\n\ @item *\n\ matches any string, including the null string,\n\ +\n\ @item ?\n\ matches any single character, and\n\ \n\
--- a/libinterp/corefcn/ellipj.cc +++ b/libinterp/corefcn/ellipj.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2001 Leopoldo Cerbaro <redbliss@libero.it> +// Author: Leopoldo Cerbaro <redbliss@libero.it> This file is part of Octave. @@ -149,9 +149,9 @@ @var{m} must conform and the results will be the same size.\n\ \n\ The value of @var{u} may be complex.\n\ -The value of @var{m} must be 0 <= m <= 1.\n\ +The value of @var{m} must be 0 @leq{} m @leq{} 1.\n\ \n\ -@var{tol} is currently ignored (@sc{Matlab} uses this to allow faster,\n\ +@var{tol} is currently ignored (@sc{matlab} uses this to allow faster,\n\ less accurate approximation).\n\ \n\ If requested, @var{err} contains the following status information\n\ @@ -160,6 +160,7 @@ @enumerate 0\n\ @item\n\ Normal return.\n\ +\n\ @item\n\ Error---no computation, algorithm termination condition not met,\n\ return @code{NaN}.\n\
rename from libinterp/interpfcn/error.cc rename to libinterp/corefcn/error.cc --- a/libinterp/interpfcn/error.cc +++ b/libinterp/corefcn/error.cc @@ -1069,6 +1069,27 @@ @end group\n\ @end example\n\ \n\ +A null string (\"\") input to @code{error} will be ignored and the code\n\ +will continue running as if the statement were a NOP@. This is for\n\ +compatibility with @sc{matlab}. It also makes it possible to write code such\n\ +as\n\ +\n\ +@example\n\ +@group\n\ +err_msg = \"\";\n\ +if (CONDITION 1)\n\ + err_msg = \"CONDITION 1 found\";\n\ +elseif (CONDITION2)\n\ + err_msg = \"CONDITION 2 found\";\n\ +@dots{}\n\ +endif\n\ +error (err_msg);\n\ +@end group\n\ +@end example\n\ +\n\ +@noindent\n\ +which will only stop execution if an error has been found.\n\ +\n\ Implementation Note: For compatibility with @sc{matlab}, escape\n\ sequences (e.g., \"\\n\" => newline) are processed in @var{template}\n\ regardless of whether @var{template} has been defined within single quotes\n\ @@ -1215,7 +1236,7 @@ The optional message identifier allows users to enable or disable\n\ warnings tagged by @var{id}. A message identifier is of the form\n\ \"NAMESPACE:WARNING-NAME\". Octave's own warnings use the \"Octave\"\n\ -namespace (@pxref{doc-warning_ids}). The special identifier @samp{\"all\"}\n\ +namespace (@pxref{docXwarning_ids}). The special identifier @samp{\"all\"}\n\ may be used to set the state of all warnings.\n\ \n\ If the first argument is @samp{\"on\"} or @samp{\"off\"}, set the state\n\
rename from libinterp/interpfcn/file-io.cc rename to libinterp/corefcn/file-io.cc --- a/libinterp/interpfcn/file-io.cc +++ b/libinterp/corefcn/file-io.cc @@ -1139,7 +1139,7 @@ \n\ In the second form, read from @var{fid} according to @var{template},\n\ with each conversion specifier in @var{template} corresponding to a\n\ -single scalar return value. This form is more `C-like', and also\n\ +single scalar return value. This form is more ``C-like'', and also\n\ compatible with previous versions of Octave. The number of successful\n\ conversions is returned in @var{count}\n\ @ifclear OCTAVE_MANUAL\n\
rename from libinterp/interp-core/gl-render.cc rename to libinterp/corefcn/gl-render.cc --- a/libinterp/interp-core/gl-render.cc +++ b/libinterp/corefcn/gl-render.cc @@ -754,28 +754,37 @@ int xyz, int ha, int va, int& wmax, int& hmax) { - int n = std::min (ticklabels.numel (), ticks.numel ()); - - for (int i = 0; i < n; i++) + int nticks = ticks.numel (); + int nlabels = ticklabels.numel (); + + if (nlabels == 0) + return; + + for (int i = 0; i < nticks; i++) { double val = ticks(i); if (lim1 <= val && val <= lim2) { Matrix b; - // FIXME: as tick text is transparent, shouldn't be + + std::string label (ticklabels(i % nlabels)); + label.erase (0, label.find_first_not_of (" ")); + label = label.substr (0, label.find_last_not_of (" ")+1); + + // FIXME: as tick text is transparent, shouldn't it be // drawn after axes object, for correct rendering? if (xyz == 0) // X { - b = render_text (ticklabels(i), val, p1, p2, ha, va); + b = render_text (label, val, p1, p2, ha, va); } else if (xyz == 1) // Y { - b = render_text (ticklabels(i), p1, val, p2, ha, va); + b = render_text (label, p1, val, p2, ha, va); } else if (xyz == 2) // Z { - b = render_text (ticklabels(i), p1, p2, val, ha, va); + b = render_text (label, p1, p2, val, ha, va); } wmax = std::max (wmax, static_cast<int> (b(2)));
rename from libinterp/interp-core/gl2ps-renderer.cc rename to libinterp/corefcn/gl2ps-renderer.cc --- a/libinterp/interp-core/gl2ps-renderer.cc +++ b/libinterp/corefcn/gl2ps-renderer.cc @@ -35,9 +35,10 @@ #include "gl2ps.h" void -glps_renderer::draw (const graphics_object& go) +glps_renderer::draw (const graphics_object& go, const std::string print_cmd) { static bool in_draw = false; + static std::string old_print_cmd; if (!in_draw) { @@ -70,6 +71,24 @@ while (state == GL2PS_OVERFLOW) { + // For LaTeX output the fltk print process uses two drawnow() commands. + // The first one is for the pdf/ps/eps graph to be included. The print_cmd + // is saved as old_print_cmd. Then the second drawnow() outputs the tex-file + // and the graphic filename to be included is extracted from old_print_cmd. + std::string include_graph; + std::size_t found_redirect = old_print_cmd.find (">"); + if (found_redirect != std::string::npos) + include_graph = old_print_cmd.substr (found_redirect + 1); + else + include_graph = old_print_cmd; + std::size_t n_begin = include_graph.find_first_not_of (" "); + if (n_begin != std::string::npos) + { + std::size_t n_end = include_graph.find_last_not_of (" "); + include_graph = include_graph.substr (n_begin, n_end - n_begin + 1); + } + else + include_graph = "foobar-inc"; buffsize += 1024*1024; gl2psBeginPage ("glps_renderer figure", "Octave", viewport, gl2ps_term, gl2ps_sort, @@ -78,8 +97,8 @@ | GL2PS_BEST_ROOT | gl2ps_text | GL2PS_NO_PS3_SHADING), GL_RGBA, 0, NULL, 0, 0, 0, - buffsize, fp, "" ); - + buffsize, fp, include_graph.c_str ()); + old_print_cmd = print_cmd; opengl_renderer::draw (go); state = gl2psEndPage (); }
rename from libinterp/interp-core/gl2ps-renderer.h rename to libinterp/corefcn/gl2ps-renderer.h --- a/libinterp/interp-core/gl2ps-renderer.h +++ b/libinterp/corefcn/gl2ps-renderer.h @@ -37,7 +37,7 @@ ~glps_renderer (void) { } - void draw (const graphics_object& go); + void draw (const graphics_object& go, const std::string print_cmd); protected:
rename from libinterp/interpfcn/graphics.cc rename to libinterp/corefcn/graphics.cc --- a/libinterp/interpfcn/graphics.cc +++ b/libinterp/corefcn/graphics.cc @@ -2059,6 +2059,34 @@ } /* +## test set ticklabels for compatibility +%!test +%! set (gcf (), "visible", "off"); +%! set (gca (), "xticklabel", [0, 0.2, 0.4, 0.6, 0.8, 1]); +%! xticklabel = get (gca (), "xticklabel"); +%! assert (class (xticklabel), "char"); +%! assert (size (xticklabel), [6, 3]); +%!test +%! set (gcf (), "visible", "off"); +%! set (gca (), "xticklabel", "0|0.2|0.4|0.6|0.8|1"); +%! xticklabel = get (gca (), "xticklabel"); +%! assert (class (xticklabel), "char"); +%! assert (size (xticklabel), [6, 3]); +%!test +%! set (gcf (), "visible", "off"); +%! set (gca (), "xticklabel", ["0 "; "0.2"; "0.4"; "0.6"; "0.8"; "1 "]); +%! xticklabel = get (gca (), "xticklabel"); +%! assert (class (xticklabel), "char"); +%! assert (size (xticklabel), [6, 3]); +%!test +%! set (gcf (), "visible", "off"); +%! set (gca (), "xticklabel", {"0", "0.2", "0.4", "0.6", "0.8", "1"}); +%! xticklabel = get (gca (), "xticklabel"); +%! assert (class (xticklabel), "cell"); +%! assert (size (xticklabel), [6, 1]); +*/ + +/* ## test set with struct arguments %!test %! set (gcf, "visible", "off"); @@ -2073,28 +2101,28 @@ %!test %! markchanged = @(h, foobar, name) set (h, "userdata", [get(h,"userdata"); {name}]); %! figure (1, "visible", "off") -%! clf () +%! clf (); %! h = line (); -%! set (h, "userdata", {}) -%! addlistener (h, "color", {markchanged, "color"}) -%! addlistener (h, "linewidth", {markchanged, "linewidth"}) +%! set (h, "userdata", {}); +%! addlistener (h, "color", {markchanged, "color"}); +%! addlistener (h, "linewidth", {markchanged, "linewidth"}); %! # "linewidth" first %! props.linewidth = 2; %! props.color = "r"; %! set (h, props); -%! assert (get (h, "userdata"), fieldnames (props)) +%! assert (get (h, "userdata"), fieldnames (props)); %! clear props -%! clf () +%! clf (); %! h = line (); -%! set (h, "userdata", {}) -%! addlistener (h, "color", {markchanged, "color"}) -%! addlistener (h, "linewidth", {markchanged, "linewidth"}) +%! set (h, "userdata", {}); +%! addlistener (h, "color", {markchanged, "color"}); +%! addlistener (h, "linewidth", {markchanged, "linewidth"}); %! # "color" first %! props.color = "r"; %! props.linewidth = 2; %! set (h, props); -%! assert (get (h, "userdata"), fieldnames (props)) -%! close (1) +%! assert (get (h, "userdata"), fieldnames (props)); +%! close (1); */ // Set a property to a value or to its (factory) default value. @@ -3719,25 +3747,25 @@ %!test %! figure (1, "visible", "off"); %! set (1, "paperunits", "inches"); -%! set (1, "papersize", [5, 4]) +%! set (1, "papersize", [5, 4]); %! set (1, "paperunits", "points"); -%! assert (get (1, "papersize"), [5, 4] * 72, 1) +%! assert (get (1, "papersize"), [5, 4] * 72, 1); %! papersize = get (gcf, "papersize"); %! set (1, "papersize", papersize + 1); -%! set (1, "papersize", papersize) -%! assert (get (1, "papersize"), [5, 4] * 72, 1) -%! close (1) +%! set (1, "papersize", papersize); +%! assert (get (1, "papersize"), [5, 4] * 72, 1); +%! close (1); %!test %! figure (1, "visible", "off"); %! set (1, "paperunits", "inches"); -%! set (1, "papersize", [5, 4]) +%! set (1, "papersize", [5, 4]); %! set (1, "paperunits", "centimeters"); -%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72) +%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72); %! papersize = get (gcf, "papersize"); %! set (1, "papersize", papersize + 1); -%! set (1, "papersize", papersize) -%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72) -%! close (1) +%! set (1, "papersize", papersize); +%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72); +%! close (1); */ void @@ -4175,14 +4203,31 @@ outerposition = calc_tightbox (outpos); } + update_insets (); +} + +void +axes::properties::update_insets (void) +{ + Matrix pos = position.get ().matrix_value (); + Matrix outpos = outerposition.get ().matrix_value (); + Matrix tightpos = calc_tightbox (pos); + // Determine the tightinset = axes_bbox - position Matrix inset (1, 4, 1.0); + inset(0) = pos(0)-tightpos(0); + inset(1) = pos(1)-tightpos(1); + inset(2) = tightpos(0)+tightpos(2)-pos(0)-pos(2); + inset(3) = tightpos(1)+tightpos(3)-pos(1)-pos(3); + tightinset = inset; + + // Determine the looseinset = outerposition - position inset(0) = pos(0)-outpos(0); inset(1) = pos(1)-outpos(1); inset(2) = outpos(0)+outpos(2)-pos(0)-pos(2); inset(3) = outpos(1)+outpos(3)-pos(1)-pos(3); - - tightinset = inset; -} + looseinset = inset; +} + void axes::properties::set_text_child (handle_property& hp, @@ -4377,18 +4422,8 @@ fontunits = "points"; fontweight = "normal"; - Matrix touterposition (1, 4, 0.0); - touterposition(2) = 1; - touterposition(3) = 1; - outerposition = touterposition; - + outerposition = default_axes_outerposition (); position = default_axes_position (); - - Matrix tlooseinset = default_axes_position (); - tlooseinset(2) = 1-tlooseinset(0)-tlooseinset(2); - tlooseinset(3) = 1-tlooseinset(1)-tlooseinset(3); - looseinset = tlooseinset; - activepositionproperty = "outerposition"; } @@ -4448,7 +4483,7 @@ adopt (title.handle_value ()); update_transform (); - + update_insets (); override_defaults (obj); } @@ -5056,16 +5091,16 @@ %!demo %! clf; %! subplot (2,1,1); -%! plot (rand (3)); -%! xlabel xlabel; -%! ylabel ylabel; -%! title title; +%! plot (rand (3)); +%! xlabel xlabel; +%! ylabel ylabel; +%! title title; %! subplot (2,1,2); -%! plot (rand (3)); -%! set (gca, "ticklength", get (gca, "ticklength") * 2, "tickdir", "out"); -%! xlabel xlabel; -%! ylabel ylabel; -%! title title; +%! plot (rand (3)); +%! set (gca, "ticklength", get (gca, "ticklength") * 2, "tickdir", "out"); +%! xlabel xlabel; +%! ylabel ylabel; +%! title title; */ static bool updating_xlabel_position = false; @@ -5708,6 +5743,105 @@ return ext; } +static octave_value +convert_ticklabel_string (const octave_value& val) +{ + octave_value retval = val; + + if (val.is_cellstr ()) + { + // Always return a column vector for Matlab Compatibility + if (val.columns () > 1) + retval = val.reshape (dim_vector (val.numel (), 1)); + } + else + { + string_vector sv; + if (val.is_numeric_type ()) + { + NDArray data = val.array_value (); + std::ostringstream oss; + oss.precision (5); + for (octave_idx_type i = 0; i < val.numel (); i++) + { + oss.str (""); + oss << data(i); + sv.append (oss.str ()); + } + } + else if (val.is_string () && val.rows () == 1) + { + std::string valstr = val.string_value (); + std::istringstream iss (valstr); + std::string tmpstr; + + // Split string with delimiter '|' + while (std::getline (iss, tmpstr, '|')) + sv.append (tmpstr); + + // If string ends with '|' Matlab appends a null string + if (*valstr.rbegin () == '|') + sv.append (std::string ("")); + } + else + return retval; + + charMatrix chmat (sv, ' '); + + retval = octave_value (chmat); + } + + return retval; +} + +void +axes::properties::set_xticklabel (const octave_value& v) +{ + if (!error_state) + { + if (xticklabel.set (convert_ticklabel_string (v), false)) + { + set_xticklabelmode ("manual"); + xticklabel.run_listeners (POSTSET); + mark_modified (); + } + else + set_xticklabelmode ("manual"); + } +} + +void +axes::properties::set_yticklabel (const octave_value& v) +{ + if (!error_state) + { + if (yticklabel.set (convert_ticklabel_string (v), false)) + { + set_yticklabelmode ("manual"); + yticklabel.run_listeners (POSTSET); + mark_modified (); + } + else + set_yticklabelmode ("manual"); + } +} + +void +axes::properties::set_zticklabel (const octave_value& v) +{ + if (!error_state) + { + if (zticklabel.set (convert_ticklabel_string (v), false)) + { + set_zticklabelmode ("manual"); + zticklabel.run_listeners (POSTSET); + mark_modified (); + } + else + set_zticklabelmode ("manual"); + } +} + void axes::properties::set_units (const octave_value& v) { @@ -5731,6 +5865,7 @@ position.set (octave_value (convert_position (get_position ().matrix_value (), old_units, new_units, parent_bb)), false); outerposition.set (octave_value (convert_position (get_outerposition ().matrix_value (), old_units, new_units, parent_bb)), false); tightinset.set (octave_value (convert_position (get_tightinset ().matrix_value (), old_units, new_units, parent_bb)), false); + looseinset.set (octave_value (convert_position (get_looseinset ().matrix_value (), old_units, new_units, parent_bb)), false); } void @@ -6213,13 +6348,16 @@ double val = ticks(i); if (limits(0) <= val && val <= limits(1)) { + std::string label (ticklabels(i)); + label.erase (0, label.find_first_not_of (" ")); + label = label.substr (0, label.find_last_not_of (" ")+1); #ifdef HAVE_FREETYPE - ext = text_renderer.get_extent (ticklabels(i)); + ext = text_renderer.get_extent (label); wmax = std::max (wmax, ext(0)); hmax = std::max (hmax, ext(1)); #else - //FIXME: find a better approximation - int len = ticklabels(i).length (); + // FIXME: find a better approximation + int len = label.length (); wmax = std::max (wmax, 0.5*fontsize*len); hmax = fontsize; #endif @@ -8442,6 +8580,7 @@ elements of @var{pv} will be set in all handles in @var{h} independent of\n\ the dimensions of @var{pv}.\n\ @end itemize\n\ +@seealso{get}\n\ @end deftypefn") { gh_manager::auto_lock guard; @@ -8549,11 +8688,13 @@ DEFUN (get, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} get (@var{h}, @var{p})\n\ -Return the named property @var{p} from the graphics handle @var{h}.\n\ -If @var{p} is omitted, return the complete property list for @var{h}.\n\ -If @var{h} is a vector, return a cell array including the property\n\ +@deftypefn {Built-in Function} {@var{val} =} get (@var{h})\n\ +@deftypefnx {Built-in Function} {@var{val} =} get (@var{h}, @var{p})\n\ +Return the value of the named property @var{p} from the graphics handle\n\ +@var{h}. If @var{p} is omitted, return the complete property list for\n\ +@var{h}. If @var{h} is a vector, return a cell array including the property\n\ values or lists respectively.\n\ +@seealso{set}\n\ @end deftypefn") { gh_manager::auto_lock guard; @@ -9790,7 +9931,7 @@ A string property. @var{arg} contains the default string value.\n\ \n\ @item any\n\ -An un-typed property. This kind of property can hold any octave\n\ +An @nospell{un-typed} property. This kind of property can hold any octave\n\ value. @var{args} contains the default value.\n\ \n\ @item radio\n\
rename from libinterp/interpfcn/graphics.in.h rename to libinterp/corefcn/graphics.in.h --- a/libinterp/interpfcn/graphics.in.h +++ b/libinterp/corefcn/graphics.in.h @@ -577,8 +577,8 @@ enum desired_enum { string_t, cell_t }; string_array_property (const std::string& s, const graphics_handle& h, - const std::string& val = "", const char& sep = '|', - const desired_enum& typ = string_t) + const std::string& val = "", const char& sep = '|', + const desired_enum& typ = string_t) : base_property (s, h), desired_type (typ), separator (sep), str () { size_t pos = 0; @@ -600,8 +600,8 @@ } string_array_property (const std::string& s, const graphics_handle& h, - const Cell& c, const char& sep = '|', - const desired_enum& typ = string_t) + const Cell& c, const char& sep = '|', + const desired_enum& typ = string_t) : base_property (s, h), desired_type (typ), separator (sep), str () { if (c.is_cellstr ()) @@ -659,13 +659,14 @@ protected: bool do_set (const octave_value& val) { - if (val.is_string ()) + if (val.is_string () && val.rows () == 1) { bool replace = false; std::string new_str = val.string_value (); string_vector strings; size_t pos = 0; + // Split single string on delimiter (usually '|') while (pos != std::string::npos) { size_t new_pos = new_str.find_first_of (separator, pos); @@ -701,6 +702,30 @@ return true; } } + else if (val.is_string ()) // multi-row character matrix + { + bool replace = false; + charMatrix chm = val.char_matrix_value (); + octave_idx_type nel = chm.rows (); + string_vector strings (nel); + + if (nel != str.numel ()) + replace = true; + for (octave_idx_type i = 0; i < nel; i++) + { + strings[i] = chm.row_as_string (i); + if (!replace && strings[i] != str[i]) + replace = true; + } + + desired_type = string_t; + + if (replace) + { + str = strings; + return true; + } + } else if (val.is_cellstr ()) { bool replace = false; @@ -3777,9 +3802,9 @@ bool_property yminortick , "off" bool_property zminortick , "off" // FIXME -- should be kind of string array. - any_property xticklabel m , "" - any_property yticklabel m , "" - any_property zticklabel m , "" + any_property xticklabel S , "" + any_property yticklabel S , "" + any_property zticklabel S , "" radio_property xticklabelmode u , "{auto}|manual" radio_property yticklabelmode u , "{auto}|manual" radio_property zticklabelmode u , "{auto}|manual" @@ -3969,6 +3994,8 @@ void sync_positions (const Matrix& linset); void sync_positions (void); + void update_insets (void); + void update_outerposition (void) { set_activepositionproperty ("outerposition"); @@ -4355,7 +4382,7 @@ void update_font (void); void update_string (void) { request_autopos (); update_text_extent (); } void update_rotation (void) { update_text_extent (); } - void update_color (void) { update_font (); } + void update_color (void) { update_font (); update_text_extent (); } void update_fontname (void) { update_font (); update_text_extent (); } void update_fontsize (void) { update_font (); update_text_extent (); } void update_fontangle (void) { update_font (); update_text_extent (); }
rename from libinterp/interpfcn/help.cc rename to libinterp/corefcn/help.cc --- a/libinterp/interpfcn/help.cc +++ b/libinterp/corefcn/help.cc @@ -935,7 +935,6 @@ return h; } - DEFUN (built_in_docstrings_file, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{val} =} built_in_docstrings_file ()\n\ @@ -943,9 +942,16 @@ @deftypefnx {Built-in Function} {} built_in_docstrings_file (@var{new_val}, \"local\")\n\ Query or set the internal variable that specifies the name of the\n\ file containing docstrings for built-in Octave functions.\n\ +The default value is\n\ +@file{@var{octave-home}/share/octave/@var{version}/etc/built-in-docstrings},\n\ +in which @var{octave-home} is the root directory of the Octave installation,\n\ +and @var{version} is the Octave version number.\n\ +The default value may be overridden by the environment variable\n\ +@w{@env{OCTAVE_BUILT_IN_DOCSTRINGS_FILE}}, or the command line argument\n\ +@samp{--built-in-docstrings-file FNAME}.\n\ \n\ -Note that this variable is only used when Octave is initializing itself,\n\ -so setting it will have no effect.\n\ +Note: This variable is only used when Octave is initializing itself.\n\ +Modifying it during a running session of Octave will have no effect.\n\ @end deftypefn") { return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (built_in_docstrings_file); @@ -1390,12 +1396,12 @@ and @var{version} is the Octave version number.\n\ The default value may be overridden by the environment variable\n\ @w{@env{OCTAVE_DOC_CACHE_FILE}}, or the command line argument\n\ -@samp{--doc-cache-file NAME}.\n\ +@samp{--doc-cache-file FNAME}.\n\ \n\ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\ variable value is restored when exiting the function.\n\ -@seealso{lookfor, info_program, doc, help, makeinfo_program}\n\ +@seealso{doc_cache_create, lookfor, info_program, doc, help, makeinfo_program}\n\ @end deftypefn") { return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (doc_cache_file); @@ -1414,7 +1420,7 @@ and @var{version} is the Octave version number.\n\ The default value may be overridden by the environment variable\n\ @w{@env{OCTAVE_TEXI_MACROS_FILE}}, or the command line argument\n\ -@samp{--texi-macros-file NAME}.\n\ +@samp{--texi-macros-file FNAME}.\n\ \n\ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\ @@ -1436,7 +1442,7 @@ which @var{octave-home} is the root directory of the Octave installation.\n\ The default value may be overridden by the environment variable\n\ @w{@env{OCTAVE_INFO_FILE}}, or the command line argument\n\ -@samp{--info-file NAME}.\n\ +@samp{--info-file FNAME}.\n\ \n\ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\
rename from libinterp/interpfcn/input.cc rename to libinterp/corefcn/input.cc --- a/libinterp/interpfcn/input.cc +++ b/libinterp/corefcn/input.cc @@ -1065,15 +1065,16 @@ return retval; } -DEFUN (read_readline_init_file, args, , +DEFUN (readline_read_init_file, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} read_readline_init_file (@var{file})\n\ +@deftypefn {Built-in Function} {} readline_read_init_file (@var{file})\n\ Read the readline library initialization file @var{file}. If\n\ @var{file} is omitted, read the default initialization file (normally\n\ @file{~/.inputrc}).\n\ \n\ @xref{Readline Init File, , , readline, GNU Readline Library},\n\ for details.\n\ +@seealso{readline_re_read_init_file}\n\ @end deftypefn") { octave_value_list retval; @@ -1095,12 +1096,13 @@ return retval; } -DEFUN (re_read_readline_init_file, args, , +DEFUN (readline_re_read_init_file, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} re_read_readline_init_file ()\n\ +@deftypefn {Built-in Function} {} readline_re_read_init_file ()\n\ Re-read the last readline library initialization file that was read.\n\ @xref{Readline Init File, , , readline, GNU Readline Library},\n\ for details.\n\ +@seealso{readline_read_init_file}\n\ @end deftypefn") { octave_value_list retval; @@ -1128,8 +1130,8 @@ "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{id} =} add_input_event_hook (@var{fcn})\n\ @deftypefnx {Built-in Function} {@var{id} =} add_input_event_hook (@var{fcn}, @var{data})\n\ -Add the named function or function handle @var{fcn} to the list of functions to call\n\ -periodically when Octave is waiting for input. The function should\n\ +Add the named function or function handle @var{fcn} to the list of functions\n\ +to call periodically when Octave is waiting for input. The function should\n\ have the form\n\ \n\ @example\n\ @@ -1177,7 +1179,7 @@ DEFUN (remove_input_event_hook, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} remove_input_event_hook (@var{name})\n\ +@deftypefn {Built-in Function} {} remove_input_event_hook (@var{name})\n\ @deftypefnx {Built-in Function} {} remove_input_event_hook (@var{fcn_id})\n\ Remove the named function or function handle with the given identifier\n\ from the list of functions to call periodically when Octave is waiting\n\
rename from libinterp/interp-core/jit-ir.cc rename to libinterp/corefcn/jit-ir.cc --- a/libinterp/interp-core/jit-ir.cc +++ b/libinterp/corefcn/jit-ir.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + // defines required by llvm #define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS
rename from libinterp/interp-core/jit-ir.h rename to libinterp/corefcn/jit-ir.h --- a/libinterp/interp-core/jit-ir.h +++ b/libinterp/corefcn/jit-ir.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + #if !defined (octave_jit_ir_h) #define octave_jit_ir_h 1
rename from libinterp/interp-core/jit-typeinfo.cc rename to libinterp/corefcn/jit-typeinfo.cc --- a/libinterp/interp-core/jit-typeinfo.cc +++ b/libinterp/corefcn/jit-typeinfo.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + // defines required by llvm #define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS
rename from libinterp/interp-core/jit-typeinfo.h rename to libinterp/corefcn/jit-typeinfo.h --- a/libinterp/interp-core/jit-typeinfo.h +++ b/libinterp/corefcn/jit-typeinfo.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + #if !defined (octave_jit_typeinfo_h) #define octave_jit_typeinfo_h 1
rename from libinterp/interp-core/jit-util.cc rename to libinterp/corefcn/jit-util.cc --- a/libinterp/interp-core/jit-util.cc +++ b/libinterp/corefcn/jit-util.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + // defines required by llvm #define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS
rename from libinterp/interp-core/jit-util.h rename to libinterp/corefcn/jit-util.h --- a/libinterp/interp-core/jit-util.h +++ b/libinterp/corefcn/jit-util.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + // Some utility classes and functions used throughout jit #if !defined (octave_jit_util_h)
rename from libinterp/interpfcn/load-save.cc rename to libinterp/corefcn/load-save.cc --- a/libinterp/interpfcn/load-save.cc +++ b/libinterp/corefcn/load-save.cc @@ -103,7 +103,7 @@ // The default output format. May be one of "binary", "text", // "mat-binary", or "hdf5". -static std::string Vdefault_save_options = "-text"; +static std::string Vsave_default_options = "-text"; // The output format for Octave core files. static std::string Voctave_core_file_options = "-binary"; @@ -1470,7 +1470,7 @@ with corresponding names.\n\ Valid options for the @code{save} command are listed in the following table.\n\ Options that modify the output format override the format specified by\n\ -@code{default_save_options}.\n\ +@code{save_default_options}.\n\ \n\ If save is invoked using the functional form\n\ \n\ @@ -1576,7 +1576,7 @@ @noindent\n\ saves the variable @samp{a} and all variables beginning with @samp{b} to\n\ the file @file{data} in Octave's binary format.\n\ -@seealso{load, default_save_options, save_header_format_string, dlmread, csvread, fread}\n\ +@seealso{load, save_default_options, save_header_format_string, dlmread, csvread, fread}\n\ @end deftypefn") { octave_value_list retval; @@ -1600,7 +1600,7 @@ bool use_zlib = false; // get default options - parse_save_options (Vdefault_save_options, format, append, save_as_floats, + parse_save_options (Vsave_default_options, format, append, save_as_floats, use_zlib); // override from command line @@ -1773,11 +1773,11 @@ return SET_INTERNAL_VARIABLE (crash_dumps_octave_core); } -DEFUN (default_save_options, args, nargout, +DEFUN (save_default_options, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {@var{val} =} default_save_options ()\n\ -@deftypefnx {Built-in Function} {@var{old_val} =} default_save_options (@var{new_val})\n\ -@deftypefnx {Built-in Function} {} default_save_options (@var{new_val}, \"local\")\n\ +@deftypefn {Built-in Function} {@var{val} =} save_default_options ()\n\ +@deftypefnx {Built-in Function} {@var{old_val} =} save_default_options (@var{new_val})\n\ +@deftypefnx {Built-in Function} {} save_default_options (@var{new_val}, \"local\")\n\ Query or set the internal variable that specifies the default options\n\ for the @code{save} command, and defines the default format.\n\ Typical values include @code{\"-ascii\"}, @code{\"-text -zip\"}.\n\ @@ -1789,7 +1789,7 @@ @seealso{save}\n\ @end deftypefn") { - return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (default_save_options); + return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (save_default_options); } DEFUN (octave_core_file_limit, args, nargout,
rename from libinterp/interp-core/ls-mat5.cc rename to libinterp/corefcn/ls-mat5.cc --- a/libinterp/interp-core/ls-mat5.cc +++ b/libinterp/corefcn/ls-mat5.cc @@ -877,14 +877,14 @@ if (! is || error_state) goto data_read_error; - // Octave can handle both "/" and "\" as a directry seperator - // and so can ignore the seperator field of m0. I think the + // Octave can handle both "/" and "\" as a directory seperator + // and so can ignore the separator field of m0. I think the // sentinel field is also save to ignore. - Octave_map m0 = tc2.map_value (); - Octave_map m1 = m0.contents ("function_handle")(0).map_value (); - std::string ftype = m1.contents ("type")(0).string_value (); - std::string fname = m1.contents ("function")(0).string_value (); - std::string fpath = m1.contents ("file")(0).string_value (); + octave_scalar_map m0 = tc2.scalar_map_value (); + octave_scalar_map m1 = m0.contents ("function_handle").scalar_map_value (); + std::string ftype = m1.contents ("type").string_value (); + std::string fname = m1.contents ("function").string_value (); + std::string fpath = m1.contents ("file").string_value (); if (ftype == "simple" || ftype == "scopedfunction") { @@ -894,7 +894,7 @@ else { std::string mroot = - m0.contents ("matlabroot")(0).string_value (); + m0.contents ("matlabroot").string_value (); if ((fpath.length () >= mroot.length ()) && fpath.substr (0, mroot.length ()) == mroot && @@ -931,8 +931,7 @@ } else { - // Next just search for it anywhere in the - // system path + // Next just search for it anywhere in the system path string_vector names(3); names(0) = fname + ".oct"; names(1) = fname + ".mex"; @@ -996,13 +995,13 @@ } else if (ftype == "anonymous") { - Octave_map m2 = m1.contents ("workspace")(0).map_value (); - uint32NDArray MCOS = m2.contents ("MCOS")(0).uint32_array_value (); + octave_scalar_map m2 = m1.contents ("workspace").scalar_map_value (); + uint32NDArray MCOS = m2.contents ("MCOS").uint32_array_value (); octave_idx_type off = static_cast<octave_idx_type>(MCOS(4).double_value ()); - m2 = subsys_ov.map_value (); - m2 = m2.contents ("MCOS")(0).map_value (); - tc2 = m2.contents ("MCOS")(0).cell_value ()(1 + off).cell_value ()(1); - m2 = tc2.map_value (); + m2 = subsys_ov.scalar_map_value (); + m2 = m2.contents ("MCOS").scalar_map_value (); + tc2 = m2.contents ("MCOS").cell_value ()(1 + off).cell_value ()(1); + m2 = tc2.scalar_map_value (); unwind_protect_safe frame; @@ -1021,11 +1020,11 @@ { octave_value tmp; - for (Octave_map::iterator p0 = m2.begin () ; + for (octave_map::iterator p0 = m2.begin () ; p0 != m2.end (); p0++) { std::string key = m2.key (p0); - octave_value val = m2.contents (p0)(0); + octave_value val = m2.contents (p0); symbol_table::assign (key, val, local_scope, 0); } @@ -1066,7 +1065,7 @@ case MAT_FILE_WORKSPACE_CLASS: { - Octave_map m (dim_vector (1, 1)); + octave_map m (dim_vector (1, 1)); int n_fields = 2; string_vector field (n_fields); @@ -1074,8 +1073,8 @@ { int32_t fn_type; int32_t fn_len; - if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) || - !INT8(fn_type)) + if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) + || !INT8(fn_type)) { error ("load: invalid field name subelement"); goto data_read_error; @@ -1164,7 +1163,7 @@ // Fall-through case MAT_FILE_STRUCT_CLASS: { - Octave_map m (dims); + octave_map m (dims); int32_t fn_type; int32_t fn_len; int32_t field_name_length; @@ -1172,10 +1171,9 @@ // field name length subelement -- actually the maximum length // of a field name. The Matlab docs promise this will always // be 32. We read and use the actual value, on the theory - // that eventually someone will recognize that's a waste of - // space. - if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) || - fn_type != miINT32) + // that eventually someone will recognize that's a waste of space. + if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) + || fn_type != miINT32) { error ("load: invalid field name length subelement"); goto data_read_error; @@ -1189,8 +1187,8 @@ // field name subelement. The length of this subelement tells // us how many fields there are. - if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) || - !INT8(fn_type)) + if (read_mat5_tag (is, swap, fn_type, fn_len, is_small_data_element) + || !INT8(fn_type)) { error ("load: invalid field name subelement"); goto data_read_error; @@ -2237,7 +2235,7 @@ else if (tc.is_map () || tc.is_inline_function () || tc.is_object ()) { int fieldcnt = 0; - const Octave_map m = tc.map_value (); + const octave_map m = tc.map_value (); octave_idx_type nel = m.numel (); if (tc.is_inline_function ()) @@ -2250,7 +2248,7 @@ ret += 8 + PAD (classlen > max_namelen ? max_namelen : classlen); } - for (Octave_map::const_iterator i = m.begin (); i != m.end (); i++) + for (octave_map::const_iterator i = m.begin (); i != m.end (); i++) fieldcnt++; ret += 16 + fieldcnt * (max_namelen + 1); @@ -2259,7 +2257,7 @@ for (octave_idx_type j = 0; j < nel; j++) { - for (Octave_map::const_iterator i = m.begin (); i != m.end (); i++) + for (octave_map::const_iterator i = m.begin (); i != m.end (); i++) { const Cell elts = m.contents (i); @@ -2667,7 +2665,7 @@ os.write (paddedname, paddedlength); } - Octave_map m; + octave_map m; if (tc.is_object () && load_path::find_method (tc.class_name (), "saveobj") != std::string ())
--- a/libinterp/corefcn/mappers.cc +++ b/libinterp/corefcn/mappers.cc @@ -1884,7 +1884,7 @@ @deftypefn {Mapping Function} {} signbit (@var{x})\n\ Return logical true if the value of @var{x} has its sign bit set.\n\ Otherwise return logical false. This behavior is consistent with the other\n\ -logical functions. See@ref{Logical Values}. The behavior differs from the\n\ +logical functions. See@ref{Logical Values}. The behavior differs from the\n\ C language function which returns non-zero if the sign bit is set.\n\ \n\ This is not the same as @code{x < 0.0}, because IEEE 754 floating point\n\
rename from libinterp/interp-core/mex.cc rename to libinterp/corefcn/mex.cc --- a/libinterp/interp-core/mex.cc +++ b/libinterp/corefcn/mex.cc @@ -3101,8 +3101,11 @@ if (s && strlen (s) > 0) error ("%s: %s", mexFunctionName (), s); else - // Just set the error state; don't print msg. - error (""); + { + // For compatibility with Matlab, print an empty message. + // Octave's error routine requires a non-null input so use a SPACE. + error (" "); + } mex_context->abort (); } @@ -3122,8 +3125,11 @@ va_end (args); } else - // Just set the error state; don't print msg. - error (""); + { + // For compatibility with Matlab, print an empty message. + // Octave's error routine requires a non-null input so use a SPACE. + error (" "); + } mex_context->abort (); } @@ -3184,13 +3190,18 @@ if (caller || base) { - if (caller) - octave_call_stack::goto_caller_frame (); - else - octave_call_stack::goto_base_frame (); - - if (! error_state) - frame.add_fcn (octave_call_stack::pop); + // MEX files don't create a separate frame in the call stack, + // so we are already in the "caller" frame. + + if (base) + { + octave_call_stack::goto_base_frame (); + + if (error_state) + return retval; + + frame.add_fcn (octave_call_stack::pop); + } val = symbol_table::varval (name); } @@ -3242,13 +3253,18 @@ if (caller || base) { - if (caller) - octave_call_stack::goto_caller_frame (); - else - octave_call_stack::goto_base_frame (); - - if (! error_state) - frame.add_fcn (octave_call_stack::pop); + // MEX files don't create a separate frame in the call stack, + // so we are already in the "caller" frame. + + if (base) + { + octave_call_stack::goto_base_frame (); + + if (error_state) + return 1; + + frame.add_fcn (octave_call_stack::pop); + } symbol_table::assign (name, mxArray::as_octave_value (ptr)); }
rename from libinterp/interp-core/mex.h rename to libinterp/corefcn/mex.h --- a/libinterp/interp-core/mex.h +++ b/libinterp/corefcn/mex.h @@ -64,6 +64,8 @@ #define mxMAXNAME 64 +#include "mexproto.h" + #if defined (__cplusplus) extern "C" { #endif @@ -74,8 +76,6 @@ void mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray *prhs[]); #endif -#include "mexproto.h" - /* V4 floating point routines renamed in V5. */ #define mexIsNaN mxIsNaN #define mexIsFinite mxIsFinite
--- a/libinterp/corefcn/module.mk +++ b/libinterp/corefcn/module.mk @@ -1,5 +1,10 @@ EXTRA_DIST += \ - corefcn/module.mk + corefcn/module.mk \ + corefcn/defaults.in.h \ + corefcn/gl2ps.c \ + corefcn/graphics.in.h \ + corefcn/mxarray.in.h \ + corefcn/oct-errno.in.cc ## Options functions for Fortran packages like LSODE, DASPK. ## These are generated automagically by configure and Perl. @@ -24,7 +29,101 @@ $(OPT_INC) : %.h : %.in $(MAKE) -C $(top_builddir)/liboctave/numeric $(@F) +JIT_INC = \ + corefcn/jit-util.h \ + corefcn/jit-typeinfo.h \ + corefcn/jit-ir.h \ + corefcn/pt-jit.h + +COREFCN_INC = \ + corefcn/Cell.h \ + corefcn/action-container.h \ + corefcn/c-file-ptr-stream.h \ + corefcn/comment-list.h \ + corefcn/cutils.h \ + corefcn/data.h \ + corefcn/debug.h \ + corefcn/defun-dld.h \ + corefcn/defun-int.h \ + corefcn/defun.h \ + corefcn/dirfns.h \ + corefcn/display.h \ + corefcn/dynamic-ld.h \ + corefcn/error.h \ + corefcn/event-queue.h \ + corefcn/file-io.h \ + corefcn/gl-render.h \ + corefcn/gl2ps-renderer.h \ + corefcn/gl2ps.h \ + corefcn/gripes.h \ + corefcn/help.h \ + corefcn/hook-fcn.h \ + corefcn/input.h \ + corefcn/load-path.h \ + corefcn/load-save.h \ + corefcn/ls-ascii-helper.h \ + corefcn/ls-hdf5.h \ + corefcn/ls-mat-ascii.h \ + corefcn/ls-mat4.h \ + corefcn/ls-mat5.h \ + corefcn/ls-oct-ascii.h \ + corefcn/ls-oct-binary.h \ + corefcn/ls-utils.h \ + corefcn/mex.h \ + corefcn/mexproto.h \ + corefcn/mxarray.in.h \ + corefcn/oct-errno.h \ + corefcn/oct-fstrm.h \ + corefcn/oct-hdf5.h \ + corefcn/oct-hist.h \ + corefcn/oct-iostrm.h \ + corefcn/oct-lvalue.h \ + corefcn/oct-map.h \ + corefcn/oct-obj.h \ + corefcn/oct-prcstrm.h \ + corefcn/oct-procbuf.h \ + corefcn/oct-stdstrm.h \ + corefcn/oct-stream.h \ + corefcn/oct-strstrm.h \ + corefcn/oct.h \ + corefcn/octave-link.h \ + corefcn/pager.h \ + corefcn/pr-output.h \ + corefcn/procstream.h \ + corefcn/profiler.h \ + corefcn/sighandlers.h \ + corefcn/siglist.h \ + corefcn/sparse-xdiv.h \ + corefcn/sparse-xpow.h \ + corefcn/symtab.h \ + corefcn/sysdep.h \ + corefcn/toplev.h \ + corefcn/txt-eng-ft.h \ + corefcn/txt-eng.h \ + corefcn/unwind-prot.h \ + corefcn/utils.h \ + corefcn/variables.h \ + corefcn/workspace-element.h \ + corefcn/xdiv.h \ + corefcn/xnorm.h \ + corefcn/xpow.h \ + corefcn/zfstream.h \ + $(JIT_INC) + +JIT_SRC = \ + corefcn/jit-util.cc \ + corefcn/jit-typeinfo.cc \ + corefcn/jit-ir.cc \ + corefcn/pt-jit.cc + +C_COREFCN_SRC = \ + corefcn/cutils.c \ + corefcn/matherr.c \ + corefcn/siglist.c \ + corefcn/xgl2ps.c + COREFCN_SRC = \ + corefcn/Cell.cc \ corefcn/__contourc__.cc \ corefcn/__dispatch__.cc \ corefcn/__lin_interpn__.cc \ @@ -35,20 +134,31 @@ corefcn/betainc.cc \ corefcn/bitfcns.cc \ corefcn/bsxfun.cc \ + corefcn/c-file-ptr-stream.cc \ corefcn/cellfun.cc \ corefcn/colloc.cc \ + corefcn/comment-list.cc \ corefcn/conv2.cc \ corefcn/daspk.cc \ corefcn/dasrt.cc \ corefcn/dassl.cc \ + corefcn/data.cc \ + corefcn/debug.cc \ + corefcn/defaults.cc \ + corefcn/defun.cc \ corefcn/det.cc \ + corefcn/dirfns.cc \ + corefcn/display.cc \ corefcn/dlmread.cc \ corefcn/dot.cc \ + corefcn/dynamic-ld.cc \ corefcn/eig.cc \ corefcn/ellipj.cc \ + corefcn/error.cc \ corefcn/fft.cc \ corefcn/fft2.cc \ corefcn/fftn.cc \ + corefcn/file-io.cc \ corefcn/filter.cc \ corefcn/find.cc \ corefcn/gammainc.cc \ @@ -57,11 +167,28 @@ corefcn/getpwent.cc \ corefcn/getrusage.cc \ corefcn/givens.cc \ + corefcn/gl-render.cc \ + corefcn/gl2ps-renderer.cc \ + corefcn/graphics.cc \ + corefcn/gripes.cc \ + corefcn/help.cc \ corefcn/hess.cc \ corefcn/hex2num.cc \ + corefcn/hook-fcn.cc \ + corefcn/input.cc \ corefcn/inv.cc \ corefcn/kron.cc \ + corefcn/load-path.cc \ + corefcn/load-save.cc \ corefcn/lookup.cc \ + corefcn/ls-ascii-helper.cc \ + corefcn/ls-hdf5.cc \ + corefcn/ls-mat-ascii.cc \ + corefcn/ls-mat4.cc \ + corefcn/ls-mat5.cc \ + corefcn/ls-oct-ascii.cc \ + corefcn/ls-oct-binary.cc \ + corefcn/ls-utils.cc \ corefcn/lsode.cc \ corefcn/lu.cc \ corefcn/luinc.cc \ @@ -69,9 +196,25 @@ corefcn/matrix_type.cc \ corefcn/max.cc \ corefcn/md5sum.cc \ + corefcn/mex.cc \ corefcn/mgorth.cc \ corefcn/nproc.cc \ + corefcn/oct-fstrm.cc \ + corefcn/oct-hist.cc \ + corefcn/oct-iostrm.cc \ + corefcn/oct-lvalue.cc \ + corefcn/oct-map.cc \ + corefcn/oct-obj.cc \ + corefcn/oct-prcstrm.cc \ + corefcn/oct-procbuf.cc \ + corefcn/oct-stream.cc \ + corefcn/oct-strstrm.cc \ + corefcn/octave-link.cc \ + corefcn/pager.cc \ corefcn/pinv.cc \ + corefcn/pr-output.cc \ + corefcn/procstream.cc \ + corefcn/profiler.cc \ corefcn/quad.cc \ corefcn/quadcc.cc \ corefcn/qz.cc \ @@ -79,6 +222,9 @@ corefcn/rcond.cc \ corefcn/regexp.cc \ corefcn/schur.cc \ + corefcn/sighandlers.cc \ + corefcn/sparse-xdiv.cc \ + corefcn/sparse-xpow.cc \ corefcn/sparse.cc \ corefcn/spparms.cc \ corefcn/sqrtm.cc \ @@ -88,10 +234,61 @@ corefcn/sub2ind.cc \ corefcn/svd.cc \ corefcn/syl.cc \ + corefcn/symtab.cc \ corefcn/syscalls.cc \ + corefcn/sysdep.cc \ corefcn/time.cc \ + corefcn/toplev.cc \ corefcn/tril.cc \ - corefcn/typecast.cc + corefcn/txt-eng-ft.cc \ + corefcn/typecast.cc \ + corefcn/unwind-prot.cc \ + corefcn/utils.cc \ + corefcn/variables.cc \ + corefcn/xdiv.cc \ + corefcn/xnorm.cc \ + corefcn/xpow.cc \ + corefcn/zfstream.cc \ + $(JIT_SRC) \ + $(C_COREFCN_SRC) + +## FIXME: Automake does not support per-object rules. +## These rules could be emulated by creating a new convenience +## library and using per-library rules. Or we can just live +## without the rule since there haven't been any problems. (09/18/2012) +#display.df display.lo: CPPFLAGS += $(X11_FLAGS) + +## Special rules for sources which must be built before rest of compilation. + +## defaults.h and graphics.h must depend on Makefile. Calling configure +## may change default/config values. However, calling configure will also +## regenerate the Makefiles from Makefile.am and trigger the rules below. +corefcn/defaults.h: corefcn/defaults.in.h Makefile + @$(do_subst_default_vals) + +corefcn/graphics.h: corefcn/graphics.in.h genprops.awk Makefile + $(AWK) -f $(srcdir)/genprops.awk $< > $@-t + mv $@-t $@ + +corefcn/graphics-props.cc: corefcn/graphics.in.h genprops.awk Makefile + $(AWK) -v emit_graphics_props=1 -f $(srcdir)/genprops.awk $< > $@-t + mv $@-t $@ + +corefcn/oct-errno.cc: corefcn/oct-errno.in.cc Makefile + if test -n "$(PERL)"; then \ + $(srcdir)/mk-errno-list --perl "$(PERL)" < $< > $@-t; \ + elif test -n "$(PYTHON)"; then \ + $(srcdir)/mk-errno-list --python "$(PYTHON)" < $< > $@-t; \ + else \ + $(SED) '/@SYSDEP_ERRNO_LIST@/D' $< > $@-t; \ + fi + mv $@-t $@ + +corefcn/mxarray.h: corefcn/mxarray.in.h Makefile + $(SED) < $< \ + -e "s|%NO_EDIT_WARNING%|DO NOT EDIT! Generated automatically from $(<F) by Make.|" \ + -e "s|%OCTAVE_IDX_TYPE%|${OCTAVE_IDX_TYPE}|" > $@-t + mv $@-t $@ noinst_LTLIBRARIES += corefcn/libcorefcn.la
rename from libinterp/interpfcn/oct-hist.cc rename to libinterp/corefcn/oct-hist.cc --- a/libinterp/interpfcn/oct-hist.cc +++ b/libinterp/corefcn/oct-hist.cc @@ -169,14 +169,19 @@ if (option == "-r" || option == "-w" || option == "-a" || option == "-n") { - if (i < nargin - 1 && args(i+1).is_string ()) - command_history::set_file (args(++i).string_value ()); + if (i < nargin - 1) + { + if (args(i+1).is_string ()) + command_history::set_file (args(++i).string_value ()); + else + { + error ("history: expecting file name for %s option", + option.c_str ()); + return hlist; + } + } else - { - error ("history: expecting file name for %s option", - option.c_str ()); - return hlist; - } + command_history::set_file (default_history_file ()); if (option == "-a") // Append 'new' lines to file. @@ -310,49 +315,6 @@ return line; } -// Use 'command' to replace the last entry in the history list, which, -// by this time, is 'run_history blah...'. The intent is that the -// new command becomes the history entry, and that 'fc' should never -// appear in the history list. This way you can do 'run_history' to -// your heart's content. - -// FIXME: Don't delete this block of code until memory -// leak in edit_history has been plugged and -// it is clear that this code can be removed. -// See additional FIXME in do_edit_history. -/* -static void -edit_history_repl_hist (const std::string& command) -{ - if (! command.empty ()) - { - string_vector hlist = command_history::list (); - - int len = hlist.length (); - - if (len > 0) - { - int i = len - 1; - - std::string histent = command_history::get_entry (i); - - if (! histent.empty ()) - { - std::string cmd = command; - - int cmd_len = cmd.length (); - - if (cmd[cmd_len - 1] == '\n') - cmd.resize (cmd_len - 1); - - if (! cmd.empty ()) - command_history::replace_entry (i, cmd); - } - } - } -} -*/ - static void edit_history_add_hist (const std::string& line) { @@ -555,16 +517,6 @@ continue; } - // FIXME: Don't delete this block of code until memory - // leak in edit_history has been plugged and - // it is clear that this code can be removed. - // Command 'edit history' has already been removed in mk_tmp_hist_file () - //if (first) - // { - // first = 0; - // edit_history_repl_hist (line); - // } - //else edit_history_add_hist (line); delete [] line; @@ -803,8 +755,8 @@ matching the current line to be removed from the history list before that\n\ line is saved. Any value not in the above list is ignored. If\n\ @code{history_control} is the empty string, all commands are saved on\n\ -the history list, subject to the value of @code{saving_history}.\n\ -@seealso{history_file, history_size, history_timestamp_format_string, saving_history}\n\ +the history list, subject to the value of @code{history_save}.\n\ +@seealso{history_file, history_size, history_timestamp_format_string, history_save}\n\ @end deftypefn") { std::string old_history_control = command_history::histcontrol (); @@ -827,7 +779,7 @@ Query or set the internal variable that specifies how many entries\n\ to store in the history file. The default value is @code{1000},\n\ but may be overridden by the environment variable @w{@env{OCTAVE_HISTSIZE}}.\n\ -@seealso{history_file, history_timestamp_format_string, saving_history}\n\ +@seealso{history_file, history_timestamp_format_string, history_save}\n\ @end deftypefn") { int old_history_size = command_history::size (); @@ -852,7 +804,7 @@ file used to store command history. The default value is\n\ @file{~/.octave_hist}, but may be overridden by the environment\n\ variable @w{@env{OCTAVE_HISTFILE}}.\n\ -@seealso{history_size, saving_history, history_timestamp_format_string}\n\ +@seealso{history_size, history_save, history_timestamp_format_string}\n\ @end deftypefn") { std::string old_history_file = command_history::file (); @@ -885,17 +837,17 @@ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\ variable value is restored when exiting the function.\n\ -@seealso{strftime, history_file, history_size, saving_history}\n\ +@seealso{strftime, history_file, history_size, history_save}\n\ @end deftypefn") { return SET_INTERNAL_VARIABLE (history_timestamp_format_string); } -DEFUN (saving_history, args, nargout, +DEFUN (history_save, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {@var{val} =} saving_history ()\n\ -@deftypefnx {Built-in Function} {@var{old_val} =} saving_history (@var{new_val})\n\ -@deftypefnx {Built-in Function} {} saving_history (@var{new_val}, \"local\")\n\ +@deftypefn {Built-in Function} {@var{val} =} history_save ()\n\ +@deftypefnx {Built-in Function} {@var{old_val} =} history_save (@var{new_val})\n\ +@deftypefnx {Built-in Function} {} history_save (@var{new_val}, \"local\")\n\ Query or set the internal variable that controls whether commands entered\n\ on the command line are saved in the history file.\n\ \n\ @@ -905,14 +857,14 @@ @seealso{history_control, history_file, history_size, history_timestamp_format_string}\n\ @end deftypefn") { - bool old_saving_history = ! command_history::ignoring_entries (); + bool old_history_save = ! command_history::ignoring_entries (); - bool tmp = old_saving_history; + bool tmp = old_history_save; octave_value retval = set_internal_variable (tmp, args, nargout, - "saving_history"); + "history_save"); - if (tmp != old_saving_history) + if (tmp != old_history_save) command_history::ignore_entries (! tmp); return retval;
rename from libinterp/interp-core/oct-map.h rename to libinterp/corefcn/oct-map.h --- a/libinterp/interp-core/oct-map.h +++ b/libinterp/corefcn/oct-map.h @@ -473,8 +473,8 @@ inline octave_map octave_value_extract<octave_map> (const octave_value& v) { return v.map_value (); } -// The original Octave_map object. Octave_map and octave_map are convertible to -// each other. +// The original Octave_map object which is now deprecated. +// Octave_map and octave_map are convertible to each other. class OCTINTERP_API @@ -654,6 +654,6 @@ if (! contains (k)) key_list.push_back (k); } -}; +} GCC_ATTR_DEPRECATED; #endif
rename from libinterp/interpfcn/octave-link.cc rename to libinterp/corefcn/octave-link.cc --- a/libinterp/interpfcn/octave-link.cc +++ b/libinterp/corefcn/octave-link.cc @@ -146,8 +146,8 @@ if (args.length () == 3) { - std::string dlg = args(0).string_value (); - std::string msg = args(1).string_value (); + std::string dlg = args(0).string_value (); + std::string msg = args(1).string_value (); std::string title = args(2).string_value (); if (! error_state) @@ -173,11 +173,11 @@ if (args.length () == 6) { - std::string msg = args(0).string_value (); - std::string title = args(1).string_value (); - std::string btn1 = args(2).string_value (); - std::string btn2 = args(3).string_value (); - std::string btn3 = args(4).string_value (); + std::string msg = args(0).string_value (); + std::string title = args(1).string_value (); + std::string btn1 = args(2).string_value (); + std::string btn2 = args(3).string_value (); + std::string btn3 = args(4).string_value (); std::string btndef = args(5).string_value (); if (! error_state) @@ -255,7 +255,7 @@ std::list<std::string>::iterator it = items_lst.begin (); - for (int idx = 0; idx < items_lst.size ()-2; idx++) + for (unsigned int idx = 0; idx < items_lst.size ()-2; idx++) { items.xelem (idx) = *it; it++;
rename from libinterp/interp-core/pt-jit.cc rename to libinterp/corefcn/pt-jit.cc --- a/libinterp/interp-core/pt-jit.cc +++ b/libinterp/corefcn/pt-jit.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + #define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS @@ -38,9 +40,9 @@ #ifdef HAVE_LLVM -static bool Venable_jit_debugging = false; - -static bool Venable_jit_compiler = true; +static bool Vdebug_jit = false; + +static bool Vjit_enable = true; #include <llvm/Analysis/CallGraph.h> #include <llvm/Analysis/Passes.h> @@ -1948,7 +1950,7 @@ // Ideally, we should only disable JIT if there is a breakpoint in the code we // are about to run. However, we can't figure this out in O(1) time, so we // conservatively check for the existence of any breakpoints. - return Venable_jit_compiler && ! bp_table::have_breakpoints () + return Vjit_enable && ! bp_table::have_breakpoints () && ! Vdebug_on_interrupt && ! Vdebug_on_error; } @@ -1969,13 +1971,13 @@ void tree_jit::optimize (llvm::Function *fn) { - if (Venable_jit_debugging) + if (Vdebug_jit) llvm::verifyModule (*module); module_pass_manager->run (*module); pass_manager->run (*fn); - if (Venable_jit_debugging) + if (Vdebug_jit) { std::string error; llvm::raw_fd_ostream fout ("test.bc", error, @@ -2004,7 +2006,7 @@ conv.get_variable_map ()); infer.infer (); - if (Venable_jit_debugging) + if (Vdebug_jit) { jit_block_list& blocks = infer.get_blocks (); blocks.label (); @@ -2025,7 +2027,7 @@ factory.constants (), fcn, argument_types); - if (Venable_jit_debugging) + if (Vdebug_jit) { std::cout << "-------------------- raw function "; std::cout << "--------------------\n"; @@ -2073,7 +2075,7 @@ llvm::Function *llvm_function = wrapper.to_llvm (); tjit.optimize (llvm_function); - if (Venable_jit_debugging) + if (Vdebug_jit) { std::cout << "-------------------- optimized and wrapped "; std::cout << "--------------------\n"; @@ -2089,7 +2091,7 @@ { argument_types.clear (); - if (Venable_jit_debugging) + if (Vdebug_jit) { if (e.known ()) std::cout << "jit fail: " << e.what () << std::endl; @@ -2227,7 +2229,7 @@ infer.infer (); - if (Venable_jit_debugging) + if (Vdebug_jit) { jit_block_list& blocks = infer.get_blocks (); blocks.label (); @@ -2246,7 +2248,7 @@ } catch (const jit_fail_exception& e) { - if (Venable_jit_debugging) + if (Vdebug_jit) { if (e.known ()) std::cout << "jit fail: " << e.what () << std::endl; @@ -2255,7 +2257,7 @@ if (llvm_function) { - if (Venable_jit_debugging) + if (Vdebug_jit) { std::cout << "-------------------- llvm ir --------------------"; std::cout << *llvm_function << std::endl; @@ -2264,7 +2266,7 @@ tjit.optimize (llvm_function); - if (Venable_jit_debugging) + if (Vdebug_jit) { std::cout << "-------------------- optimized llvm ir " << "--------------------\n"; @@ -2286,45 +2288,45 @@ #endif -DEFUN (enable_jit_debugging, args, nargout, +DEFUN (debug_jit, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {@var{val} =} enable_jit_debugging ()\n\ -@deftypefnx {Built-in Function} {@var{old_val} =} enable_jit_debugging (@var{new_val})\n\ -@deftypefnx {Built-in Function} {} enable_jit_debugging (@var{new_val}, \"local\")\n\ +@deftypefn {Built-in Function} {@var{val} =} debug_jit ()\n\ +@deftypefnx {Built-in Function} {@var{old_val} =} debug_jit (@var{new_val})\n\ +@deftypefnx {Built-in Function} {} debug_jit (@var{new_val}, \"local\")\n\ Query or set the internal variable that determines whether\n\ debugging/tracing is enabled for Octave's JIT compiler.\n\ \n\ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\ variable value is restored when exiting the function.\n\ -@seealso{enable_jit_compiler}\n\ +@seealso{jit_enable}\n\ @end deftypefn") { #if defined (HAVE_LLVM) - return SET_INTERNAL_VARIABLE (enable_jit_debugging); + return SET_INTERNAL_VARIABLE (debug_jit); #else - warning ("enable_jit_debugging: JIT compiling not available in this version of Octave"); + warning ("debug_jit: JIT compiling not available in this version of Octave"); return octave_value (); #endif } -DEFUN (enable_jit_compiler, args, nargout, +DEFUN (jit_enable, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {@var{val} =} enable_jit_compiler ()\n\ -@deftypefnx {Built-in Function} {@var{old_val} =} enable_jit_compiler (@var{new_val})\n\ -@deftypefnx {Built-in Function} {} enable_jit_compiler (@var{new_val}, \"local\")\n\ +@deftypefn {Built-in Function} {@var{val} =} jit_enable ()\n\ +@deftypefnx {Built-in Function} {@var{old_val} =} jit_enable (@var{new_val})\n\ +@deftypefnx {Built-in Function} {} jit_enable (@var{new_val}, \"local\")\n\ Query or set the internal variable that enables Octave's JIT compiler.\n\ \n\ When called from inside a function with the \"local\" option, the variable is\n\ changed locally for the function and any subroutines it calls. The original\n\ variable value is restored when exiting the function.\n\ -@seealso{enable_jit_debugging}\n\ +@seealso{debug_jit}\n\ @end deftypefn") { #if defined (HAVE_LLVM) - return SET_INTERNAL_VARIABLE (enable_jit_compiler); + return SET_INTERNAL_VARIABLE (jit_enable); #else - warning ("enable_jit_compiler: JIT compiling not available in this version of Octave"); + warning ("jit_enable: JIT compiling not available in this version of Octave"); return octave_value (); #endif }
rename from libinterp/interp-core/pt-jit.h rename to libinterp/corefcn/pt-jit.h --- a/libinterp/interp-core/pt-jit.h +++ b/libinterp/corefcn/pt-jit.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + #if !defined (octave_tree_jit_h) #define octave_tree_jit_h 1
--- a/libinterp/corefcn/quadcc.cc +++ b/libinterp/corefcn/quadcc.cc @@ -1495,7 +1495,7 @@ @end example\n\ \n\ @noindent\n\ -which uses the element-by-element `dot' form for all operators.\n\ +which uses the element-by-element ``dot'' form for all operators.\n\ \n\ @var{a} and @var{b} are the lower and upper limits of integration. Either\n\ or both limits may be infinite. @code{quadcc} handles an inifinite limit\n\
--- a/libinterp/corefcn/qz.cc +++ b/libinterp/corefcn/qz.cc @@ -342,7 +342,7 @@ \n\ @table @var\n\ @item opt\n\ -for ordering eigenvalues of the GEP pencil. The leading block\n\ +for ordering eigenvalues of the @nospell{GEP} pencil. The leading block\n\ of the revised pencil contains all eigenvalues that satisfy:\n\ \n\ @table @asis\n\ @@ -367,7 +367,7 @@ @end enumerate\n\ \n\ Note: @code{qz} performs permutation balancing, but not scaling\n\ -(@pxref{doc-balance}). The order of output arguments was selected for\n\ +(@pxref{docXbalance}). The order of output arguments was selected for\n\ compatibility with @sc{matlab}.\n\ @seealso{balance, eig, schur}\n\ @end deftypefn")
--- a/libinterp/corefcn/regexp.cc +++ b/libinterp/corefcn/regexp.cc @@ -1067,7 +1067,7 @@ \n\ Case insensitive regular expression string matching. Search for @var{pat} in\n\ @var{str} and return the positions and substrings of any matches, or empty\n\ -values if there are none. @xref{doc-regexp,,regexp}, for details on the\n\ +values if there are none. @xref{docXregexp,,regexp}, for details on the\n\ syntax of the search pattern.\n\ @seealso{regexp}\n\ @end deftypefn") @@ -1279,7 +1279,7 @@ Replace occurrences of pattern @var{pat} in @var{string} with @var{repstr}.\n\ \n\ The pattern is a regular expression as documented for @code{regexp}.\n\ -@xref{doc-regexp,,regexp}.\n\ +@xref{docXregexp,,regexp}.\n\ \n\ The replacement string may contain @code{$i}, which substitutes\n\ for the ith set of parentheses in the match string. For example,\n\ @@ -1305,8 +1305,9 @@ \n\ Implementation Note: For compatibility with @sc{matlab}, ordinary escape\n\ sequences (e.g., \"\\n\" => newline) are processed in both @var{pat}\n\ -and @var{repstr} regardless of whether they were defined within single quotes. Use a second backslash to stop interpolation of the escape sequence (e.g.,\n\ -\"\\\\n\") or use the @code{regexptranslate} function.\n\ +and @var{repstr} regardless of whether they were defined within single\n\ +quotes. Use a second backslash to stop interpolation of the escape sequence\n\ +(e.g., \"\\\\n\") or use the @code{regexptranslate} function.\n\ @seealso{regexp, regexpi, strrep}\n\ @end deftypefn") {
rename from libinterp/interpfcn/sighandlers.cc rename to libinterp/corefcn/sighandlers.cc --- a/libinterp/interpfcn/sighandlers.cc +++ b/libinterp/corefcn/sighandlers.cc @@ -630,10 +630,18 @@ m.assign ("INT", SIGINT); #endif +#ifdef SIGIO + m.assign ("IO", SIGIO); +#endif + #ifdef SIGIOT m.assign ("IOT", SIGIOT); #endif +#ifdef SIGKILL + m.assign ("KILL", SIGKILL); +#endif + #ifdef SIGLOST m.assign ("LOST", SIGLOST); #endif @@ -662,6 +670,10 @@ m.assign ("SEGV", SIGSEGV); #endif +#ifdef SIGSTKFLT + m.assign ("STKFLT", SIGSTKFLT); +#endif + #ifdef SIGSTOP m.assign ("STOP", SIGSTOP); #endif @@ -690,6 +702,10 @@ m.assign ("TTOU", SIGTTOU); #endif +#ifdef SIGUNUSED + m.assign ("UNUSED", SIGUNUSED); +#endif + #ifdef SIGURG m.assign ("URG", SIGURG); #endif @@ -706,10 +722,6 @@ m.assign ("VTALRM", SIGVTALRM); #endif -#ifdef SIGIO - m.assign ("IO", SIGIO); -#endif - #ifdef SIGWINCH m.assign ("WINCH", SIGWINCH); #endif
rename from libinterp/interp-core/siglist.c rename to libinterp/corefcn/siglist.c --- a/libinterp/interp-core/siglist.c +++ b/libinterp/corefcn/siglist.c @@ -122,7 +122,7 @@ sys_siglist[SIGMSG] = "Monitor mode data available"; # endif # ifdef SIGPHONE - sys_siglist[SIGWIND] = "SIGPHONE"; + sys_siglist[SIGPHONE] = "SIGPHONE"; # endif # ifdef SIGPIPE sys_siglist[SIGPIPE] = "Broken pipe"; @@ -154,6 +154,9 @@ # ifdef SIGSOUND sys_siglist[SIGSOUND] = "Sound completed"; # endif +# ifdef SIGSTKFLT + sys_siglist[SIGSTKFLT] = "Stack fault"; +# endif # ifdef SIGSTOP sys_siglist[SIGSTOP] = "Stopped (signal)"; # endif @@ -181,6 +184,9 @@ # ifdef SIGTTOU sys_siglist[SIGTTOU] = "Stopped (tty output)"; # endif +# ifdef SIGUNUSED + sys_siglist[SIGUNUSED] = "SIGUNUSED"; +# endif # ifdef SIGURG sys_siglist[SIGURG] = "Urgent I/O condition"; # endif
--- a/libinterp/corefcn/tril.cc +++ b/libinterp/corefcn/tril.cc @@ -356,9 +356,9 @@ The default value of @var{k} is zero, so that @code{triu} and\n\ @code{tril} normally include the main diagonal as part of the result.\n\ \n\ -If the value of @var{k} is nonzero integer, the selection of elements\ -starts at an offset of @var{k} diagonals above or below the main\ -diagonal; above for positive @var{k} and below for negative @var{k}.\ +If the value of @var{k} is nonzero integer, the selection of elements\n\ +starts at an offset of @var{k} diagonals above or below the main\n\ +diagonal; above for positive @var{k} and below for negative @var{k}.\n\ \n\ The absolute value of @var{k} must not be greater than the number of\n\ sub-diagonals or super-diagonals.\n\
--- a/libinterp/dldfcn/__init_fltk__.cc +++ b/libinterp/dldfcn/__init_fltk__.cc @@ -183,7 +183,7 @@ FILE *fp = octave_popen (print_cmd.c_str (), "w"); glps_renderer rend (fp, print_term); - rend.draw (gh_manager::get_object (number)); + rend.draw (gh_manager::get_object (number), print_cmd); octave_pclose (fp); print_mode = false; @@ -1219,7 +1219,7 @@ int key_a = key2ascii (key); if (key_a && fp.get_keypressfcn ().is_defined ()) { - Octave_map evt; + octave_scalar_map evt; evt.assign ("Character", octave_value (key_a)); evt.assign ("Key", octave_value (std::tolower (key_a))); evt.assign ("Modifier", octave_value (modifier2cell ())); @@ -1258,7 +1258,7 @@ int key_a = key2ascii (key); if (key_a && fp.get_keyreleasefcn ().is_defined ()) { - Octave_map evt; + octave_scalar_map evt; evt.assign ("Character", octave_value (key_a)); evt.assign ("Key", octave_value (std::tolower (key_a))); evt.assign ("Modifier", octave_value (modifier2cell ())); @@ -1286,7 +1286,7 @@ set_axes_currentpoint (ax_obj, pos_x, pos_y); } - fp.execute_windowbuttondownfcn (); + fp.execute_windowbuttondownfcn (Fl::event_button()); if (Fl::event_button () == 1 || Fl::event_button () == 3) return 1; @@ -2071,7 +2071,7 @@ DEFUN_DLD (__have_fltk__, , , "-*- texinfo -*-\n\ -@deftypefn {Loadable Function} {@var{FLTK_available} =} __have_fltk__ ()\n\ +@deftypefn {Loadable Function} {@var{FLTK_available} =} __have_fltk__ ()\n\ Undocumented internal function.\n\ @end deftypefn") {
--- a/libinterp/dldfcn/__magick_read__.cc +++ b/libinterp/dldfcn/__magick_read__.cc @@ -541,14 +541,14 @@ static void jpg_settings (std::vector<Magick::Image>& imvec, - const Octave_map& options, + const octave_map& options, bool) { bool something_set = false; // Quality setting octave_value result; - Octave_map::const_iterator p; + octave_map::const_iterator p; bool found_it = false; for (p = options.begin (); p != options.end (); p++) @@ -840,7 +840,7 @@ if (! error_state && params.is_defined ()) { - Octave_map options = params.map_value (); + octave_map options = params.map_value (); // Insert calls here to handle parameters for various image formats if (fmt == "jpg" || fmt == "jpeg") @@ -1064,7 +1064,7 @@ 0 }; - Octave_map info (string_vector (fields), dim_vector (nframes, 1)); + octave_map info (dim_vector (nframes, 1), string_vector (fields)); file_stat fs (filename);
--- a/libinterp/dldfcn/ccolamd.cc +++ b/libinterp/dldfcn/ccolamd.cc @@ -135,10 +135,10 @@ \n\ The authors of the code itself are S. Larimore, T. Davis (Univ. of Florida)\n\ and S. Rajamanickam in collaboration with J. Bilbert and E. Ng. Supported\n\ -by the National Science Foundation (DMS-9504974, DMS-9803599, CCR-0203270),\n\ -and a grant from Sandia National Lab. See\n\ -@url{http://www.cise.ufl.edu/research/sparse} for ccolamd, csymamd, amd,\n\ -colamd, symamd, and other related orderings.\n\ +by the National Science Foundation\n\ +@nospell{(DMS-9504974, DMS-9803599, CCR-0203270)}, and a grant from Sandia\n\ +National Lab. See @url{http://www.cise.ufl.edu/research/sparse} for\n\ +ccolamd, csymamd, amd, colamd, symamd, and other related orderings.\n\ @seealso{colamd, csymamd}\n\ @end deftypefn") { @@ -390,10 +390,10 @@ \n\ The authors of the code itself are S. Larimore, T. Davis (Uni of Florida)\n\ and S. Rajamanickam in collaboration with J. Bilbert and E. Ng. Supported\n\ -by the National Science Foundation (DMS-9504974, DMS-9803599, CCR-0203270),\n\ -and a grant from Sandia National Lab. See\n\ -@url{http://www.cise.ufl.edu/research/sparse} for ccolamd, csymamd, amd,\n\ -colamd, symamd, and other related orderings.\n\ +by the National Science Foundation\n\ +@nospell{(DMS-9504974, DMS-9803599, CCR-0203270)}, and a grant from Sandia\n\ +National Lab. See @url{http://www.cise.ufl.edu/research/sparse} for\n\ +ccolamd, csymamd, amd, colamd, symamd, and other related orderings.\n\ @seealso{symamd, ccolamd}\n\ @end deftypefn") {
--- a/libinterp/dldfcn/fftw.cc +++ b/libinterp/dldfcn/fftw.cc @@ -56,7 +56,7 @@ will save the existing wisdom used by Octave to the string @var{wisdom}.\n\ This string can then be saved to a file and restored using the @code{save}\n\ and @code{load} commands respectively. This existing wisdom can be\n\ -reimported as follows\n\ +re-imported as follows\n\ \n\ @example\n\ fftw (\"dwisdom\", @var{wisdom})\n\ @@ -120,8 +120,9 @@ fftw (\"threads\", @var{NTHREADS})\n\ @end example\n\ \n\ -Note that octave must be compiled with multi-threaded FFTW support for this feature.\n\ -The number of processors available to the current process is used per default.\n\ +Note that octave must be compiled with multi-threaded @sc{fftw} support for\n\ +this feature. The number of processors available to the current process is\n\ +used per default.\n\ \n\ @seealso{fft, ifft, fft2, ifft2, fftn, ifftn}\n\ @end deftypefn")
--- a/libinterp/genprops.awk +++ b/libinterp/genprops.awk @@ -70,6 +70,10 @@ ## S: There is a custom extern definition for the type-specific set ## function, so we emit only the declaration. ## +################################################################################ +## 'o','O','a' are currently not processed. They are commented out in code. +################################################################################ +## ## o: There is a custom inline definition for the octave_value version ## of the set function, so we don't emit one. ## @@ -98,6 +102,7 @@ ## ## constructor, which creates a new radio_property and so cannot ## preserve the old list of possible values. +################################################################################ ## ## l: Add the line ##
deleted file mode 100644 --- a/libinterp/interp-core/module.mk +++ /dev/null @@ -1,140 +0,0 @@ -EXTRA_DIST += \ - interp-core/module.mk \ - interp-core/gl2ps.c \ - interp-core/mxarray.in.h \ - interp-core/oct-errno.in.cc - -JIT_INC = \ - interp-core/jit-util.h \ - interp-core/jit-typeinfo.h \ - interp-core/jit-ir.h \ - interp-core/pt-jit.h - -INTERP_CORE_INC = \ - interp-core/Cell.h \ - interp-core/action-container.h \ - interp-core/c-file-ptr-stream.h \ - interp-core/comment-list.h \ - interp-core/cutils.h \ - interp-core/defun-dld.h \ - interp-core/defun-int.h \ - interp-core/display.h \ - interp-core/dynamic-ld.h \ - interp-core/event-queue.h \ - interp-core/gl-render.h \ - interp-core/gl2ps-renderer.h \ - interp-core/gl2ps.h \ - interp-core/gripes.h \ - interp-core/ls-ascii-helper.h \ - interp-core/ls-hdf5.h \ - interp-core/ls-mat-ascii.h \ - interp-core/ls-mat4.h \ - interp-core/ls-mat5.h \ - interp-core/ls-oct-binary.h \ - interp-core/ls-utils.h \ - interp-core/mex.h \ - interp-core/mexproto.h \ - interp-core/mxarray.in.h \ - interp-core/oct-errno.h \ - interp-core/oct-fstrm.h \ - interp-core/oct-hdf5.h \ - interp-core/oct-iostrm.h \ - interp-core/oct-lvalue.h \ - interp-core/oct-map.h \ - interp-core/oct-obj.h \ - interp-core/oct-prcstrm.h \ - interp-core/oct-procbuf.h \ - interp-core/oct-stdstrm.h \ - interp-core/oct-stream.h \ - interp-core/oct-strstrm.h \ - interp-core/oct.h \ - interp-core/procstream.h \ - interp-core/siglist.h \ - interp-core/sparse-xdiv.h \ - interp-core/sparse-xpow.h \ - interp-core/txt-eng-ft.h \ - interp-core/txt-eng.h \ - interp-core/unwind-prot.h \ - interp-core/xdiv.h \ - interp-core/xnorm.h \ - interp-core/xpow.h \ - interp-core/zfstream.h \ - $(JIT_INC) - -JIT_SRC = \ - interp-core/jit-util.cc \ - interp-core/jit-typeinfo.cc \ - interp-core/jit-ir.cc \ - interp-core/pt-jit.cc - -C_INTERP_CORE_SRC = \ - interp-core/cutils.c \ - interp-core/matherr.c \ - interp-core/siglist.c \ - interp-core/xgl2ps.c - -INTERP_CORE_SRC = \ - interp-core/Cell.cc \ - interp-core/c-file-ptr-stream.cc \ - interp-core/comment-list.cc \ - interp-core/display.cc \ - interp-core/dynamic-ld.cc \ - interp-core/gl-render.cc \ - interp-core/gl2ps-renderer.cc \ - interp-core/gripes.cc \ - interp-core/ls-ascii-helper.cc \ - interp-core/ls-hdf5.cc \ - interp-core/ls-mat-ascii.cc \ - interp-core/ls-mat4.cc \ - interp-core/ls-mat5.cc \ - interp-core/ls-oct-binary.cc \ - interp-core/ls-utils.cc \ - interp-core/mex.cc \ - interp-core/oct-fstrm.cc \ - interp-core/oct-iostrm.cc \ - interp-core/oct-lvalue.cc \ - interp-core/oct-map.cc \ - interp-core/oct-obj.cc \ - interp-core/oct-prcstrm.cc \ - interp-core/oct-procbuf.cc \ - interp-core/oct-stream.cc \ - interp-core/oct-strstrm.cc \ - interp-core/procstream.cc \ - interp-core/sparse-xdiv.cc \ - interp-core/sparse-xpow.cc \ - interp-core/txt-eng-ft.cc \ - interp-core/unwind-prot.cc \ - interp-core/xdiv.cc \ - interp-core/xnorm.cc \ - interp-core/xpow.cc \ - interp-core/zfstream.cc \ - $(JIT_SRC) \ - $(C_INTERP_CORE_SRC) - -## FIXME: Automake does not support per-object rules. -## These rules could be emulated by creating a new convenience -## library and using per-library rules. Or we can just live -## without the rule since there haven't been any problems. (09/18/2012) -#display.df display.lo: CPPFLAGS += $(X11_FLAGS) - -## Special rules for sources which must be built before rest of compilation. -interp-core/oct-errno.cc: interp-core/oct-errno.in.cc Makefile - if test -n "$(PERL)"; then \ - $(srcdir)/mk-errno-list --perl "$(PERL)" < $< > $@-t; \ - elif test -n "$(PYTHON)"; then \ - $(srcdir)/mk-errno-list --python "$(PYTHON)" < $< > $@-t; \ - else \ - $(SED) '/@SYSDEP_ERRNO_LIST@/D' $< > $@-t; \ - fi - mv $@-t $@ - -interp-core/mxarray.h: interp-core/mxarray.in.h Makefile - $(SED) < $< \ - -e "s|%NO_EDIT_WARNING%|DO NOT EDIT! Generated automatically from $(<F) by Make.|" \ - -e "s|%OCTAVE_IDX_TYPE%|${OCTAVE_IDX_TYPE}|" > $@-t - mv $@-t $@ - -noinst_LTLIBRARIES += interp-core/libinterp-core.la - -interp_core_libinterp_core_la_SOURCES = $(INTERP_CORE_SRC) -interp_core_libinterp_core_la_CPPFLAGS = $(liboctinterp_la_CPPFLAGS)
deleted file mode 100644 --- a/libinterp/interpfcn/module.mk +++ /dev/null @@ -1,76 +0,0 @@ -EXTRA_DIST += \ - interpfcn/module.mk \ - interpfcn/defaults.in.h \ - interpfcn/graphics.in.h - -INTERPFCN_INC = \ - interpfcn/data.h \ - interpfcn/debug.h \ - interpfcn/defun.h \ - interpfcn/dirfns.h \ - interpfcn/error.h \ - interpfcn/file-io.h \ - interpfcn/help.h \ - interpfcn/hook-fcn.h \ - interpfcn/input.h \ - interpfcn/load-path.h \ - interpfcn/load-save.h \ - interpfcn/ls-oct-ascii.h \ - interpfcn/octave-link.h \ - interpfcn/oct-hist.h \ - interpfcn/pager.h \ - interpfcn/pr-output.h \ - interpfcn/profiler.h \ - interpfcn/sighandlers.h \ - interpfcn/symtab.h \ - interpfcn/sysdep.h \ - interpfcn/toplev.h \ - interpfcn/utils.h \ - interpfcn/variables.h \ - interpfcn/workspace-element.h - -INTERPFCN_SRC = \ - interpfcn/data.cc \ - interpfcn/debug.cc \ - interpfcn/defaults.cc \ - interpfcn/defun.cc \ - interpfcn/dirfns.cc \ - interpfcn/error.cc \ - interpfcn/file-io.cc \ - interpfcn/graphics.cc \ - interpfcn/help.cc \ - interpfcn/hook-fcn.cc \ - interpfcn/input.cc \ - interpfcn/load-path.cc \ - interpfcn/load-save.cc \ - interpfcn/ls-oct-ascii.cc \ - interpfcn/octave-link.cc \ - interpfcn/oct-hist.cc \ - interpfcn/pager.cc \ - interpfcn/pr-output.cc \ - interpfcn/profiler.cc \ - interpfcn/sighandlers.cc \ - interpfcn/symtab.cc \ - interpfcn/sysdep.cc \ - interpfcn/toplev.cc \ - interpfcn/utils.cc \ - interpfcn/variables.cc - -## defaults.h and graphics.h must depend on Makefile. Calling configure -## may change default/config values. However, calling configure will also -## regenerate the Makefiles from Makefile.am and trigger the rules below. -interpfcn/defaults.h: interpfcn/defaults.in.h Makefile - @$(do_subst_default_vals) - -interpfcn/graphics.h: interpfcn/graphics.in.h genprops.awk Makefile - $(AWK) -f $(srcdir)/genprops.awk $< > $@-t - mv $@-t $@ - -interpfcn/graphics-props.cc: interpfcn/graphics.in.h genprops.awk Makefile - $(AWK) -v emit_graphics_props=1 -f $(srcdir)/genprops.awk $< > $@-t - mv $@-t $@ - -noinst_LTLIBRARIES += interpfcn/libinterpfcn.la - -interpfcn_libinterpfcn_la_SOURCES = $(INTERPFCN_SRC) -interpfcn_libinterpfcn_la_CPPFLAGS = $(liboctinterp_la_CPPFLAGS)
--- a/libinterp/mk-pkg-add +++ b/libinterp/mk-pkg-add @@ -1,4 +1,4 @@ -#! /bin/sh -e +#! /bin/sh # # Copyright (C) 2005-2012 John W. Eaton # @@ -18,6 +18,8 @@ # along with Octave; see the file COPYING. If not, see # <http://www.gnu.org/licenses/>. +set -e + SED=${SED:-'sed'} for f in "$@"; do
--- a/libinterp/octave-value/ov-base-sparse.h +++ b/libinterp/octave-value/ov-base-sparse.h @@ -72,6 +72,8 @@ ~octave_base_sparse (void) { } + octave_idx_type numel (void) const { return dims ().safe_numel (); } + octave_idx_type nnz (void) const { return matrix.nnz (); } octave_idx_type nzmax (void) const { return matrix.nzmax (); }
--- a/libinterp/octave-value/ov-base.h +++ b/libinterp/octave-value/ov-base.h @@ -331,7 +331,7 @@ virtual bool is_defined (void) const { return false; } - bool is_empty (void) const { return numel () == 0; } + bool is_empty (void) const { return (dims ().any_zero ()); } virtual bool is_cell (void) const { return false; }
--- a/libinterp/octave-value/ov-bool-sparse.h +++ b/libinterp/octave-value/ov-bool-sparse.h @@ -83,9 +83,9 @@ octave_base_value *try_narrowing_conversion (void); - // FIXME Adapt idx_vector to allow sparse logical indexing!! + // FIXME Adapt idx_vector to allow sparse logical indexing without overflow!! idx_vector index_vector (void) const - { return idx_vector (bool_array_value ()); } + { return idx_vector (matrix); } builtin_type_t builtin_type (void) const { return btyp_bool; }
--- a/libinterp/octave-value/ov-cx-mat.cc +++ b/libinterp/octave-value/ov-cx-mat.cc @@ -68,7 +68,7 @@ { CAST_CONV_ARG (const octave_complex_matrix&); - return new octave_float_complex_matrix (v.float_complex_matrix_value ()); + return new octave_float_complex_matrix (v.float_complex_array_value ()); } octave_base_value::type_conv_info
--- a/libinterp/octave-value/ov-fcn-inline.cc +++ b/libinterp/octave-value/ov-fcn-inline.cc @@ -645,7 +645,7 @@ be noted that i, and j are ignored as arguments due to the\n\ ambiguity between their use as a variable or their use as an inbuilt\n\ constant. All arguments followed by a parenthesis are considered\n\ -to be functions. If no arguments are found, a function taking a single\n\ +to be functions. If no arguments are found, a function taking a single\n\ argument named @code{x} will be created.\n\ \n\ If the second and subsequent arguments are character strings,\n\
--- a/libinterp/octave-value/ov-flt-cx-diag.h +++ b/libinterp/octave-value/ov-flt-cx-diag.h @@ -61,7 +61,7 @@ bool is_complex_type (void) const { return true; } - bool is_double_type (void) const { return true; } + bool is_single_type (void) const { return true; } bool is_float_type (void) const { return true; }
--- a/libinterp/octave-value/ov-java.cc +++ b/libinterp/octave-value/ov-java.cc @@ -1321,7 +1321,7 @@ else { found = 0; - error ("cannot convert matrix of type `%s'", val.class_name ().c_str ()); + error ("cannot convert matrix of type '%s'", val.class_name ().c_str ()); } } else if (val.is_cellstr ())
--- a/libinterp/octave-value/ov-struct.cc +++ b/libinterp/octave-value/ov-struct.cc @@ -1751,7 +1751,7 @@ "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} struct (@var{field1}, @var{value1}, @var{field2}, @var{value2}, @dots{})\n\ \n\ -Create a scalar or array structure and initialize its values. The\n\ +Create a scalar or array structure and initialize its values. The\n\ @var{field1}, @var{field2}, @dots{} variables are strings giving the\n\ names of the fields and the @var{value1}, @var{value2}, @dots{}\n\ variables can be any type.\n\ @@ -1764,8 +1764,8 @@ \n\ If the argument is an object, return the underlying struct.\n\ \n\ -Observe that the syntax is optimized for struct @strong{arrays}. Consider the\n\ -following examples:\n\ +Observe that the syntax is optimized for struct @strong{arrays}. Consider\n\ +the following examples:\n\ \n\ @example\n\ @group\n\ @@ -1789,11 +1789,11 @@ @end example\n\ \n\ @noindent\n\ -The first case is an ordinary scalar struct, one field, one value. The\n\ +The first case is an ordinary scalar struct, one field, one value. The\n\ second produces an empty struct array with one field and no values, since\n\ -s being passed an empty cell array of struct array values. When the value is\n\ +s being passed an empty cell array of struct array values. When the value is\n\ a cell array containing a single entry, this becomes a scalar struct with\n\ -that single entry as the value of the field. That single entry happens\n\ +that single entry as the value of the field. That single entry happens\n\ to be an empty cell array.\n\ \n\ Finally, if the value is a non-scalar cell array, then @code{struct}\n\
--- a/libinterp/octave-value/ov-usr-fcn.cc +++ b/libinterp/octave-value/ov-usr-fcn.cc @@ -58,6 +58,8 @@ // Whether to optimize subsasgn method calls. static bool Voptimize_subsasgn_calls = true; +// The character to fill with when creating string arrays. +extern char Vstring_fill_char; // see pt-mat.cc std::map<std::string, octave_value> octave_user_code::subfunctions (void) const @@ -734,7 +736,7 @@ // which might be redefined in a function. Keep the old argn name // for backward compatibility of functions that use it directly. - symbol_table::force_assign ("argn", arg_names); + symbol_table::force_assign ("argn", charMatrix (arg_names, Vstring_fill_char)); symbol_table::force_assign (".argn.", Cell (arg_names)); symbol_table::mark_hidden (".argn.");
--- a/libinterp/octave.cc +++ b/libinterp/octave.cc @@ -151,24 +151,25 @@ static std::string image_path; // If TRUE, ignore the window system even if it is available. -// (--no-window-system) +// (--no-window-system, -W) static bool no_window_system = false; // Usage message static const char *usage_string = - "octave [-HVdfhiqvx] [--debug] [--echo-commands] [--eval CODE]\n\ - [--exec-path path] [--force-gui] [--help] [--image-path path]\n\ + "octave [-HVWdfhiqvx] [--debug] [--debug-jit] [--doc-cache-file file]\n\ + [--echo-commands] [--eval CODE] [--exec-path path]\n\ + [--force-gui] [--help] [--image-path path]\n\ [--info-file file] [--info-program prog] [--interactive]\n\ - [--jit-debugging] [--line-editing] [--no-gui] [--no-history]\n\ + [--line-editing] [--no-gui] [--no-history]\n\ [--no-init-file] [--no-init-path] [--no-jit-compiler]\n\ [--no-line-editing] [--no-site-file] [--no-window-system]\n\ - [-p path] [--path path] [--silent] [--traditional]\n\ - [--verbose] [--version] [file]"; + [--norc] [-p path] [--path path] [--persist] [--silent]\n\ + [--traditional] [--verbose] [--version] [file]"; // This is here so that it's more likely that the usage message and // the real set of options will agree. Note: the '+' must come first // to prevent getopt from permuting arguments! -static const char *short_opts = "+HVdfhip:qvx"; +static const char *short_opts = "+HWVdfhip:qvx"; // The code to evaluate at startup (--eval CODE) static std::string code_to_eval; @@ -192,7 +193,7 @@ #define IMAGE_PATH_OPTION 6 #define INFO_FILE_OPTION 7 #define INFO_PROG_OPTION 8 -#define JIT_DEBUGGING_OPTION 9 +#define DEBUG_JIT_OPTION 9 #define LINE_EDITING_OPTION 10 #define NO_GUI_OPTION 11 #define NO_INIT_FILE_OPTION 12 @@ -200,14 +201,14 @@ #define NO_JIT_COMPILER_OPTION 14 #define NO_LINE_EDITING_OPTION 15 #define NO_SITE_FILE_OPTION 16 -#define NO_WINDOW_SYSTEM_OPTION 17 -#define PERSIST_OPTION 18 -#define TEXI_MACROS_FILE_OPTION 19 -#define TRADITIONAL_OPTION 20 +#define PERSIST_OPTION 17 +#define TEXI_MACROS_FILE_OPTION 18 +#define TRADITIONAL_OPTION 19 struct option long_opts[] = { { "braindead", no_argument, 0, TRADITIONAL_OPTION }, { "built-in-docstrings-file", required_argument, 0, BUILT_IN_DOCSTRINGS_FILE_OPTION }, { "debug", no_argument, 0, 'd' }, + { "debug-jit", no_argument, 0, DEBUG_JIT_OPTION }, { "doc-cache-file", required_argument, 0, DOC_CACHE_FILE_OPTION }, { "echo-commands", no_argument, 0, 'x' }, { "eval", required_argument, 0, EVAL_OPTION }, @@ -218,7 +219,6 @@ { "info-file", required_argument, 0, INFO_FILE_OPTION }, { "info-program", required_argument, 0, INFO_PROG_OPTION }, { "interactive", no_argument, 0, 'i' }, - { "jit-debugging", no_argument, 0, JIT_DEBUGGING_OPTION }, { "line-editing", no_argument, 0, LINE_EDITING_OPTION }, { "no-gui", no_argument, 0, NO_GUI_OPTION }, { "no-history", no_argument, 0, 'H' }, @@ -227,7 +227,7 @@ { "no-jit-compiler", no_argument, 0, NO_JIT_COMPILER_OPTION }, { "no-line-editing", no_argument, 0, NO_LINE_EDITING_OPTION }, { "no-site-file", no_argument, 0, NO_SITE_FILE_OPTION }, - { "no-window-system", no_argument, 0, NO_WINDOW_SYSTEM_OPTION }, + { "no-window-system", no_argument, 0, 'W' }, { "norc", no_argument, 0, 'f' }, { "path", required_argument, 0, 'p' }, { "persist", no_argument, 0, PERSIST_OPTION }, @@ -523,7 +523,9 @@ \n\ Options:\n\ \n\ + --built-in-docstrings-file FILE Use docs for built-ins from FILE.\n\ --debug, -d Enter parser debugging mode.\n\ + --debug-jit Enable JIT compiler debugging/tracing.\n\ --doc-cache-file FILE Use doc cache file FILE.\n\ --echo-commands, -x Echo commands as they are executed.\n\ --eval CODE Evaluate CODE. Exit when done unless --persist.\n\ @@ -534,7 +536,6 @@ --info-file FILE Use top-level info file FILE.\n\ --info-program PROGRAM Use PROGRAM for reading info files.\n\ --interactive, -i Force interactive behavior.\n\ - --jit-debug Enable JIT compiler debugging/tracing.\n\ --line-editing Force readline use for command-line editing.\n\ --no-gui Disable the graphical user interface.\n\ --no-history, -H Don't save commands to the history list\n\ @@ -543,11 +544,11 @@ --no-jit-compiler Disable the JIT compiler.\n\ --no-line-editing Don't use readline for command-line editing.\n\ --no-site-file Don't read the site-wide octaverc file.\n\ - --no-window-system Disable window system, including graphics.\n\ + --no-window-system, -W Disable window system, including graphics.\n\ --norc, -f Don't read any initialization files.\n\ --path PATH, -p PATH Add PATH to head of function search path.\n\ --persist Go interactive after --eval or reading from FILE.\n\ - --silent, -q Don't print message at startup.\n\ + --silent, --quiet, -q Don't print message at startup.\n\ --texi-macros-file FILE Use Texinfo macros in FILE for makeinfo command.\n\ --traditional Set variables for closer MATLAB compatibility.\n\ --verbose, -V Enable verbose output in some cases.\n\ @@ -626,7 +627,7 @@ Fbeep_on_error (octave_value (true)); Fconfirm_recursive_rmdir (octave_value (false)); Fcrash_dumps_octave_core (octave_value (false)); - Fdefault_save_options (octave_value ("-mat-binary")); + Fsave_default_options (octave_value ("-mat-binary")); Fdo_braindead_shortcircuit_evaluation (octave_value (true)); Ffixed_point_format (octave_value (true)); Fhistory_timestamp_format_string (octave_value ("%%-- %D %I:%M %p --%%")); @@ -682,10 +683,14 @@ break; case 'H': - Fsaving_history (octave_value (false)); + Fhistory_save (octave_value (false)); read_history_file = false; break; + case 'W': + no_window_system = true; + break; + case 'V': verbose_flag = true; break; @@ -772,8 +777,8 @@ Finfo_program (octave_value (optarg)); break; - case JIT_DEBUGGING_OPTION: - Fenable_jit_debugging (octave_value (true)); + case DEBUG_JIT_OPTION: + Fdebug_jit (octave_value (true)); break; case LINE_EDITING_OPTION: @@ -793,7 +798,7 @@ break; case NO_JIT_COMPILER_OPTION: - Fenable_jit_compiler (octave_value (false)); + Fjit_enable (octave_value (false)); break; case NO_LINE_EDITING_OPTION: @@ -804,10 +809,6 @@ read_site_files = 0; break; - case NO_WINDOW_SYSTEM_OPTION: - no_window_system = true; - break; - case PERSIST_OPTION: persist = true; break; @@ -963,7 +964,11 @@ int parse_status = execute_eval_option_code (code_to_eval); if (! (persist || remaining_args > 0)) - clean_up_and_exit (parse_status || error_state ? 1 : 0); + { + quitting_gracefully = true; + + clean_up_and_exit (parse_status || error_state ? 1 : 0); + } } if (remaining_args > 0)
--- a/libinterp/parse-tree/lex.ll +++ b/libinterp/parse-tree/lex.ll @@ -173,8 +173,15 @@ \ if (curr_lexer->previous_token_may_be_command ()) \ { \ - yyless (0); \ - curr_lexer->push_start_state (COMMAND_START); \ + if (curr_lexer->looks_like_command_arg ()) \ + { \ + yyless (0); \ + curr_lexer->push_start_state (COMMAND_START); \ + } \ + else \ + { \ + return curr_lexer->handle_op_internal (TOK, false, COMPAT); \ + } \ } \ else \ { \ @@ -1631,7 +1638,8 @@ lexical_feedback::maybe_mark_previous_token_as_variable (void) { token *tok = tokens.front (); - if (tok->is_symbol ()) + + if (tok && tok->is_symbol ()) pending_local_variables.insert (tok->symbol_name ()); } @@ -1900,6 +1908,9 @@ if (kw) { + // May be reset to true for some token types. + at_beginning_of_statement = false; + token *tok_val = 0; switch (kw->kw_id) @@ -2578,21 +2589,17 @@ current_input_column += flex_yyleng (); + assert (! at_beginning_of_statement); + return STRUCT_ELT; } - // The is_keyword_token may reset - // at_beginning_of_statement. For example, if it sees - // an else token, then the next token is at the beginning of a - // statement. - - // May set at_beginning_of_statement to true. + // If tok is a keyword token, then is_keyword_token will set + // at_beginning_of_statement. For example, if tok is and IF + // token, then at_beginning_of_statement will be false. + int kw_token = is_keyword_token (tok); - // If we found a keyword token, then the beginning_of_statement flag - // is already set. Otherwise, we won't be at the beginning of a - // statement. - if (looking_at_function_handle) { if (kw_token) @@ -2626,6 +2633,8 @@ looking_for_object_index = false; } + // The call to is_keyword_token set at_beginning_of_statement. + return kw_token; } @@ -2640,9 +2649,16 @@ token *tok_val = new token (NAME, &(symbol_table::insert (tok, sid)), input_line_number, current_input_column); + // The following symbols are handled specially so that things like + // + // pi +1 + // + // are parsed as an addition expression instead of as a command-style + // function call with the argument "+1". + if (at_beginning_of_statement && (! (is_variable (tok) - || tok == "e" + || tok == "e" || tok == "pi" || tok == "I" || tok == "i" || tok == "J" || tok == "j" || tok == "Inf" || tok == "inf"
--- a/libinterp/parse-tree/oct-parse.in.yy +++ b/libinterp/parse-tree/oct-parse.in.yy @@ -3805,6 +3805,7 @@ DEFUN (autoload, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} autoload (@var{function}, @var{file})\n\ +@deftypefnx {Built-in Function} {} autoload (@dots{}, @asis{\"remove\"})\n\ Define @var{function} to autoload from @var{file}.\n\ \n\ The second argument, @var{file}, should be an absolute file name or\n\ @@ -3813,7 +3814,7 @@ Octave load path.\n\ \n\ Normally, calls to @code{autoload} appear in PKG_ADD script files that\n\ -are evaluated when a directory is added to the Octave's load path. To\n\ +are evaluated when a directory is added to Octave's load path. To\n\ avoid having to hardcode directory names in @var{file}, if @var{file}\n\ is in the same directory as the PKG_ADD script then\n\ \n\ @@ -3823,16 +3824,20 @@ \n\ @noindent\n\ will load the function @code{foo} from the file @code{bar.oct}. The above\n\ -when @code{bar.oct} is not in the same directory or uses like\n\ +usage when @code{bar.oct} is not in the same directory or usages such as\n\ \n\ @example\n\ autoload (\"foo\", file_in_loadpath (\"bar.oct\"))\n\ @end example\n\ \n\ @noindent\n\ -are strongly discouraged, as their behavior might be unpredictable.\n\ +are strongly discouraged, as their behavior may be unpredictable.\n\ \n\ With no arguments, return a structure containing the current autoload map.\n\ +\n\ +If a third argument @asis{'remove'} is given, the function is cleared and\n\ +not loaded anymore during the current Octave session.\n\ +\n\ @seealso{PKG_ADD}\n\ @end deftypefn") { @@ -3862,7 +3867,7 @@ retval = m; } - else if (nargin == 2) + else if (nargin == 2 || nargin == 3) { string_vector argv = args.make_argv ("autoload"); @@ -3899,7 +3904,18 @@ "autoload: '%s' is not an absolute file name", nm.c_str ()); } - autoload_map[argv[1]] = nm; + if (nargin == 2) + autoload_map[argv[1]] = nm; + else if (nargin == 3) + { + if (argv[3].compare ("remove") != 0) + error_with_id ("Octave:invalid-input-arg", + "autoload: third argument can only be 'remove'"); + + // Remove function from symbol table and autoload map. + symbol_table::clear_dld_function (argv[1]); + autoload_map.erase (argv[1]); + } } } else @@ -4080,7 +4096,6 @@ return retval; } - DEFUN (source, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} source (@var{file})\n\ @@ -4207,7 +4222,7 @@ "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} feval (@var{name}, @dots{})\n\ Evaluate the function named @var{name}. Any arguments after the first\n\ -are passed on to the named function. For example,\n\ +are passed as inputs to the named function. For example,\n\ \n\ @example\n\ @group\n\ @@ -4237,8 +4252,9 @@ \n\ @noindent\n\ are equivalent ways to call the function referred to by @var{f}. If it\n\ -cannot be predicted beforehand that @var{f} is a function handle or the\n\ -function name in a string, @code{feval} can be used instead.\n\ +cannot be predicted beforehand whether @var{f} is a function handle,\n\ +function name in a string, or inline function then @code{feval} can be used\n\ +instead.\n\ @end deftypefn") { octave_value_list retval; @@ -4255,9 +4271,28 @@ DEFUN (builtin, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Loadable Function} {[@dots{}]} builtin (@var{f}, @dots{})\n\ +@deftypefn {Loadable Function} {[@dots{}] =} builtin (@var{f}, @dots{})\n\ Call the base function @var{f} even if @var{f} is overloaded to\n\ another function for the given type signature.\n\ +\n\ +This is normally useful when doing object-oriented programming and there\n\ +is a requirement to call one of Octave's base functions rather than\n\ +the overloaded one of a new class.\n\ +\n\ +A trivial example which redefines the @code{sin} function to be the\n\ +@code{cos} function shows how @code{builtin} works.\n\ +\n\ +@example\n\ +@group\n\ +sin (0)\n\ + @result{} 0\n\ +function y = sin (x), y = cos (x); endfunction\n\ +sin (0)\n\ + @result{} 1\n\ +builtin (\"sin\", 0)\n\ + @result{} 0\n\ +@end group\n\ +@end example\n\ @end deftypefn") { octave_value_list retval; @@ -4411,11 +4446,11 @@ The string @var{try} is evaluated in the current context,\n\ so any results remain available after @code{eval} returns.\n\ \n\ -The following example makes the variable @var{a} with the approximate\n\ +The following example makes the variable @var{A} with the approximate\n\ value 3.1416 available.\n\ \n\ @example\n\ -eval (\"a = acos(-1);\");\n\ +eval (\"A = acos(-1);\");\n\ @end example\n\ \n\ If an error occurs during the evaluation of @var{try} the @var{catch}\n\
--- a/libinterp/parse-tree/pt-arg-list.cc +++ b/libinterp/parse-tree/pt-arg-list.cc @@ -298,6 +298,13 @@ retval.push_back (id->name ()); } + else if (elt->is_index_expression ()) + { + tree_index_expression *idx_expr + = dynamic_cast<tree_index_expression *> (elt); + + retval.push_back (idx_expr->name ()); + } } return retval;
--- a/libinterp/parse-tree/pt-assign.cc +++ b/libinterp/parse-tree/pt-assign.cc @@ -45,134 +45,10 @@ // Simple assignment expressions. -// FIXME -- the following variable and the function that uses it -// should be removed from some future version of Octave. - -static const char *former_built_in_variables[] = -{ - "DEFAULT_EXEC_PATH", - "DEFAULT_LOADPATH", - "EDITOR", - "EXEC_PATH", - "FFTW_WISDOM_PROGRAM", - "IMAGEPATH", - "INFO_FILE", - "INFO_PROGRAM", - "LOADPATH", - "MAKEINFO_PROGRAM", - "PAGER", - "PS1", - "PS2", - "PS4", - "__kluge_procbuf_delay__", - "automatic_replot", - "beep_on_error", - "completion_append_char", - "crash_dumps_octave_core", - "current_script_file_name", - "debug_on_error", - "debug_on_interrupt", - "debug_on_warning", - "debug_symtab_lookups", - "default_save_options", - "echo_executing_commands", - "fixed_point_format", - "gnuplot_binary", - "gnuplot_command_axes", - "gnuplot_command_end", - "gnuplot_command_plot", - "gnuplot_command_replot", - "gnuplot_command_splot", - "gnuplot_command_title", - "gnuplot_command_using", - "gnuplot_command_with", - "gnuplot_has_frames", - "history_file", - "history_size", - "ignore_function_time_stamp", - "max_recursion_depth", - "octave_core_file_format", - "octave_core_file_limit", - "octave_core_file_name", - "output_max_field_width", - "output_precision", - "page_output_immediately", - "page_screen_output", - "print_answer_id_name", - "print_empty_dimensions", - "print_rhs_assign_val", - "save_header_format_string", - "save_precision", - "saving_history", - "sighup_dumps_octave_core", - "sigterm_dumps_octave_core", - "silent_functions", - "split_long_rows", - "string_fill_char", - "struct_levels_to_print", - "suppress_verbose_help_message", - "variables_can_hide_functions", - "warn_assign_as_truth_value", - "warn_associativity_change", - "warn_divide_by_zero", - "warn_empty_list_elements", - "warn_fortran_indexing", - "warn_function_name_clash", - "warn_future_time_stamp", - "warn_imag_to_real", - "warn_matlab_incompatible", - "warn_missing_semicolon", - "warn_neg_dim_as_zero", - "warn_num_to_str", - "warn_precedence_change", - "warn_reload_forces_clear", - "warn_resize_on_range_error", - "warn_separator_insert", - "warn_single_quote_string", - "warn_str_to_num", - "warn_undefined_return_values", - "warn_variable_switch_label", - "whos_line_format", - 0, -}; - -static void -maybe_warn_former_built_in_variable (const std::string& nm) -{ - static bool initialized = false; - - static std::set<std::string> vars; - - if (! initialized) - { - const char **p = former_built_in_variables; - - while (*p) - vars.insert (*p++); - - initialized = true; - } - - if (vars.find (nm) != vars.end ()) - { - const char *nm_c_str = nm.c_str (); - - warning_with_id ("Octave:built-in-variable-assignment", - "\ -In recent versions of Octave, %s is a function instead\n\ -of a built-in variable.\n\n\ -By assigning to %s, you have created a variable that hides\n\ -the function %s. To remove the variable and restore the \n\ -function, type \"clear %s\"\n", - nm_c_str, nm_c_str, nm_c_str, nm_c_str); - } -} - tree_simple_assignment::tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs, int l, int c, octave_value::assign_op t) - : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t), - first_execution (true) { } + : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t) { } tree_simple_assignment::~tree_simple_assignment (void) { @@ -200,9 +76,6 @@ { octave_value retval; - if (first_execution && lhs) - maybe_warn_former_built_in_variable (lhs->name ()); - if (error_state) return retval; @@ -271,8 +144,6 @@ } } - first_execution = false; - return retval; } @@ -307,8 +178,7 @@ tree_multi_assignment::tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs, int l, int c) - : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), - first_execution (true) { } + : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs) { } tree_multi_assignment::~tree_multi_assignment (void) { @@ -342,17 +212,6 @@ if (error_state) return retval; - if (first_execution) - { - for (tree_argument_list::iterator p = lhs->begin (); p != lhs->end (); p++) - { - tree_expression *lhs_expr = *p; - - if (lhs_expr) - maybe_warn_former_built_in_variable (lhs_expr->name ()); - } - } - if (rhs) { std::list<octave_lvalue> lvalue_list = lhs->lvalue_list (); @@ -488,8 +347,6 @@ } - first_execution = false; - return retval; }
--- a/libinterp/parse-tree/pt-assign.h +++ b/libinterp/parse-tree/pt-assign.h @@ -47,7 +47,7 @@ tree_simple_assignment (bool plhs = false, int l = -1, int c = -1, octave_value::assign_op t = octave_value::op_asn_eq) : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), ans_ass (), - etype (t), first_execution (true) { } + etype (t) { } tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs = false, int l = -1, int c = -1, @@ -100,9 +100,6 @@ // The type of the expression. octave_value::assign_op etype; - // true only on first rvalue() call. - bool first_execution; - // No copying! tree_simple_assignment (const tree_simple_assignment&); @@ -118,8 +115,7 @@ public: tree_multi_assignment (bool plhs = false, int l = -1, int c = -1) - : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), - first_execution (true) { } + : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs) { } tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs = false, int l = -1, int c = -1); @@ -160,9 +156,6 @@ // True if we should not delete the lhs. bool preserve; - // true only on first rvalue() call. - bool first_execution; - // No copying! tree_multi_assignment (const tree_multi_assignment&);
--- a/libinterp/template-inst/Array-jit.cc +++ b/libinterp/template-inst/Array-jit.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Max Brister <max@2bass.com> +Copyright (C) 2012 Max Brister This file is part of Octave. @@ -20,6 +20,8 @@ */ +// Author: Max Brister <max@2bass.com> + #ifdef HAVE_CONFIG_H #include <config.h> #endif
--- a/liboctave/array/Sparse.cc +++ b/liboctave/array/Sparse.cc @@ -1575,6 +1575,14 @@ else gripe_index_out_of_range (2, 2, idx_j.extent (nc), nc); } + else if (nr == 1 && nc == 1) + { + // Scalars stored as sparse matrices occupy more memory than + // a scalar, so let's just convert the matrix to full, index, + // and sparsify the result. + + retval = Sparse<T> (array_value ().index (idx_i, idx_j)); + } else if (idx_i.is_colon ()) { // Great, we're just manipulating columns. This is going to be quite
--- a/liboctave/array/idx-vector.cc +++ b/liboctave/array/idx-vector.cc @@ -423,30 +423,27 @@ } idx_vector::idx_vector_rep::idx_vector_rep (const Sparse<bool>& bnda) - : data (0), len (0), ext (0), aowner (0), orig_dims () + : data (0), len (bnda.nnz ()), ext (0), aowner (0), orig_dims () { - for (octave_idx_type i = 0, l = bnda.nnz (); i < l; i++) - if (bnda.data (i)) len++; + const dim_vector dv = bnda.dims (); - dim_vector dv = bnda.dims (); - - orig_dims = ((dv.length () == 2 && dv(0) == 1) - ? dim_vector (1, len) : orig_dims = dim_vector (len, 1)); + if (! dv.all_zero ()) + orig_dims = ((dv.length () == 2 && dv(0) == 1) + ? dim_vector (1, len) : dim_vector (len, 1)); if (len != 0) { octave_idx_type *d = new octave_idx_type [len]; - octave_idx_type nnz = bnda.nnz (); + octave_idx_type k = 0; + octave_idx_type nc = bnda.cols (); + octave_idx_type nr = bnda.rows (); - octave_idx_type k = 0; - // FIXME: I hope this is OK, i.e. the element iterated this way are correctly ordered. - for (octave_idx_type i = 0; i < nnz; i++) - { + for (octave_idx_type j = 0; j < nc; j++) + for (octave_idx_type i = bnda.cidx(j); i < bnda.cidx(j+1); i++) if (bnda.data (i)) - d[k++] = bnda.cidx (i) + bnda.rows () * bnda.ridx (i); - } - + d[k++] = j * nr + bnda.ridx (i); + data = d; ext = d[k-1] + 1;
--- a/liboctave/numeric/bsxfun.h +++ b/liboctave/numeric/bsxfun.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2012 Jordi Gutiérrez Hermoso <jordigh@octave.org> +Copyright (C) 2012 Jordi Gutiérrez Hermoso This file is part of Octave. @@ -19,6 +19,9 @@ <http://www.gnu.org/licenses/>. */ + +// Author: Jordi Gutiérrez Hermoso <jordigh@octave.org> + #if !defined (bsxfun_h) #define bsxfun_h 1
--- a/liboctave/util/kpse.cc +++ b/liboctave/util/kpse.cc @@ -7,20 +7,23 @@ Copyright (C) 1993, 94, 95, 96, 97 Karl Berry & O. Weber. Copyright (C) 1992, 93, 94, 95, 96, 97 Free Software Foundation, Inc. -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ #if defined (HAVE_CONFIG_H) #include <config.h> @@ -1477,24 +1480,9 @@ } /* braces.c -- code for doing word expansion in curly braces. Taken from - bash 1.14.5. [Ans subsequently modified for kpatshea.] - - Copyright (C) 1987,1991 Free Software Foundation, Inc. - - 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 1, 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; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. */ + bash 1.14.5. [And subsequently modified for kpatshea.] + + Copyright (C) 1987,1991 Free Software Foundation, Inc. */ #define brace_whitespace(c) (! (c) || (c) == ' ' || (c) == '\t' || (c) == '\n')
--- a/liboctave/util/lo-array-gripes.cc +++ b/liboctave/util/lo-array-gripes.cc @@ -130,7 +130,11 @@ const char *err_id = error_id_invalid_index; (*current_liboctave_error_with_id_handler) - (err_id, "subscript indices must be either positive integers or logicals"); +#ifdef USE_64_BIT_IDX_T + (err_id, "subscript indices must be either positive integers less than 2^63 or logicals"); +#else + (err_id, "subscript indices must be either positive integers less than 2^31 or logicals"); +#endif } // FIXME -- the following is a common error message to resize,
--- a/m4/acinclude.m4 +++ b/m4/acinclude.m4 @@ -194,14 +194,13 @@ fi ]) dnl -dnl Check whether Qscintilla FindFirst function is old (16 inputs) or -dnl new (17 inputs). +dnl Check whether Qscintilla has version 2.6.0 or later dnl FIXME: This test uses a version number. It potentially could dnl be re-written to actually call the function, but is it worth it? dnl -AC_DEFUN([OCTAVE_CHECK_FUNC_FINDFIRST_MODERN], [ - AC_CACHE_CHECK([whether Qscintilla FindFirst uses 17 input arguments], - [octave_cv_func_findfirst_modern], +AC_DEFUN([OCTAVE_CHECK_VERSION_2_6_0], [ + AC_CACHE_CHECK([whether Qscintilla has version 2.6.0 or later], + [octave_cv_version_2_6_0], [AC_LANG_PUSH(C++) ac_octave_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$QT_CPPFLAGS $CPPFLAGS" @@ -212,14 +211,14 @@ #error Old FindFirst function found. #endif ]])], - octave_cv_func_findfirst_modern=yes, - octave_cv_func_findfirst_modern=no) + octave_cv_version_2_6_0=yes, + octave_cv_version_2_6_0=no) CPPFLAGS="$ac_octave_save_CPPFLAGS" AC_LANG_POP(C++) ]) - if test $octave_cv_func_findfirst_modern = yes; then - AC_DEFINE(HAVE_FINDFIRST_MODERN, 1, - [Define to 1 if Qscintilla FindFirst uses modern form with 17 inputs.]) + if test $octave_cv_version_2_6_0 = yes; then + AC_DEFINE(HAVE_QSCI_VERSION_2_6_0, 1, + [Define to 1 if Qscintilla is of Version 2.6.0 or later.]) fi ]) dnl @@ -1400,8 +1399,13 @@ dnl AC_DEFUN([OCTAVE_PROG_BISON], [ AC_PROG_YACC - case "$YACC" in - bison*) + + case "`$YACC --version`" in + *bison*) tmp_have_bison="yes" ;; + *) tmp_have_bison=no ;; + esac + + if test "$tmp_have_bison" = yes; then AC_CACHE_CHECK([syntax of bison push/pull declaration], [octave_cv_bison_push_pull_decl_style], [ style="dash underscore" @@ -1441,8 +1445,7 @@ done rm -f conftest.yy y.tab.h y.tab.c ]) - ;; - esac + fi AC_SUBST(BISON_PUSH_PULL_DECL_STYLE, $octave_cv_bison_push_pull_decl_style) @@ -1456,20 +1459,16 @@ OCTAVE_CONFIGURE_WARNING([warn_bison_push_pull_decl_style]) fi - case "$YACC" in - bison*) - ;; - *) - YACC='$(top_srcdir)/build-aux/missing bison' - warn_bison=" + if test "$tmp_have_bison" = no; then + YACC='$(top_srcdir)/build-aux/missing bison' + warn_bison=" I didn't find bison, but it's only a problem if you need to reconstruct parse.cc, which is the case if you're building from VCS sources. " - OCTAVE_CONFIGURE_WARNING([warn_bison]) - ;; - esac + OCTAVE_CONFIGURE_WARNING([warn_bison]) + fi ]) dnl dnl Find desktop-file-install program. @@ -1498,8 +1497,8 @@ ## Also make sure that we generate an interactive scanner if we are ## using flex. AC_PROG_LEX - case "$LEX" in - flex*) + case "`$LEX --version`" in + *flex*) LFLAGS="-I" AC_MSG_RESULT([defining LFLAGS to be $LFLAGS]) LEXLIB=
--- a/scripts/@ftp/cd.m +++ b/scripts/@ftp/cd.m @@ -17,12 +17,27 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} cd (@var{f}, @var{path}) -## Set the remote directory to @var{path} on the FTP connection @var{f}. +## @deftypefn {Function File} {} cd (@var{f}) +## @deftypefnx {Function File} {} cd (@var{f}, @var{path}) +## Get or set the remote directory on the FTP connection @var{f}. ## ## @var{f} is an FTP object returned by the @code{ftp} function. +## +## If @var{path} is not specified, return the remote current working +## directory. Otherwise, set the remote directory to @var{path} and +## return the new remote working directory. +## +## If the directory does not exist, an error message is printed and the +## working directory is not changed. ## @end deftypefn -function cd (f, path) - __ftp_cwd__ (f.curlhandle, path); +function path = cd (f, path) + if (nargin != 1 && nargin != 2) + print_usage (); + endif + + if (nargin == 2) + __ftp_cwd__ (f.curlhandle, path); + endif + path = __ftp_pwd__ (f.curlhandle); endfunction
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/default_save_options.m @@ -0,0 +1,42 @@ +## Copyright (C) 2013 Rik Wehbring +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Built-in Function} {@var{val} =} default_save_options () +## @deftypefnx {Built-in Function} {@var{old_val} =} default_save_options (@var{new_val}) +## @deftypefnx {Built-in Function} {} default_save_options (@var{new_val}, "local") +## This function has been deprecated. Use @code{@file{save_default_options}} +## instead. +## @seealso{save_default_options} +## @end deftypefn + +## Deprecated in 3.8 + +function retval = default_save_options (varargin) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "default_save_options is obsolete and will be removed from a future version of Octave, please use save_default_options instead"); + endif + + retval = save_default_options (varargin{:}); + +endfunction +
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/gen_doc_cache.m @@ -0,0 +1,39 @@ +## Copyright (C) 2013 Rik Wehbring +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} gen_doc_cache (@var{out_file}, @var{directory}) +## This function has been deprecated. Use @code{doc_cache_create} instead. +## @seealso{doc_cache_create} +## @end deftypefn + +## Deprecated in 3.8 + +function gen_doc_cache (varargin) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "gen_doc_cache is obsolete and will be removed from a future version of Octave, please use doc_cache_create instead"); + endif + + doc_cache_create (varargin{:}); + +endfunction +
--- a/scripts/deprecated/javafields.m +++ b/scripts/deprecated/javafields.m @@ -40,7 +40,7 @@ endif c_methods = javaMethod ("getFields", "org.octave.ClassHelper", javaobj); - method_list = strsplit (c_methods, ';', false); + method_list = ostrsplit (c_methods, ';'); if (nargout == 0) if (! isempty (method_list))
--- a/scripts/deprecated/javamethods.m +++ b/scripts/deprecated/javamethods.m @@ -40,7 +40,7 @@ endif cls_methods = javaMethod ("getMethods", "org.octave.ClassHelper", classname); - method_list = strsplit (cls_methods, ';', false); + method_list = ostrsplit (cls_methods, ';'); if (nargout == 0) if (! isempty (method_list))
--- a/scripts/deprecated/module.mk +++ b/scripts/deprecated/module.mk @@ -5,8 +5,10 @@ deprecated/cor.m \ deprecated/corrcoef.m \ deprecated/cut.m \ + deprecated/default_save_options.m \ deprecated/java_debug.m \ deprecated/error_text.m \ + deprecated/gen_doc_cache.m \ deprecated/isstr.m \ deprecated/java_convert_matrix.m \ deprecated/java_get.m \ @@ -17,7 +19,9 @@ deprecated/javafields.m \ deprecated/javamethods.m \ deprecated/polyderiv.m \ - deprecated/setstr.m \ + deprecated/re_read_readline_init_file.m \ + deprecated/read_readline_init_file.m \ + deprecated/saving_history.m \ deprecated/shell_cmd.m \ deprecated/studentize.m \ deprecated/sylvester_matrix.m
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/re_read_readline_init_file.m @@ -0,0 +1,40 @@ +## Copyright (C) 2013 Rik Wehbring +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Built-in Function} {} re_read_readline_init_file (@var{file}) +## This function has been deprecated. Use +## @code{@file{readline_re_read_init_file}} instead. +## @seealso{readline_read_init_file} +## @end deftypefn + +## Deprecated in 3.8 + +function re_read_readline_init_file (varargin) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "re_read_readline_init_file is obsolete and will be removed from a future version of Octave, please use readline_re_read_init_file instead"); + endif + + readline_re_read_init_file (varargin{:}); + +endfunction +
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/read_readline_init_file.m @@ -0,0 +1,40 @@ +## Copyright (C) 2013 Rik Wehbring +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Built-in Function} {} read_readline_init_file (@var{file}) +## This function has been deprecated. Use +## @code{@file{readline_read_init_file}} instead. +## @seealso{readline_read_init_file} +## @end deftypefn + +## Deprecated in 3.8 + +function read_readline_init_file (varargin) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "read_readline_init_file is obsolete and will be removed from a future version of Octave, please use readline_read_init_file instead"); + endif + + readline_read_init_file (varargin{:}); + +endfunction +
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/saving_history.m @@ -0,0 +1,41 @@ +## Copyright (C) 2013 Rik Wehbring +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Built-in Function} {@var{val} =} saving_history () +## @deftypefnx {Built-in Function} {@var{old_val} =} saving_history (@var{new_val}) +## @deftypefnx {Built-in Function} {} saving_history (@var{new_val}, "local") +## This function has been deprecated. Use @code{@file{history_save}} instead. +## @seealso{history_save} +## @end deftypefn + +## Deprecated in 3.8 + +function retval = saving_history (varargin) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "saving_history is obsolete and will be removed from a future version of Octave, please use history_save instead"); + endif + + retval = save_default_options (varargin{:}); + +endfunction +
deleted file mode 100644 --- a/scripts/deprecated/setstr.m +++ /dev/null @@ -1,40 +0,0 @@ -## Copyright (C) 2003-2012 John W. Eaton -## -## This file is part of Octave. -## -## Octave 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 3 of the License, or (at -## your option) any later version. -## -## Octave 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 Octave; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} {} setstr (@var{s}) -## This function has been deprecated. Use char instead. -## @end deftypefn - -## Author: jwe - -## Deprecated in version 3.0 -## Matlab still has this function, so don't remove just yet. - -function retval = setstr (varargin) - - persistent warned = false; - if (! warned) - warned = true; - warning ("Octave:deprecated-function", - "setstr is obsolete and will be removed from a future version of Octave; please use char instead"); - endif - - retval = char (varargin{:}); - -endfunction
--- a/scripts/general/accumarray.m +++ b/scripts/general/accumarray.m @@ -61,7 +61,7 @@ ## that in the first column counts how many occurrences each number in ## the second column has, taken from the vector @var{x}. Note the usage ## of @code{unique} for assigning to all repeated elements of @var{x} -## the same index (@pxref{doc-unique}). +## the same index (@pxref{docXunique}). ## ## @example ## @group @@ -92,7 +92,7 @@ ## @end example ## ## The sparse option can be used as an alternative to the @code{sparse} -## constructor (@pxref{doc-sparse}). Thus +## constructor (@pxref{docXsparse}). Thus ## ## @example ## sparse (@var{i}, @var{j}, @var{sv})
--- a/scripts/general/accumdim.m +++ b/scripts/general/accumdim.m @@ -59,7 +59,7 @@ function A = accumdim (subs, vals, dim, n = 0, func = [], fillval = 0) - if (nargin < 2 || nargin > 5) + if (nargin < 2 || nargin > 6) print_usage (); endif @@ -149,8 +149,7 @@ endfunction -%%test accumdim vs. accumarray - +%% Test accumdim vs. accumarray %!shared a %! a = rand (5, 5, 5); @@ -159,3 +158,16 @@ %!assert (accumdim ([2;3;2;1;2], a, 3, 3, @min)(1,5,:), accumarray ([2;3;2;1;2], a(1,5,:), [1,1,3], @min)) %!assert (accumdim ([1;3;2;2;1], a, 2, 3, @median)(4,:,5), accumarray ([1;3;2;2;1], a(4,:,5), [1,3], @median)) +%% Test fillval +%!assert (accumdim ([1;3;1;3;3], a)(2,:,:), zeros (1,5,5)) +%!assert (accumdim ([1;3;1;3;3], a, 1, 4)([2 4],:,:), zeros (2,5,5)) +%!assert (accumdim ([1;3;1;3;3], a, 1, 4, [], pi)([2 4],:,:), pi (2,5,5)) + +%% Test input validation +%!error accumdim (1) +%!error accumdim (1,2,3,4,5,6,7) +%!error <SUBS must be a subscript vector> accumdim (ones (2,2), ones (2,2)) +%!error <indices must be positive integers> accumdim ([-1 1], ones (2,2)) +%!error <N index out of range> accumdim ([1 2], ones (2,2), 1, 1) +%!error <dimension mismatch> accumdim ([1], ones (2,2)) +
--- a/scripts/general/fieldnames.m +++ b/scripts/general/fieldnames.m @@ -52,7 +52,7 @@ obj = class (obj); endif names_str = javaMethod ("getFields", "org.octave.ClassHelper", obj); - names = strsplit (names_str, ';', false); + names = ostrsplit (names_str, ';'); else error ("fieldnames: Invalid input argument"); endif
--- a/scripts/general/int2str.m +++ b/scripts/general/int2str.m @@ -73,7 +73,7 @@ endif tmp = sprintf (fmt, permute (n, [2, 1, 3 : nd])); tmp(end) = ""; - retval = char (strsplit (tmp, "\n", false)); + retval = char (ostrsplit (tmp, "\n")); endfunction
--- a/scripts/general/interp1.m +++ b/scripts/general/interp1.m @@ -68,7 +68,7 @@ ## Duplicate points in @var{x} specify a discontinuous interpolant. There ## may be at most 2 consecutive points with the same value. ## If @var{x} is increasing, the default discontinuous interpolant is -## right-continuous. If @var{x} is decreasing, the default discontinuous +## right-continuous. If @var{x} is decreasing, the default discontinuous ## interpolant is left-continuous. ## The continuity condition of the interpolant may be specified by using ## the options, "-left" or "-right", to select a left-continuous
--- a/scripts/general/interpn.m +++ b/scripts/general/interpn.m @@ -76,14 +76,14 @@ if (ischar (varargin{end})) method = varargin{end}; - nargs = nargs - 1; + nargs -= 1; elseif (nargs > 1 && ischar (varargin{end - 1})) if (! isnumeric (varargin{end}) || ! isscalar (varargin{end})) error ("interpn: extrapal is expected to be a numeric scalar"); endif method = varargin{end - 1}; extrapval = varargin{end}; - nargs = nargs - 2; + nargs -= 2; endif if (nargs < 3) @@ -102,7 +102,7 @@ nd = ndims (v); x = cell (1, nd); y = cell (1, nd); - for i = 1 : nd; + for i = 1 : nd x{i} = 1 : sz(i); y{i} = 1 : (1 / (2 ^ m)) : sz(i); endfor @@ -113,18 +113,18 @@ sz = size (v); nd = ndims (v); x = cell (1, nd); - y = varargin (2 : nargs); - for i = 1 : nd; + y = varargin(2 : nargs); + for i = 1 : nd x{i} = 1 : sz(i); endfor - elseif (rem (nargs, 2) == 1 && nargs == - (2 * ndims (varargin{ceil (nargs / 2)})) + 1) + elseif (rem (nargs, 2) == 1 + && nargs == (2 * ndims (varargin{ceil (nargs / 2)})) + 1) nv = ceil (nargs / 2); v = varargin{nv}; sz = size (v); nd = ndims (v); - x = varargin (1 : (nv - 1)); - y = varargin ((nv + 1) : nargs); + x = varargin(1 : (nv - 1)); + y = varargin((nv + 1) : nargs); else error ("interpn: wrong number or incorrectly formatted input arguments"); endif @@ -134,12 +134,12 @@ if (! size_equal (x{1}, x{i}) || ! size_equal (x{i}, v)) error ("interpn: dimensional mismatch"); endif - idx (1 : nd) = {1}; - idx (i) = ":"; + idx(1 : nd) = {1}; + idx(i) = ":"; x{i} = x{i}(idx{:})(:); endfor - idx (1 : nd) = {1}; - idx (1) = ":"; + idx(1 : nd) = {1}; + idx(1) = ":"; x{1} = x{1}(idx{:})(:); endif @@ -154,7 +154,7 @@ if (strcmp (method, "linear")) vi = __lin_interpn__ (x{:}, v, y{:}); - vi (isna (vi)) = extrapval; + vi(isna (vi)) = extrapval; elseif (strcmp (method, "nearest")) yshape = size (y{1}); yidx = cell (1, nd); @@ -166,7 +166,7 @@ for i = 1 : nd idx{i} = yidx{i} + (y{i} - x{i}(yidx{i})(:) >= x{i}(yidx{i} + 1)(:) - y{i}); endfor - vi = v (sub2ind (sz, idx{:})); + vi = v(sub2ind (sz, idx{:})); idx = zeros (prod (yshape), 1); for i = 1 : nd idx |= y{i} < min (x{i}(:)) | y{i} > max (x{i}(:)); @@ -179,12 +179,12 @@ if (! size_equal (y{1}, y{i})) error ("interpn: dimensional mismatch"); endif - idx (1 : nd) = {1}; - idx (i) = ":"; + idx(1 : nd) = {1}; + idx(i) = ":"; y{i} = y{i}(idx{:}); endfor - idx (1 : nd) = {1}; - idx (1) = ":"; + idx(1 : nd) = {1}; + idx(1) = ":"; y{1} = y{1}(idx{:}); endif @@ -196,9 +196,9 @@ q = cell (1, nd); for i = 1 : ly q(:) = i; - idx {i} = q; + idx{i} = q; endfor - vi = vi (cellfun (@(x) sub2ind (size (vi), x{:}), idx)); + vi = vi(cellfun (@(x) sub2ind (size (vi), x{:}), idx)); vi = reshape (vi, size (y{1})); endif elseif (strcmp (method, "cubic"))
--- a/scripts/general/methods.m +++ b/scripts/general/methods.m @@ -43,14 +43,14 @@ mtds_list = __methods__ (obj); if (isempty (mtds_list)) mtds_str = javaMethod ("getMethods", "org.octave.ClassHelper", obj); - mtds_list = strsplit (mtds_str, ';', false); + mtds_list = ostrsplit (mtds_str, ';'); endif elseif (isjava (obj)) ## FIXME: Function prototype that excepts java obj exists, but doesn't ## work if obj is java.lang.String. Convert obj to classname. obj = class (obj); mtds_str = javaMethod ("getMethods", "org.octave.ClassHelper", obj); - mtds_list = strsplit (mtds_str, ';', false); + mtds_list = strsplit (mtds_str, ';'); else error ("methods: Invalid input argument"); endif
--- a/scripts/general/num2str.m +++ b/scripts/general/num2str.m @@ -53,7 +53,7 @@ ## ## Notes: ## -## For Matlab compatibility, leading spaces are stripped before returning +## For @sc{matlab} compatibility, leading spaces are stripped before returning ## the string. ## ## The @code{num2str} function is not very flexible. For better control @@ -118,7 +118,7 @@ fmt = cstrcat (deblank (repmat (fmt, 1, columns (x))), "\n"); nd = ndims (x); tmp = sprintf (fmt, permute (x, [2, 1, 3:nd])); - retval = strtrim (char (strsplit (tmp(1:end-1), "\n", false))); + retval = strtrim (char (ostrsplit (tmp(1:end-1), "\n"))); else # Complex matrix input if (nargin == 2) if (ischar (arg)) @@ -164,7 +164,7 @@ tmp = regexprep (tmp, " +i\n", "i\n"); tmp = regexprep (tmp, "( +)i", "i$1"); - retval = strtrim (char (strsplit (tmp(1:end-1), "\n", false))); + retval = strtrim (char (ostrsplit (tmp(1:end-1), "\n"))); endif endfunction
--- a/scripts/general/structfun.m +++ b/scripts/general/structfun.m @@ -64,11 +64,11 @@ ## ## @noindent ## where there is an additional input argument to @var{errfunc} relative to -## @var{func}, given by @var{se}. This is a structure with the elements -## "identifier", "message" and "index", giving respectively the error +## @var{func}, given by @nospell{@var{se}}. This is a structure with the +## elements "identifier", "message" and "index", giving respectively the error ## identifier, the error message, and the index into the input arguments ## of the element that caused the error. For an example on how to use -## an error handler, @pxref{doc-cellfun, @code{cellfun}}. +## an error handler, @pxref{docXcellfun, @code{cellfun}}. ## ## @seealso{cellfun, arrayfun, spfun} ## @end deftypefn
rename from scripts/help/gen_doc_cache.m rename to scripts/help/doc_cache_create.m --- a/scripts/help/gen_doc_cache.m +++ b/scripts/help/doc_cache_create.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} gen_doc_cache (@var{out_file}, @var{directory}) +## @deftypefn {Function File} {} doc_cache_create (@var{out_file}, @var{directory}) ## Generate documentation caches for all functions in a given directory. ## ## A documentation cache is generated for all functions in @var{directory}. @@ -28,10 +28,10 @@ ## If no directory is given (or it is the empty matrix), a cache for builtin ## operators, etc. is generated. ## -## @seealso{lookfor, path} +## @seealso{doc_cache_file, lookfor, path} ## @end deftypefn -function gen_doc_cache (out_file = "doc-cache", directory = []) +function doc_cache_create (out_file = "doc-cache", directory = []) ## Check input if (! ischar (out_file)) @@ -45,12 +45,12 @@ if (all (cellfun (@ischar, directory))) cache = gen_doc_cache_in_dir (directory); else - error ("gen_doc_cache: cell must contain only strings"); + error ("doc_cache_create: cell must contain only strings"); endif elseif (ischar (directory)) cache = gen_doc_cache_in_dir (directory); else - error ("gen_doc_cache: second input argument must be a string or a cell of strings"); + error ("doc_cache_create: second input argument must be a string or a cell of strings"); endif ## Save cache @@ -82,7 +82,7 @@ ## Did we get the help text? if (status != 0 || isempty (text)) - warning ("gen_doc_cache: unusable help text found in file '%s'", f); + warning ("doc_cache_create: unusable help text found in file '%s'", f); return; endif @@ -117,7 +117,7 @@ function cache = gen_doc_cache_in_dir (directory) ## If 'directory' is not in the current path, add it so we search it - dir_in_path = ismember (directory, strsplit (path (), pathsep (), false)); + dir_in_path = ismember (directory, ostrsplit (path (), pathsep ())); # dirs not in path if (! iscell (directory)) @@ -156,4 +156,4 @@ %% No true tests desirable for this function. %% Test input validation -%!error gen_doc_cache (1) +%!error doc_cache_create (1)
--- a/scripts/help/help.m +++ b/scripts/help/help.m @@ -142,7 +142,7 @@ builtins = sprintf ("*** builtins:\n\n%s\n\n", list_in_columns (__builtins__ ())); - dirs = strsplit (path, pathsep, false); + dirs = ostrsplit (path, pathsep); flist = ""; for i = 2:numel (dirs) files = sort ({dir(fullfile (dirs{i}, "*.m")).name, ...
--- a/scripts/help/lookfor.m +++ b/scripts/help/lookfor.m @@ -66,10 +66,10 @@ endif ## Search functions in new path dirs. - orig_path = strsplit (__pathorig__ (), pathsep (), false); + orig_path = ostrsplit (__pathorig__ (), pathsep ()); ## ditto for path. - new_path = strsplit (path (), pathsep (), false); + new_path = ostrsplit (path (), pathsep ()); ## scratch out directories already covered by orig_path. if (had_core_cache)
--- a/scripts/help/module.mk +++ b/scripts/help/module.mk @@ -8,7 +8,7 @@ help/__makeinfo__.m \ help/__unimplemented__.m \ help/doc.m \ - help/gen_doc_cache.m \ + help/doc_cache_create.m \ help/get_first_help_sentence.m \ help/help.m \ help/lookfor.m \
--- a/scripts/image/colormap.m +++ b/scripts/image/colormap.m @@ -35,8 +35,8 @@ ## @code{jet} map with 64 entries). The default colormap is returned. ## ## @code{colormap ("list")} returns a cell array with all the available -## colormaps. The options `register' and `unregister' will add or remove the -## colormap @var{name} to it. +## colormaps. The options @code{"register"} and @code{"unregister"} +## will add or remove the colormap @var{name} to it. ## ## With no arguments, @code{colormap} returns the current color map. ## @seealso{jet}
--- a/scripts/image/imfinfo.m +++ b/scripts/image/imfinfo.m @@ -1,4 +1,4 @@ -## Copyright (C) 2008-2012 Soren Hauberg <hauberg@gmail.com> +## Copyright (C) 2008-2012 Soren Hauberg ## ## This file is part of Octave. ## @@ -106,6 +106,8 @@ ## @seealso{imread, imwrite, imshow} ## @end deftypefn +## Author: Soren Hauberg <hauberg@gmail.com> + function info = imfinfo (filename) if (nargin < 1)
--- a/scripts/image/imread.m +++ b/scripts/image/imread.m @@ -1,7 +1,7 @@ -## Copyright (C) 2008-2012 Thomas L. Scofield <scofield@calvin.edu> -## Copyright (C) 2008 Kristian Rumberg <kristianrumberg@gmail.com> -## Copyright (C) 2006 Thomas Weber <thomas.weber.mail@gmail.com> -## Copyright (C) 2005 Stefan van der Walt <stefan@sun.ac.za> +## Copyright (C) 2008-2012 Thomas L. Scofield +## Copyright (C) 2008 Kristian Rumberg +## Copyright (C) 2006 Thomas Weber +## Copyright (C) 2005 Stefan van der Walt ## Copyright (C) 2002 Andy Adler ## ## This file is part of Octave. @@ -20,6 +20,12 @@ ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. +## Author: Thomas L. Scofield <scofield@calvin.edu> +## Author: Kristian Rumberg <kristianrumberg@gmail.com> +## Author: Thomas Weber <thomas.weber.mail@gmail.com> +## Author: Stefan van der Walt <stefan@sun.ac.za> +## Author: Andy Adler + ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{img}, @var{map}, @var{alpha}] =} imread (@var{filename}) ## Read images from various file formats.
--- a/scripts/image/ind2rgb.m +++ b/scripts/image/ind2rgb.m @@ -26,10 +26,13 @@ ## image, pixels in @var{x} outside the range are mapped to the last color in ## the map. ## -## The output may be a single RGB image (MxNx3 matrix where M and N are the -## original image @var{x} dimensions, one for each of the red, green and blue -## channels). Alternatively, the individual red, green, and blue color matrices -## of size MxN may be returned. +## The output may be a single RGB image (@nospell{MxNx3} matrix where M and N +## are the original image @var{x} dimensions, one for each of the red, green +## and blue channels). Alternatively, the individual red, green, and blue +## color matrices of size @nospell{MxN} may be returned. +## +## Multi-dimensional indexed images (of size @nospell{MxNx1xK}) are also +## supported. ## ## @seealso{rgb2ind, ind2gray, hsv2rgb, ntsc2rgb} ## @end deftypefn @@ -53,7 +56,14 @@ ## Use ND array if only one output is requested. if (nargout <= 1) - R = reshape ([R(:); G(:); B(:)], [sz, 3]); + if (ndims (x) == 2) + R = reshape ([R(:); G(:); B(:)], [sz, 3]); + elseif (ndims (x) == 4) + R = permute (reshape ([R(:); G(:); B(:)], [sz(1) sz(2) sz(4) 3]), [1 2 4 3]); + else + ## we should never reach here since ind2x() should filter them out + error ("ind2rgb: an indexed image must have 2 or 4 dimensions."); + endif endif endfunction
--- a/scripts/image/private/ind2x.m +++ b/scripts/image/private/ind2x.m @@ -22,7 +22,11 @@ function [x, map] = ind2x (caller, x, map) ## Check if X is an indexed image. - if (ndims (x) < 2 || issparse (x) || (isfloat (x) && ! isindex (x)) || + ## an indexed image is defined has having only 2D, and that's how matlab + ## behaves. But we want to support ND images, so we will allow up to 4D + ## and check that the 3rd is a singleton + if (all (ndims (x) != [2 4]) || size (x, 3) != 1 || issparse (x) || + (isfloat (x) && ! isindex (x)) || ! any (strcmp (class (x), {"uint8", "uint16", "single", "double"}))) error ("%s: X must be an indexed image", caller); endif
--- a/scripts/image/rgb2ind.m +++ b/scripts/image/rgb2ind.m @@ -36,16 +36,17 @@ ## Convert an image in red-green-blue (RGB) color space to an indexed image. ## ## The input image @var{rgb} must be an N-dimensional RGB image -## (MxNxO...x3 array) where M,N,O... are the image dimensions, and the +## (@nospell{MxNxO}@dots{}x3 array) where M,N,O@dots{} are the image +## dimensions, and the ## final dimension contains the values in the red, green and blue -## channels. Alternatively, the red, green and blue color channels can +## channels. Alternatively, the red, green and blue color channels can ## be input as separate arrays @var{R}, @var{G} and @var{B}. ## ## The input @var{map} defines the colormap to be used. Alternatively, ## @var{n} or @var{tol} may be used to define the maximum number of ## colors to use in an automatically generated colormap. @var{n} is ## related to @var{tol} by: @var{n} = (floor (1/@var{tol}) + 1)^3; -## @var{tol} must be >0 and <=1. +## @var{tol} must be >0 and @leq{}1. ## ## @var{dither_option} is a string which enables or disables dithering: ## 'dither' (default) or 'nodither'. @@ -199,6 +200,5 @@ %% Test input validation %!error rgb2ind () -%!error rgb2ind (1,2) -%!error rgb2ind (1,2,3,4) +%!error rgb2ind (1,2,3,4,5,6,7)
--- a/scripts/image/rgbplot.m +++ b/scripts/image/rgbplot.m @@ -65,7 +65,7 @@ set (gca, 'ytick', []); colormap (cmap); otherwise - error ("rgbplot: unknown style `%s'", style); + error ("rgbplot: unknown style '%s'", style); endswitch xlabel ("color index"); @@ -88,5 +88,5 @@ %!error rgbplot (1,2) %!error <CMAP must be a valid colormap> rgbplot ({0 1 0}) %!error <STYLE must be a string> rgbplot ([0 1 0], 2) -%!error <unknown style `nostyle'> rgbplot ([0 1 0], "nostyle") +%!error <unknown style 'nostyle'> rgbplot ([0 1 0], "nostyle")
--- a/scripts/io/importdata.m +++ b/scripts/io/importdata.m @@ -1,4 +1,4 @@ -## Copyright (C) 2012-2013 Erik Kjellson <erikiiofph7@users.sourceforge.net> +## Copyright (C) 2012-2013 Erik Kjellson ## ## This file is part of Octave. ## @@ -27,38 +27,41 @@ ## Importing the contents of file @var{fname} into workspace. ## ## Input parameters: +## ## @itemize ## @item @var{fname} ## The file name for the file to import. ## ## @item @var{delimiter} -## The character separating columns of data. Use @code{\t} for tab. +## The character separating columns of data. Use @code{\t} for tab. ## (Only valid for ascii files) ## ## @item @var{header_rows} -## Number of header rows before the data begins. (Only valid for ascii files) +## Number of header rows before the data begins. (Only valid for ascii files) ## @end itemize ## ## Different file types are supported: +## ## @itemize -## @item Ascii table +## @item ASCII table ## -## Importing ascii table using the specified number of header rows and +## Importing ASCII table using the specified number of header rows and ## the specified delimiter. ## ## @item Image file ## -## @item @sc{Matlab} file +## @item @sc{matlab} file ## ## @item Spreadsheet files (depending on external software) ## -## @item Wav file +## @item WAV file ## ## @end itemize ## ## @seealso{textscan, dlmread, csvread, load} ## @end deftypefn +## Author: Erik Kjellson <erikiiofph7@users.sourceforge.net> function [output, delimiter, header_rows] = importdata (varargin) @@ -119,11 +122,9 @@ switch fileExt case {".au", ".snd"} - error (sprintf ("importdata: not implemented for file format %s", - fileExt)); + error ("importdata: not implemented for file format %s", fileExt); case ".avi" - error (sprintf ("importdata: not implemented for file format %s", - fileExt)); + error ("importdata: not implemented for file format %s", fileExt); case {".bmp", ".cur", ".gif", ".hdf", ".ico", ".jpe", ".jpeg", ".jpg", \ ".pbm", ".pcx", ".pgm", ".png", ".pnm", ".ppm", ".ras", \ ".tif", ".tiff", ".xwd"}
--- a/scripts/io/strread.m +++ b/scripts/io/strread.m @@ -626,13 +626,13 @@ strrep (words(icol, jptr), fmt_words{ii}, ... [char(255) char(254)]); wrds(2:2:2*numel (words(icol, jptr))-1) = char (255); - wrds = strsplit ([wrds{:}], char (255), false); + wrds = ostrsplit ([wrds{:}], char (255)); words(icol, jptr) = ... wrds(find (cellfun ("isempty", strfind (wrds, char (254))))); wrds(find (cellfun ("isempty", strfind (wrds, char (254))))) ... = char (255); - words(icol+1, jptr) = strsplit (strrep ([wrds{2:end}], ... - char (254), fmt_words{ii}), char (255), false); + words(icol+1, jptr) = ostrsplit (strrep ([wrds{2:end}], ... + char (254), fmt_words{ii}), char (255)); ## Former trailing literal may now be leading for next specifier --ii; fwptr = [fwptr(1:ii) (++fwptr(ii+1:end))]; @@ -704,7 +704,7 @@ case {"%0", "%1", "%2", "%3", "%4", "%5", "%6", "%7", "%8", "%9"} sw = regexp (fmt_words{m}, '\d', "once"); ew = regexp (fmt_words{m}, '[nfudsq]') - 1; - nfmt = strsplit (fmt_words{m}(2:ew), ".", false); + nfmt = ostrsplit (fmt_words{m}(2:ew), "."); swidth = str2double (nfmt{1}); switch fmt_words{m}(ew+1) case {"d", "u", "f", "n"} @@ -777,7 +777,7 @@ endif ## Split text string along delimiters - out = strsplit (text, sep, mult_dlms_s1, "delimitertype", "legacy"); + out = ostrsplit (text, sep, mult_dlms_s1); if (index (sep, eol_char)); out = strrep (out, char (255), ''); endif ## In case of trailing delimiter, strip stray last empty word if (!isempty (out) && any (sep == text(end)))
--- a/scripts/io/textread.m +++ b/scripts/io/textread.m @@ -47,7 +47,7 @@ ## If the format string is empty (not: omitted) and the file contains only ## numeric data (excluding headerlines), textread will return a rectangular ## matrix with the number of columns matching the number of numeric fields on -## the first data line of the file. Empty fields are returned as zero values. +## the first data line of the file. Empty fields are returned as zero values. ## ## @seealso{strread, load, dlmread, fscanf, textscan} ## @end deftypefn
--- a/scripts/io/textscan.m +++ b/scripts/io/textscan.m @@ -1,4 +1,4 @@ -## Copyright (C) 2010-2013 Ben Abbott <bpabbott@mac.com> +## Copyright (C) 2010-2013 Ben Abbott ## ## This file is part of Octave. ## @@ -75,6 +75,8 @@ ## @seealso{dlmread, fscanf, load, strread, textread} ## @end deftypefn +## Author: Ben Abbott <bpabbott@mac.com> + function [C, position] = textscan (fid, format = "%f", varargin) BUFLENGTH = 4096; ## Read buffer
--- a/scripts/java/javaclasspath.m +++ b/scripts/java/javaclasspath.m @@ -58,11 +58,11 @@ ## dynamic classpath dynamic_path = javaMethod ("getClassPath", "org.octave.ClassHelper"); - dynamic_path_list = strsplit (dynamic_path, pathsep (), false); + dynamic_path_list = ostrsplit (dynamic_path, pathsep ()); ## static classpath static_path = javaMethod ("getProperty", "java.lang.System", "java.class.path"); - static_path_list = strsplit (static_path, pathsep (), false); + static_path_list = ostrsplit (static_path, pathsep ()); if (numel (static_path_list) > 1) ## remove first element (which is .../octave.jar) static_path_list(1) = [];
--- a/scripts/java/javamem.m +++ b/scripts/java/javamem.m @@ -35,7 +35,8 @@ ## @file{java.opts}. The directory where this file resides is ## determined by the environment variable @w{@env{OCTAVE_JAVA_DIR}}. ## If unset, the directory where @file{javaaddpath.m} resides is used instead -## (typically @file{@env{OCTAVE_HOME}/share/octave/@env{OCTAVE_VERSION}/m/java/} +## (typically +## @file{@w{@env{OCTAVE_HOME}}/share/octave/@w{@env{OCTAVE_VERSION}}/m/java/} ## ## @file{java.opts} is a plain text file with one option per line. The ## default initial memory size and default maximum memory size (which
--- a/scripts/java/usejava.m +++ b/scripts/java/usejava.m @@ -1,5 +1,5 @@ ## Copyright (C) 2012 Rik Wehbring -## Parts Copyright (C) 2012 Philip Nienhuis <prnienhuis@users.sf.net> +## Parts Copyright (C) 2012 Philip Nienhuis ## ## This file is part of Octave. ## @@ -45,6 +45,9 @@ ## and Java is installed. ## @end deftypefn +## Author: Rik Wehbring +## Author: Philip Nienhuis <prnienhuis@users.sf.net> + function retval = usejava (feature) if (nargin != 1 || ! ischar (feature))
--- a/scripts/linear-algebra/condest.m +++ b/scripts/linear-algebra/condest.m @@ -56,6 +56,7 @@ ## approximate null vector. ## ## References: +## ## @itemize ## @item ## N.J. Higham and F. Tisseur, @cite{A Block Algorithm
--- a/scripts/linear-algebra/duplication_matrix.m +++ b/scripts/linear-algebra/duplication_matrix.m @@ -23,7 +23,7 @@ ## $D_n$ ## @end tex ## @ifnottex -## @math{Dn} +## @nospell{@math{Dn}} ## @end ifnottex ## which is the unique ## @tex @@ -37,7 +37,7 @@ ## $D_n * {\rm vech} (A) = {\rm vec} (A)$ ## @end tex ## @ifnottex -## @math{Dn vech (A) = vec (A)} +## @nospell{@math{Dn vech (A) = vec (A)}} ## @end ifnottex ## for all symmetric ## @tex
--- a/scripts/linear-algebra/housh.m +++ b/scripts/linear-algebra/housh.m @@ -47,7 +47,7 @@ ## ## @table @var ## @item beta -## If beta = 0, then no reflection need be applied (zer set to 0) +## If beta = 0, then no reflection need be applied (@nospell{zer} set to 0) ## ## @item housv ## householder vector
--- a/scripts/linear-algebra/logm.m +++ b/scripts/linear-algebra/logm.m @@ -1,6 +1,6 @@ -## Copyright (C) 2008-2012 N.J. Higham -## Copyright (C) 2010 Richard T. Guy <guyrt7@wfu.edu> -## Copyright (C) 2010 Marco Caliari <marco.caliari@univr.it> +## Copyright (C) 2008-2012 N. J. Higham +## Copyright (C) 2010 Richard T. Guy +## Copyright (C) 2010 Marco Caliari ## ## This file is part of Octave. ## @@ -39,6 +39,10 @@ ## (SIAM, 2008.) ## +## Author: N. J. Higham +## Author: Richard T. Guy <guyrt7@wfu.edu> +## Author: Marco Caliari <marco.caliari@univr.it> + function [s, iters] = logm (A, opt_iters = 100) if (nargin == 0 || nargin > 2)
--- a/scripts/linear-algebra/onenormest.m +++ b/scripts/linear-algebra/onenormest.m @@ -38,6 +38,7 @@ ## iterations is limited to 10 and is at least 2. ## ## References: +## ## @itemize ## @item ## N.J. Higham and F. Tisseur, @cite{A Block Algorithm
--- a/scripts/miscellaneous/citation.m +++ b/scripts/miscellaneous/citation.m @@ -19,12 +19,12 @@ ## -*- texinfo -*- ## @deftypefn {Command} {} citation ## @deftypefnx {Command} {} citation @var{package} -## Display instructions to cite GNU Octave and packages in publications. +## Display instructions for citing GNU Octave or its packages in publications. ## -## When called without an argument, displays information on how to cite the core -## GNU Octave system in publications. When given a package name @var{package}, -## display information on to cite it. However, note that some packages may not -## have instructions on how to cite them. +## When called without an argument, display information on how to cite the core +## GNU Octave system. When given a package name @var{package}, display +## information on citing the specific named package. Note that some packages +## may not yet have instructions on how to cite them. ## ## The GNU Octave developers and its active community of package authors have ## invested a lot of time and effort in creating GNU Octave as it is today. @@ -46,6 +46,9 @@ endfunction + +%% Test input validation %!error citation (1, 2) %!error <citation: PACKAGE must be a string> citation (1) %!error <citation: package .* is not installed> citation ("__NOT_A_VALID_PKG_NAME__") +
--- a/scripts/miscellaneous/compare_versions.m +++ b/scripts/miscellaneous/compare_versions.m @@ -113,8 +113,8 @@ v2nochar = v2; endif - v1n = str2num (char (strsplit (v1nochar, ".", false))); - v2n = str2num (char (strsplit (v2nochar, ".", false))); + v1n = str2num (char (ostrsplit (v1nochar, "."))); + v2n = str2num (char (ostrsplit (v2nochar, "."))); if ((isempty (v1n) && isempty (v1c)) || (isempty (v2n) && isempty (v2c))) error ("compare_versions: given version strings are not valid: %s %s", v1, v2);
--- a/scripts/miscellaneous/computer.m +++ b/scripts/miscellaneous/computer.m @@ -49,7 +49,7 @@ function [c, maxsize, endian] = computer (a) if (nargin == 1 && ischar (a) && strcmpi (a, "arch")) - tmp = strsplit (octave_config_info ("canonical_host_type"), "-", false); + tmp = ostrsplit (octave_config_info ("canonical_host_type"), "-"); if (numel (tmp) == 4) c = sprintf ("%s-%s-%s", tmp{4}, tmp{3}, tmp{1}); else
--- a/scripts/miscellaneous/error_ids.m +++ b/scripts/miscellaneous/error_ids.m @@ -40,7 +40,7 @@ ## Indicates that memory couldn't be allocated. ## ## @item Octave:undefined-function -## Indicates a call to a function that is not defined. The function may +## Indicates a call to a function that is not defined. The function may ## exist but Octave is unable to find it in the search path. ## ## @end table
--- a/scripts/miscellaneous/fact.m +++ b/scripts/miscellaneous/fact.m @@ -250,7 +250,7 @@ function out = wordwrap (w) cols = terminal_size ()(2); - wc = strsplit (w, " ", false); + wc = ostrsplit (w, " "); out = "\n"; i = 1; numwords = numel (wc);
--- a/scripts/miscellaneous/getfield.m +++ b/scripts/miscellaneous/getfield.m @@ -18,9 +18,9 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{val}] =} getfield (@var{s}, @var{field}) +## @deftypefn {Function File} {[@var{val}] =} getfield (@var{s}, @var{field}) ## @deftypefnx {Function File} {[@var{val}] =} getfield (@var{s}, @var{idx1}, @var{field1}, @var{idx2}, @var{field2}, @dots{}) -## Extract a field from a structure (or a nested structure). The syntax +## Extract a field from a structure (or a nested structure). The syntax ## is the same as @code{setfield}, except it omits the final @var{val} ## argument, returning this value instead of setting it. ##
--- a/scripts/miscellaneous/ls.m +++ b/scripts/miscellaneous/ls.m @@ -72,6 +72,8 @@ error ("ls: command exited abnormally with status %d\n", status); elseif (nargout == 0) puts (output); + elseif (isempty (output)) + retval = ""; else retval = strvcat (regexp (output, '\S+', 'match'){:}); endif
--- a/scripts/miscellaneous/mkoctfile.m +++ b/scripts/miscellaneous/mkoctfile.m @@ -53,13 +53,13 @@ ## @item -R DIR ## Add the run-time path to the link command. ## -## @item -Wl,@dots{} -## Pass flags though the linker like "-Wl,-rpath=@dots{}". +## @item @nospell{-Wl,@dots{}} +## Pass flags though the linker like @nospell{"-Wl,-rpath=@dots{}"}. ## The quotes are needed since commas are interpreted as command ## separators. ## ## @item -W@dots{} -## Pass flags though the compiler like "-Wa,OPTION". +## Pass flags though the compiler like @nospell{"-Wa,OPTION"}. ## ## @item -c ## Compile but do not link.
--- a/scripts/miscellaneous/setfield.m +++ b/scripts/miscellaneous/setfield.m @@ -18,10 +18,11 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{s} =} setfield (@var{s}, @var{field}, @var{val}) +## @deftypefn {Function File} {@var{s} =} setfield (@var{s}, @var{field}, @var{val}) ## @deftypefnx {Function File} {@var{s} =} setfield (@var{s}, @var{idx1}, @var{field1}, @var{idx2}, @var{field2}, @dots{}, @var{val}) ## -## Set a field member @var{field} in a structure @var{s} equal to @var{val}. For example: +## Set a field member @var{field} in a structure @var{s} equal to @var{val}. +## For example: ## ## @example ## @group @@ -39,10 +40,10 @@ ## ## @noindent ## Note that ordinary structure syntax @code{@var{s}.foo bar = 42} cannot be -## used here, as the field name is not a valid Octave identifier. Using -## arbitrary strings for field name is incompatible with @sc{Matlab}, so +## used here, as the field name is not a valid Octave identifier. Using +## arbitrary strings for field name is incompatible with @sc{matlab}, so ## this usage will warn if the @code{Octave:matlab-incompatible} warning -## is set. @xref{doc-warning_ids}. +## is set. @xref{docXwarning_ids}. ## ## With the second calling form, set a field on a structure array, ## possibly nested, with successive nested indices @var{idx1}, @@ -66,7 +67,7 @@ ## @end example ## ## Here we first have an ordinary structure array with one field -## @code{baz} set to 42. Then we set another field in a nested scalar structure +## @code{baz} set to 42. Then we set another field in a nested scalar structure ## indexing with two single cells containing the unique desired indices. ## ## Finally an example with nested structure arrays,
--- a/scripts/miscellaneous/tar.m +++ b/scripts/miscellaneous/tar.m @@ -59,7 +59,7 @@ if (output(end) == "\n") output(end) = []; endif - entries = strsplit (output, "\n", false); + entries = ostrsplit (output, "\n"); entries = entries'; endif
--- a/scripts/miscellaneous/unpack.m +++ b/scripts/miscellaneous/unpack.m @@ -194,7 +194,7 @@ if (output(length (output)) == "\n") output(length (output)) = []; endif - files = parser (strsplit (output, "\n", false))'; + files = parser (ostrsplit (output, "\n"))'; ## Move files if necessary if (needmove)
--- a/scripts/miscellaneous/version.m +++ b/scripts/miscellaneous/version.m @@ -21,8 +21,8 @@ ## Return the version number of Octave, as a string. ## ## This is an alias for the function @w{@env{OCTAVE_VERSION}} provided for -## compatibility -## @seealso{OCTAVE_VERSION}. +## compatibility. +## @seealso{OCTAVE_VERSION} ## @end deftypefn ## Author: jwe
--- a/scripts/miscellaneous/what.m +++ b/scripts/miscellaneous/what.m @@ -32,7 +32,7 @@ d = pwd (); elseif (isempty (strfind (d, filesep ()))) ## Find the appropriate directory on the path. - p = strtrim (strsplit (path (), pathsep (), false)); + p = strtrim (ostrsplit (path (), pathsep ())); d = p{find (cellfun (@(x) ! isempty (strfind (x, d)), p))(end)}; else [status, msg, msgid] = fileattrib (d);
--- a/scripts/miscellaneous/xor.m +++ b/scripts/miscellaneous/xor.m @@ -18,7 +18,7 @@ ## -*- texinfo -*- ## @deftypefn {Mapping Function} {@var{z} =} xor (@var{x}, @var{y}) -## Return the `exclusive or' of the entries of @var{x} and @var{y}. +## Return the @dfn{exclusive or} of the entries of @var{x} and @var{y}. ## For boolean expressions @var{x} and @var{y}, ## @code{xor (@var{x}, @var{y})} is true if and only if one of @var{x} or ## @var{y} is true. Otherwise, for @var{x} and @var{y} both true or both
--- a/scripts/miscellaneous/zip.m +++ b/scripts/miscellaneous/zip.m @@ -62,7 +62,7 @@ if (entries(end) == "\n") entries(end) = []; endif - entries = strsplit (entries, "\n", false); + entries = ostrsplit (entries, "\n"); endif endfunction
--- a/scripts/mk-pkg-add +++ b/scripts/mk-pkg-add @@ -24,6 +24,8 @@ set -e +SED=${SED:-'sed'} + prefix="$1/" shift @@ -32,6 +34,6 @@ if [ "$arg" = "--" ]; then prefix="" else - sed -n 's/^[#%][#%]* *PKG_ADD: *//p' "$prefix$arg" + $SED -n 's/^[#%][#%]* *PKG_ADD: *//p' "$prefix$arg" fi done
--- a/scripts/optimization/fminbnd.m +++ b/scripts/optimization/fminbnd.m @@ -26,7 +26,7 @@ ## starting interval. @var{options} is a structure specifying additional ## options. Currently, @code{fminbnd} recognizes these options: ## "FunValCheck", "OutputFcn", "TolX", "MaxIter", "MaxFunEvals". For a -## description of these options, see @ref{doc-optimset,,optimset}. +## description of these options, see @ref{docXoptimset,,optimset}. ## ## On exit, the function returns @var{x}, the approximate minimum point ## and @var{fval}, the function value thereof.
--- a/scripts/optimization/fzero.m +++ b/scripts/optimization/fzero.m @@ -42,7 +42,7 @@ ## Currently, @code{fzero} ## recognizes these options: @code{"FunValCheck"}, @code{"OutputFcn"}, ## @code{"TolX"}, @code{"MaxIter"}, @code{"MaxFunEvals"}. -## For a description of these options, see @ref{doc-optimset,,optimset}. +## For a description of these options, see @ref{docXoptimset,,optimset}. ## ## On exit, the function returns @var{x}, the approximate zero point ## and @var{fval}, the function value thereof.
--- a/scripts/optimization/lsqnonneg.m +++ b/scripts/optimization/lsqnonneg.m @@ -32,7 +32,7 @@ ## optional initial guess for @var{x}. ## Currently, @code{lsqnonneg} ## recognizes these options: @code{"MaxIter"}, @code{"TolX"}. -## For a description of these options, see @ref{doc-optimset,,optimset}. +## For a description of these options, see @ref{docXoptimset,,optimset}. ## ## Outputs: ##
--- a/scripts/pkg/private/configure_make.m +++ b/scripts/pkg/private/configure_make.m @@ -36,6 +36,7 @@ "OCTAVE"; octave_binary; "INSTALLDIR"; desc.dir}; scenv = sprintf ("%s=\"%s\" ", cenv{:}); + ## Configure. if (exist (fullfile (src, "configure"), "file")) flags = ""; @@ -53,24 +54,23 @@ endif [status, output] = shell (cstrcat ("cd '", src, "'; ", scenv, "./configure --prefix=\"", - desc.dir, "\"", flags)); + desc.dir, "\"", flags), + verbose); if (status != 0) rmdir (desc.dir, "s"); - error ("the configure script returned the following error: %s", output); - elseif (verbose) - printf ("%s", output); + disp (output); + error ("pkg: error running the configure script for %s.", desc.name); endif - endif ## Make. if (exist (fullfile (src, "Makefile"), "file")) - [status, output] = shell (cstrcat (scenv, "make -C '", src, "'")); + [status, output] = shell (cstrcat (scenv, "make -C '", src, "'"), + verbose); if (status != 0) rmdir (desc.dir, "s"); - error ("'make' returned the following error: %s", output); - elseif (verbose) - printf ("%s", output); + disp (output); + error ("pkg: error running `make' for the %s package.", desc.name); endif endif @@ -91,7 +91,7 @@ if (filenames(end) == "\n") filenames(end) = []; endif - filenames = strtrim (strsplit (filenames, "\n", false)); + filenames = strtrim (ostrsplit (filenames, "\n")); delete_idx = []; for i = 1:length (filenames) if (! all (isspace (filenames{i})))
--- a/scripts/pkg/private/fix_depends.m +++ b/scripts/pkg/private/fix_depends.m @@ -26,7 +26,7 @@ ## This function returns a cell of structures with the following fields: ## package, version, operator function deps_cell = fix_depends (depends) - deps = strtrim (strsplit (tolower (depends), ",", false)); + deps = strtrim (ostrsplit (tolower (depends), ",")); deps_cell = cell (1, length (deps)); ## For each dependency.
--- a/scripts/pkg/private/generate_lookfor_cache.m +++ b/scripts/pkg/private/generate_lookfor_cache.m @@ -23,9 +23,9 @@ ## @end deftypefn function generate_lookfor_cache (desc) - dirs = strtrim (strsplit (genpath (desc.dir), pathsep (), false)); + dirs = strtrim (ostrsplit (genpath (desc.dir), pathsep ())); for i = 1 : length (dirs) - gen_doc_cache (fullfile (dirs{i}, "doc-cache"), dirs{i}); + doc_cache_create (fullfile (dirs{i}, "doc-cache"), dirs{i}); endfor endfunction
--- a/scripts/pkg/private/list_forge_packages.m +++ b/scripts/pkg/private/list_forge_packages.m @@ -25,7 +25,7 @@ function list = list_forge_packages () [list, succ] = urlread ("http://packages.octave.org/list_packages.php"); if (succ) - list = strsplit (list, " \n\t", true, "delimitertype", "legacy"); + list = ostrsplit (list, " \n\t", true); else error ("pkg: could not read URL, please verify internet connection"); endif
--- a/scripts/pkg/private/shell.m +++ b/scripts/pkg/private/shell.m @@ -17,12 +17,14 @@ ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. -## -*- texinfo -*- -## @deftypefn {Function File} {[@var{status}, @var{output}] =} shell (@var{cmd}) -## Undocumented internal function. -## @end deftypefn +## Executes a shell command. In the end it calls system() but in case of +## windows will first check if sh.exe works. +## +## If VERBOSE is true, it will prints the output to STDOUT in real time and +## the second output argument will be an empty string. Otherwise, it will +## contain the output of the execeuted command. -function [status, output] = shell (cmd) +function [status, output] = shell (cmd, verbose) persistent have_sh; cmd = strrep (cmd, "\\", "/"); @@ -35,12 +37,20 @@ endif endif if (have_sh) - [status, output] = system (cstrcat ("sh.exe -c \"", cmd, "\"")); + cmd = cstrcat ("sh.exe -c \"", cmd, "\""); else - error ("Can not find the command shell"); + error ("pkg: unable to find the command shell."); endif + endif + ## if verbose, we want to display the output in real time. To do this, we + ## must call system with 1 output argument. But then the variable `output' + ## won't exist. So we initialize it empty. If an error does occur, and we + ## are verbose we will return an empty string but it's all fine since + ## the error message has already been displayed. + output = ""; + if (verbose) + [status] = system (cmd); else [status, output] = system (cmd); endif endfunction -
--- a/scripts/pkg/private/unload_packages.m +++ b/scripts/pkg/private/unload_packages.m @@ -35,7 +35,7 @@ endfor ## Get the current octave path. - p = strtrim (strsplit (path (), pathsep (), false)); + p = strtrim (ostrsplit (path (), pathsep ())); if (length (files) == 1 && strcmp (files{1}, "all")) ## Unload all.
--- a/scripts/pkg/private/write_index.m +++ b/scripts/pkg/private/write_index.m @@ -74,7 +74,7 @@ if (! isfield (desc, "categories")) error ("the DESCRIPTION file must have a Categories field, when no INDEX file is given"); endif - categories = strtrim (strsplit (desc.categories, ",", false)); + categories = strtrim (strsplit (desc.categories, ",")); if (length (categories) < 1) error ("the Category field is empty"); endif
--- a/scripts/plot/area.m +++ b/scripts/plot/area.m @@ -25,9 +25,9 @@ ## @deftypefnx {Function File} {} area (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} area (@dots{}) ## Area plot of the columns of @var{y}. This shows the -## contributions of each column value to the row sum. It is functionally similar to -## @code{plot (@var{x}, cumsum (@var{y}, 2))}, except that the area under -## the curve is shaded. +## contributions of each column value to the row sum. It is functionally +## similar to @code{plot (@var{x}, cumsum (@var{y}, 2))}, except that the +## area under the curve is shaded. ## ## If the @var{x} argument is omitted it defaults to ## @code{1 : rows (@var{y})}. A value @var{lvl} can be defined that determines @@ -44,10 +44,12 @@ ## Example: Verify identity sin^2 + cos^2 = 1 ## ## @example +## @group ## t = linspace (0, 2*pi, 100)'; ## y = [sin(t).^2, cos(t).^2)]; ## area (t, y); ## legend ('sin^2', 'cos^2', 'location', 'NorthEastOutside'); +## @end group ## @end example ## @seealso{plot, patch} ## @end deftypefn
--- a/scripts/plot/bar.m +++ b/scripts/plot/bar.m @@ -21,8 +21,8 @@ ## @deftypefnx {Function File} {} bar (@var{y}) ## @deftypefnx {Function File} {} bar (@var{x}, @var{y}, @var{w}) ## @deftypefnx {Function File} {} bar (@var{x}, @var{y}, @var{w}, @var{style}) +## @deftypefnx {Function File} {} bar (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} bar (@dots{}, @var{prop}, @var{val}) -## @deftypefnx {Function File} {} bar (@var{h}, @dots{}) ## Produce a bar graph from two vectors of x-y data. ## ## If only one argument is given, @var{y}, it is taken as a vector of y-values @@ -36,6 +36,9 @@ ## argument, which can take the values @code{"grouped"} (the default), ## or @code{"stacked"}. ## +## Passing the optional input handle @var{h} will draw the resulting plot +## in the specified handle. +## ## The optional return value @var{h} is a handle to the created "bar series" ## object with one handle per column of the variable @var{y}. This ## series allows common elements of the group of bar series objects to @@ -52,8 +55,6 @@ ## @noindent ## changes the position on the base of all of the bar series. ## -## The optional input handle @var{h} allows an axis handle to be passed. -## ## The bar graph's appearance may be modified by specifying property/value ## pairs. The following example modifies the face and edge colors. ##
--- a/scripts/plot/barh.m +++ b/scripts/plot/barh.m @@ -21,8 +21,9 @@ ## @deftypefnx {Function File} {} barh (@var{y}) ## @deftypefnx {Function File} {} barh (@var{x}, @var{y}, @var{w}) ## @deftypefnx {Function File} {} barh (@var{x}, @var{y}, @var{w}, @var{style}) -## @deftypefnx {Function File} {@var{h} =} barh (@dots{}, @var{prop}, @var{val}) +## @deftypefnx {Function File} {} barh (@dots{}, @var{prop}, @var{val}) ## @deftypefnx {Function File} {} barh (@var{h}, @dots{}) +## @deftypefnx {Function File} {@var{h} =} barh (@dots{}) ## Produce a horizontal bar graph from two vectors of x-y data. ## ## If only one argument is given, it is taken as a vector of y-values @@ -36,7 +37,9 @@ ## argument, which can take the values @code{"grouped"} (the default), ## or @code{"stacked"}. ## -## The optional input handle @var{h} allows an axis handle to be passed. +## Passing the optional input handle @var{h} will draw the resulting plot +## in the specified handle. +## ## Properties of the patch graphics object can be changed using ## @var{prop}, @var{val} pairs. ##
--- a/scripts/plot/comet.m +++ b/scripts/plot/comet.m @@ -20,17 +20,18 @@ ## @deftypefn {Function File} {} comet (@var{y}) ## @deftypefnx {Function File} {} comet (@var{x}, @var{y}) ## @deftypefnx {Function File} {} comet (@var{x}, @var{y}, @var{p}) -## @deftypefnx {Function File} {} comet (@var{ax}, @dots{}) +## @deftypefnx {Function File} {} comet (@var{hax}, @dots{}) ## Produce a simple comet style animation along the trajectory provided by -## the input coordinate vectors (@var{x}, @var{y}), where @var{x} will default -## to the indices of @var{y}. +## the input coordinate vectors (@var{x}, @var{y}). If @var{x} is not +## specified it defaults to the indices of @var{y}. ## ## The speed of the comet may be controlled by @var{p}, which represents the -## time which passes as the animation passes from one point to the next. The -## default for @var{p} is 0.1 seconds. +## time each point is displayed before moving to the next one. The default for +## @var{p} is 0.1 seconds. ## -## If @var{ax} is specified the animation is produced in that axis rather than -## the @code{gca}. +## If @var{hax} is specified the animation is produced in that axis rather than +## the current axis. +## @seealso{comet3} ## @end deftypefn ## Author: Ben Abbott bpabbott@mac.com
--- a/scripts/plot/comet3.m +++ b/scripts/plot/comet3.m @@ -18,18 +18,20 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} comet3 (@var{z}) +## @deftypefnx {Function File} {} comet3 (@var{x}, @var{y}, @var{z}) ## @deftypefnx {Function File} {} comet3 (@var{x}, @var{y}, @var{z}, @var{p}) -## @deftypefnx {Function File} {} comet3 (@var{ax}, @dots{}) +## @deftypefnx {Function File} {} comet3 (@var{hax}, @dots{}) ## Produce a simple comet style animation along the trajectory provided by -## the input coordinate vectors (@var{x}, @var{y}), where @var{x} will default -## to the indices of @var{y}. +## the input coordinate vectors (@var{x}, @var{y}, @var{z}). If only @var{z} +## is specified then @var{x}, @var{y} default to the indices of @var{z}. ## ## The speed of the comet may be controlled by @var{p}, which represents the -## time which passes as the animation passes from one point to the next. The -## default for @var{p} is 0.1 seconds. +## time each point is displayed before moving to the next one. The default for +## @var{p} is 0.1 seconds. ## -## If @var{ax} is specified the animation is produced in that axis rather than -## the @code{gca}. +## If @var{hax} is specified the animation is produced in that axis rather than +## the current axis. +## @seealso{comet} ## @end deftypefn ## Author: jwe
--- a/scripts/plot/contour.m +++ b/scripts/plot/contour.m @@ -45,7 +45,7 @@ ## The optional input and output argument @var{h} allows an axis handle to ## be passed to @code{contour} and the handles to the contour objects to be ## returned. -## @seealso{contourc, patch, plot} +## @seealso{contourc, contourf, contour3, patch, plot} ## @end deftypefn ## Author: Shai Ayal <shaiay@users.sourceforge.net>
--- a/scripts/plot/contour3.m +++ b/scripts/plot/contour3.m @@ -33,7 +33,7 @@ ## @example ## @group ## contour3 (peaks (19)); -## hold on +## hold on; ## surface (peaks (19), "facecolor", "none", "EdgeColor", "black"); ## colormap hot; ## @end group @@ -46,7 +46,7 @@ ## The optional input and output argument @var{h} allows an axis handle to ## be passed to @code{contour} and the handles to the contour objects to be ## returned. -## @seealso{contourc, patch, plot} +## @seealso{contourc, contour, contourf, patch, plot} ## @end deftypefn function [c, h] = contour3 (varargin)
--- a/scripts/plot/contourc.m +++ b/scripts/plot/contourc.m @@ -17,12 +17,15 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{c}, @var{lev}] =} contourc (@var{x}, @var{y}, @var{z}, @var{vn}) +## @deftypefn {Function File} {[@var{c}, @var{lev}] =} contourc (@var{z}) +## @deftypefnx {Function File} {[@var{c}, @var{lev}] =} contourc (@var{z}, @var{vn}) +## @deftypefnx {Function File} {[@var{c}, @var{lev}] =} contourc (@var{x}, @var{y}, @var{z}) +## @deftypefnx {Function File} {[@var{c}, @var{lev}] =} contourc (@var{x}, @var{y}, @var{z}, @var{vn}) ## Compute isolines (contour lines) of the matrix @var{z}. -## Parameters @var{x}, @var{y} and @var{vn} are optional. +## Parameters @var{x}, @var{y}, and @var{vn} are optional. ## ## The return value @var{lev} is a vector of the contour levels. -## The return value @var{c} is a 2 by @var{n} matrix containing the +## The return value @var{c} is a 2x@var{n} matrix containing the ## contour lines in the following format ## ## @example @@ -37,9 +40,9 @@ ## length of @var{lenn}. ## ## If @var{x} and @var{y} are omitted they are taken as the row/column -## index of @var{z}. @var{vn} is either a scalar denoting the number of lines -## to compute or a vector containing the values of the lines. If only one -## value is wanted, set @code{@var{vn} = [val, val]}; +## indices of @var{z}. @var{vn} is either a scalar denoting the number of +## contour lines to compute or a vector containing the values of the lines. +## If only one value is desired, set @code{@var{vn} = [val, val]}; ## If @var{vn} is omitted it defaults to 10. ## ## For example: @@ -54,7 +57,7 @@ ## 2.0000 1.0000 2.0000 2.0000 2.0000 1.5000 ## @end group ## @end example -## @seealso{contour} +## @seealso{contour, contourf, contour3} ## @end deftypefn ## Author: Shai Ayal <shaiay@users.sourceforge.net>
--- a/scripts/plot/contourf.m +++ b/scripts/plot/contourf.m @@ -18,33 +18,37 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{lvl}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{n}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{n}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{lvl}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{ax}, @dots{}) -## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@dots{}, @var{"property"}, @var{val}) +## @deftypefn {Function File} {} contourf (@var{x}, @var{y}, @var{z}, @var{lvl}) +## @deftypefnx {Function File} {} contourf (@var{x}, @var{y}, @var{z}, @var{n}) +## @deftypefnx {Function File} {} contourf (@var{x}, @var{y}, @var{z}) +## @deftypefnx {Function File} {} contourf (@var{z}, @var{n}) +## @deftypefnx {Function File} {} contourf (@var{z}, @var{lvl}) +## @deftypefnx {Function File} {} contourf (@var{z}) +## @deftypefnx {Function File} {} contourf (@dots{}, @var{prop}, @var{val}) +## @deftypefnx {Function File} {} contourf (@var{hax}, @dots{}) +## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@dots{}) ## Compute and plot filled contours of the matrix @var{z}. ## Parameters @var{x}, @var{y} and @var{n} or @var{lvl} are optional. ## +## If @var{x} and @var{y} are omitted they are taken as the row/column +## indices of @var{z}. @var{n} is a scalar denoting the number of contour +## lines to compute. Alternatively @var{lvl} is a vector containing the +## contour levels. If only one value (e.g., lvl0) is desired, set +## @var{lvl} to [lvl0, lvl0]. If both @var{n} or @var{lvl} are omitted +## a default value of 10 contour levels is assumed. +## +## The appearance of the plot can be customized by passing +## property/value pairs to the function. +## +## If provided, the filled contours are added to the axes object +## @var{hax} instead of the current axis. +## ## The return value @var{c} is a 2xn matrix containing the contour lines -## as described in the help to the contourc function. +## as described in the documentation on the @code{contourc} function. ## ## The return value @var{h} is handle-vector to the patch objects creating ## the filled contours. ## -## If @var{x} and @var{y} are omitted they are taken as the row/column -## index of @var{z}. @var{n} is a scalar denoting the number of lines -## to compute. Alternatively @var{lvl} is a vector containing the -## contour levels. If only one value (e.g., lvl0) is wanted, set -## @var{lvl} to [lvl0, lvl0]. If both @var{n} or @var{lvl} are omitted -## a default value of 10 contour level is assumed. -## -## If provided, the filled contours are added to the axes object -## @var{ax} instead of the current axis. -## ## The following example plots filled contours of the @code{peaks} ## function. ## @@ -54,7 +58,7 @@ ## contourf (x, y, z, -7:9) ## @end group ## @end example -## @seealso{contour, contourc, patch} +## @seealso{contourc, contour, contour3, patch} ## @end deftypefn ## Author: Kai Habel <kai.habel@gmx.de>
--- a/scripts/plot/errorbar.m +++ b/scripts/plot/errorbar.m @@ -17,7 +17,8 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} errorbar (@var{args}) +## @deftypefn {Function File} {} errorbar (@var{args}) +## @deftypefnx {Function File} {@var{h} =} errorbar (@var{args}) ## This function produces two-dimensional plots with errorbars. Many ## different combinations of arguments are possible. The simplest form is ##
--- a/scripts/plot/findobj.m +++ b/scripts/plot/findobj.m @@ -220,10 +220,12 @@ match = 0; endif elseif (numel (p.(pname{np})) == numel (pvalue{np})) - if (ischar (pvalue{np})) + if (ischar (pvalue{np}) && ischar (p.(pname{np}))) match = strcmpi (pvalue{np}, p.(pname{np})); + elseif (isnumeric (pvalue{np} && isnumeric (p.(pname{np})))) + match = (pvalue{np} == p.(pname{np})); else - match = (pvalue{np} == p.(pname{np})); + match = isequal (pvalue{np}, p.(pname{np})); endif else match = 0; @@ -288,3 +290,12 @@ %! end_unwind_protect %! assert (h2, h1) +%!test +%! hf = figure ("visible", "off"); +%! h1 = subplot (2, 2, 1); +%! h2 = subplot (2, 2, 2); +%! h3 = subplot (2, 2, 3); +%! h4 = subplot (2, 2, 4); +%! userdata = struct ("foo", "bar"); +%! set (h3, "userdata", userdata); +%! assert (findobj (hf, "userdata", userdata), h3)
--- a/scripts/plot/fplot.m +++ b/scripts/plot/fplot.m @@ -79,6 +79,12 @@ n = 8; x = linspace (limits(1), limits(2), n)'; y = feval (fn, x); + + if (! size_equal (x0, y0)) + ## FN is a constant value function + y0 = repmat (y0, size (x0)); + y = repmat (y, size (x)); + endif while (n < 2 .^ 20) y00 = interp1 (x0, y0, x, "linear"); @@ -124,3 +130,11 @@ %! clf; %! fplot ('[cos(x), sin(x)]', [0, 2*pi]); +%% Test input validation +%!error fplot (1) +%!error fplot (1,2,3,4,5) +%!error <LIMITS must be a real vector> fplot (@cos, [i, 2*i]) +%!error <LIMITS must be a real vector with 2 or 4> fplot (@cos, [1]) +%!error <LIMITS must be a real vector with 2 or 4> fplot (@cos, [1 2 3]) +%!error <FN must be a function handle> fplot (1, [0 1]) +
--- a/scripts/plot/gca.m +++ b/scripts/plot/gca.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} gca () +## @deftypefn {Function File} {@var{h} =} gca () ## Return a handle to the current axis object. If no axis object ## exists, create one and return its handle. The handle may then be ## used to examine or set properties of the axes. For example, @@ -32,7 +32,7 @@ ## @noindent ## creates an empty axes object, then changes its location and size in ## the figure window. -## @seealso{get, set} +## @seealso{gcf, gco, get, set} ## @end deftypefn ## Author: jwe
--- a/scripts/plot/gcbf.m +++ b/scripts/plot/gcbf.m @@ -21,9 +21,9 @@ ## Return a handle to the figure containing the object whose callback ## is currently executing. If no callback is executing, this function ## returns the empty matrix. The handle returned by this function is -## the same as the second output argument of gcbo. +## the same as the second output argument of @code{gcbo}. ## -##@seealso{gcf, gca, gcbo} +##@seealso{gcbo, gcf, gca} ##@end deftypefn function fig = gcbf ()
--- a/scripts/plot/gcbo.m +++ b/scripts/plot/gcbo.m @@ -24,11 +24,11 @@ ## empty matrix. This handle is obtained from the root object property ## "CallbackObject". ## -## Additionally return the handle of the figure containing the -## object whose callback is currently executing. If no callback is -## executing, the second output is also set to the empty matrix. +## When called with a second output argument, return the handle of the figure +## containing the object whose callback is currently executing. If no callback +## is executing the second output is also set to the empty matrix. ## -##@seealso{gcf, gca, gcbf} +##@seealso{gcbf, gco, gcf, gca} ##@end deftypefn function [h, fig] = gcbo ()
--- a/scripts/plot/gcf.m +++ b/scripts/plot/gcf.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} gcf () +## @deftypefn {Function File} {@var{h} =} gcf () ## Return the current figure handle. If a figure does not exist, create ## one and return its handle. The handle may then be used to examine or ## set properties of the figure. For example, @@ -34,7 +34,7 @@ ## plots a sine wave, finds the handle of the current figure, and then ## makes that figure invisible. Setting the visible property of the ## figure to @code{"on"} will cause it to be displayed again. -## @seealso{get, set} +## @seealso{gca, gco, get, set} ## @end deftypefn ## Author: jwe, Bill Denney
--- a/scripts/plot/gco.m +++ b/scripts/plot/gco.m @@ -27,7 +27,7 @@ ## If the last mouse click didn't occur on any child object of the figure, ## the current object is the figure itself. ## -## If no mouse click occured in the target figure, this function returns an +## If no mouse click occurred in the target figure, this function returns an ## empty matrix. ## ## Note that the value returned by this function is not necessarily the same @@ -35,7 +35,7 @@ ## callback can be interrupted by another callback and the current object ## can be modified. ## -##@seealso{gcbo, gcf} +##@seealso{gcbo, gcf, gca, get, set} ##@end deftypefn function h = gco ()
--- a/scripts/plot/ishghandle.m +++ b/scripts/plot/ishghandle.m @@ -18,7 +18,10 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} ishghandle (@var{h}) -## Return true if @var{h} is a graphics handle and false otherwise. +## Return true if @var{h} is a graphics handle and false otherwise. This +## function is equivalent to @code{ishandle} and is provided for compatibility +## with @sc{matlab}. +## @seealso{ishandle} ## @end deftypefn function retval = ishghandle (h)
--- a/scripts/plot/isosurface.m +++ b/scripts/plot/isosurface.m @@ -51,7 +51,7 @@ ## ## If called with two or three output arguments then return the ## information about the faces @var{f}, vertices @var{v} and color data -## @var{c} as seperate arrays instead of a single structure array. +## @var{c} as separate arrays instead of a single structure array. ## ## If called with no output argument then directly process the ## isosurface geometry with the @command{patch} command. @@ -197,9 +197,9 @@ %! isosurface (x, y, z, v, 1); %!shared x, y, z, val -%! [x, y, z] = meshgrid (0:1, 0:1, 0:1); %% Points for single -%! val = [0, 0; 0, 0]; %% cube and a 3-D -%! val(:,:,2) = [0, 0; 1, 0]; %% array of values +%! [x, y, z] = meshgrid (0:1, 0:1, 0:1); # Points for single +%! val = [0, 0; 0, 0]; # cube and a 3-D +%! val(:,:,2) = [0, 0; 1, 0]; # array of values %!test %! fv = isosurface (x, y, z, val, 0.3); %! assert (isfield (fv, "vertices"), true);
--- a/scripts/plot/legend.m +++ b/scripts/plot/legend.m @@ -125,7 +125,7 @@ ## The legend label text is either provided in the call to @code{legend} or ## is taken from the DisplayName property of graphics objects. If no ## labels or DisplayNames are available, then the label text is simply -## "data1", "data2", @dots{}, "dataN". +## "data1", "data2", @dots{}, @nospell{"dataN"}. ## @end deftypefn function [hlegend2, hobjects2, hplot2, text_strings2] = legend (varargin) @@ -177,31 +177,31 @@ nkids = numel (kids); orientation = "default"; - position = "default"; + location = "default"; show = "create"; textpos = "default"; box = "default"; - ## Process old way of specifying position with a number rather than a string. + ## Process old way of specifying location with a number rather than a string. if (nargs > 0) pos = varargin{nargs}; if (isnumeric (pos) && isscalar (pos) && pos == fix (pos)) if (pos >= -1 && pos <= 4) - position = [{"northeastoutside", "best", "northeast", + location = [{"northeastoutside", "best", "northeast", "northwest", "southwest", "southeast"}] {pos + 2}; nargs--; else - error ("legend: invalid position specified"); + error ("legend: invalid location specified"); endif endif endif - ## Find position and orientation property/value pairs + ## Find location and orientation property/value pairs while (nargs > 1) pos = varargin{nargs-1}; str = varargin{nargs}; if (strcmpi (pos, "location") && ischar (str)) - position = lower (str); + location = lower (str); nargs -= 2; elseif (strcmpi (pos, "orientation") && ischar (str)) orientation = lower (str); @@ -214,28 +214,29 @@ ## Validate the orientation switch (orientation) case {"vertical", "horizontal", "default"} + ## These are all accepted orientations. otherwise error ("legend: unrecognized legend orientation"); endswitch - ## Validate the position type + ## Validate the location type outside = false; - inout = strfind (position, "outside"); + inout = strfind (location, "outside"); if (! isempty (inout)) outside = true; - position = position(1:inout-1); + location = location(1:inout-1); else outside = false; endif - switch (position) + switch (location) case {"north", "south", "east", "west", "northeast", "northwest", ... "southeast", "southwest", "default"} case "best" - warning ("legend: 'Best' not yet implemented for location specifier\n"); - position = "northeast"; + warning ("legend: 'best' not yet implemented for location specifier\n"); + location = "northeast"; otherwise - error ("legend: unrecognized legend position"); + error ("legend: unrecognized legend location"); endswitch ## Find any existing legend object on figure @@ -341,28 +342,28 @@ if (! isempty (hlegend)) set (hlegend, "box", "off", "visible", "off"); endif - elseif (! have_labels && !(strcmp (position, "default") && + elseif (! have_labels && !(strcmp (location, "default") && strcmp (orientation, "default"))) ## Changing location or orientation of existing legend if (! isempty (hlegend)) hax = getfield (get (hlegend, "userdata"), "handle"); [hplots, text_strings] = __getlegenddata__ (hlegend); - if (strcmp (position, "default")) + if (strcmp (location, "default")) h = legend (hax, hplots, text_strings, "orientation", orientation); elseif (strcmp (orientation, "default")) if (outside) h = legend (hax, hplots, text_strings, "location", - strcat (position, "outside")); + strcat (location, "outside")); else - h = legend (hax, hplots, text_strings, "location", position); + h = legend (hax, hplots, text_strings, "location", location); endif else if (outside) h = legend (hax, hplots, text_strings, "location", - strcat (position, "outside"), "orientation", orientation); + strcat (location, "outside"), "orientation", orientation); else - h = legend (hax, hplots, text_strings, "location", position, + h = legend (hax, hplots, text_strings, "location", location, "orientation", orientation); endif endif @@ -420,7 +421,9 @@ if (have_labels || ! have_dname) k = nkids; if (! have_labels) - varargin = arrayfun (@(x) sprintf ("data%d", x), [1:nkids]', "uniformoutput", false); + varargin = arrayfun (@(x) sprintf ("data%d", x), [1:nkids]', + "uniformoutput", false); + have_labels = true; nargs = nkids; endif for i = 1 : nargs @@ -479,7 +482,7 @@ endwhile if (! (strcmp (typ, "line") || strcmp (typ, "surface") || strcmp (typ, "patch") || strcmp (typ, "hggroup"))) - break + break; endif if (k > 0) if (strcmp (get (kids(k), "type"), "hggroup")) @@ -521,12 +524,12 @@ if (strcmp (textpos, "default")) textpos = get (hlegend, "textposition"); endif - if (strcmp (position, "default")) - position = get (hlegend, "location"); - inout = strfind (position, "outside"); + if (strcmp (location, "default")) + location = get (hlegend, "location"); + inout = strfind (location, "outside"); if (! isempty (inout)) outside = true; - position = position(1:inout-1); + location = location(1:inout-1); else outside = false; endif @@ -539,8 +542,8 @@ if (strcmp (textpos, "default")) textpos = "left"; endif - if (strcmp (position, "default")) - position = "northeast"; + if (strcmp (location, "default")) + location = "northeast"; endif if (strcmp (orientation, "default")) orientation = "vertical"; @@ -555,8 +558,16 @@ unwind_protect set (ca(1), "units", "points"); set (ca(1), "fontunits", "points"); - ca_pos = get (ca(1), "position"); - ca_outpos = get (ca(1), "outerposition"); + if (isempty (hlegend) || ! isprop (hlegend, "unmodified_axes_position")) + unmodified_axes_position = get (ca(1), "position"); + unmodified_axes_outerposition = get (ca(1), "outerposition"); + else + unmodified_axes_position = get (hlegend, "unmodified_axes_position"); + unmodified_axes_outerposition = get (hlegend, ... + "unmodified_axes_outerposition"); + endif + ca_pos = unmodified_axes_position; + ca_outpos = unmodified_axes_outerposition; ca_fontsize = get (ca(1), "fontsize"); unwind_protect_cleanup set (ca(1), "units", units); @@ -567,7 +578,6 @@ xpad = 2; ypad = 2; - ## Length of line segments in the legend in points linelength = 15; ## Create the axis first @@ -593,6 +603,7 @@ axes (hlegend); delete (get (hlegend, "children")); endif + fontsize = get (hlegend, "fontsize"); ## Add text label to the axis first, checking their extents nentries = numel (hplots); texthandle = []; @@ -603,12 +614,12 @@ texthandle = [texthandle, text(0, 0, text_strings{k}, "horizontalalignment", "left", "userdata", hplots(k), - "fontsize", ca_fontsize)]; + "fontsize", fontsize)]; else texthandle = [texthandle, text(0, 0, text_strings{k}, "horizontalalignment", "right", "userdata", hplots(k), - "fontsize", ca_fontsize)]; + "fontsize", fontsize)]; endif units = get (texthandle(end), "units"); unwind_protect @@ -660,13 +671,36 @@ ystep = (ypad + maxheight); yoffset = ystep / 2; - ## Place the legend in the desired position + ## Place the legend in the desired location if (strcmp (orientation, "vertical")) lpos = [0, 0, num2 * xstep, num1 * ystep]; else lpos = [0, 0, num1 * xstep, num2 * ystep]; endif - switch (position) + + if (strcmp (get (fig, "__graphics_toolkit__"), "gnuplot")) + ## Gnuplot places the key (legend) at edge of the figure window. + ## OpenGL places the legend box at edge of the unmodified axes + ## position. + if (isempty (strfind (location, "east"))) + extra_offset = unmodified_axes_outerposition(1) ... + + unmodified_axes_outerposition(3) ... + - unmodified_axes_position(1) ... + - unmodified_axes_position(3); + else + extra_offset = unmodified_axes_position(1) ... + - unmodified_axes_outerposition(1); + endif + ## FIXME - the "fontsize" is added to match the behavior of OpenGL. + ## This implies that a change in fontsize should trigger a listener + ## to update the legend. The "2" was determined using a long legend + ## key in the absence of any subplots. + extra_offset = extra_offset - 2 * fontsize; + else + extra_offset = 0; + endif + + switch (location) case "north" if (outside) lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... @@ -693,6 +727,7 @@ lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; new_pos = [ca_pos(1), ca_pos(2), ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; @@ -704,6 +739,8 @@ lpos(3), lpos(4)]; new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(1) = new_pos(1) - extra_offset; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ypad, ... ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; @@ -713,6 +750,7 @@ lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... ca_pos(2) + ca_pos(4) - lpos(4), lpos(3), lpos(4)]; new_pos = [ca_pos(1), ca_pos(2), ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; @@ -723,6 +761,8 @@ lpos(3), lpos(4)]; new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(1) = new_pos(1) - extra_offset; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ypad, ... ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; @@ -733,6 +773,7 @@ ca_pos(2), lpos(3), lpos(4)]; new_pos = [ca_pos(1), ca_pos(2), ... ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... ca_pos(2) + ypad, lpos(3), lpos(4)]; @@ -742,6 +783,8 @@ lpos = [ca_outpos(1) + ypad, ca_pos(2), lpos(3), lpos(4)]; new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... ca_pos(3) - lpos(3), ca_pos(4)]; + new_pos(1) = new_pos(1) - extra_offset; + new_pos(3) = new_pos(3) + extra_offset; else lpos = [ca_pos(1) + ypad, ca_pos(2) + ypad, lpos(3), lpos(4)]; endif @@ -783,13 +826,20 @@ hobjects = [hobjects, l1]; endif - addlistener (hplots(k), "color", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "linestyle", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "marker", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "markeredgecolor", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "markerfacecolor", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "markersize", {@updateline, hlegend, linelength}); - addlistener (hplots(k), "displayname", {@updateline, hlegend, linelength}); + addlistener (hplots(k), "color", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "linestyle", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "marker", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "markeredgecolor", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "markerfacecolor", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "markersize", + {@updateline, hlegend, linelength}); + addlistener (hplots(k), "displayname", + {@updateline, hlegend, linelength}); case "patch" facecolor = get (hplots(k), "facecolor"); edgecolor = get (hplots(k), "edgecolor"); @@ -799,8 +849,8 @@ xoffset + xk * xstep) / lpos(3), "ydata", (lpos(4) - yoffset - [yk-0.3, yk-0.3, yk+0.3, yk+0.3] .* ystep) / lpos(4), - "facecolor", facecolor, "edgecolor", edgecolor, "cdata", cdata, - "userdata", hplots(k)); + "facecolor", facecolor, "edgecolor", edgecolor, + "cdata", cdata, "userdata", hplots(k)); hobjects = [hobjects, p1]; endif case "surface" @@ -824,10 +874,24 @@ ## Add an invisible text object to original axis ## that when it is destroyed will remove the legend - t1 = text (0, 0, "", "parent", ca(1), "tag", "legend", - "handlevisibility", "off", "visible", "off", - "xliminclude", "off", "yliminclude", "off"); - set (t1, "deletefcn", {@deletelegend1, hlegend}); + props = {"parent", ca(1), "tag", "legend", ... + "handlevisibility", "off", "visible", "off", ... + "xliminclude", "off", "yliminclude", "off"}; + t1 = findall (ca(1), props{3:4}, "type", "text"); + if (isempty (t1)) + t1 = text (0, 0, "", props{:}); + set (t1, "deletefcn", {@deletelegend1, hlegend}); + endif + if (isprop (hlegend, "unmodified_axes_position")) + set (hlegend, "unmodified_axes_position", unmodified_axes_position); + set (hlegend, "unmodified_axes_outerposition", + unmodified_axes_outerposition); + else + addproperty ("unmodified_axes_position", hlegend, + "data", unmodified_axes_position); + addproperty ("unmodified_axes_outerposition", hlegend, + "data", unmodified_axes_outerposition); + endif ## Resize the axis that the legend is attached to if the ## legend is "outside" the plot and create a listener to @@ -845,9 +909,10 @@ endfor set (hlegend, "deletefcn", {@deletelegend2, ca, ... - ca_pos, ca_outpos, t1, hplots}); + unmodified_axes_position, ... + unmodified_axes_outerposition, t1, hplots}); addlistener (hlegend, "visible", {@hideshowlegend, ca, ... - ca_pos, new_pos}); + unmodified_axes_position, new_pos}); else set (hlegend, "deletefcn", {@deletelegend2, ca, [], [], t1, hplots}); endif @@ -855,7 +920,13 @@ if (addprops) addproperty ("edgecolor", hlegend, "color", [0, 0, 0]); addproperty ("textcolor", hlegend, "color", [0, 0, 0]); - addproperty ("location", hlegend, "radio", "north|south|east|west|{northeast}|southeast|northwest|southwest|northoutside|southoutside|eastoutside|westoutside|northeastoutside|southeastoutside|northwestoutside|southwestoutside"); + locations = {"north", "south", "east", "west", ... + "northeast", "southeast", "northwest", "southwest", ... + "northoutside", "southoutside", ... + "eastoutside", "westoutside", ... + "northeastoutside", "southeastoutside", ... + "northwestoutside", "southwestoutside"}; + addproperty ("location", hlegend, "radio", strjoin (locations, "|")); addproperty ("orientation", hlegend, "radio", "{vertical}|horizontal"); addproperty ("string", hlegend, "any", text_strings); @@ -865,10 +936,10 @@ endif if (outside) - set (hlegend, "location", strcat (position, "outside"), + set (hlegend, "location", strcat (location, "outside"), "orientation", orientation, "textposition", textpos); else - set (hlegend, "location", position, "orientation", orientation, + set (hlegend, "location", location, "orientation", orientation, "textposition", textpos); endif if (addprops) @@ -898,16 +969,31 @@ function updatelegend (h, d) persistent recursive = false; + if (! recursive) recursive = true; unwind_protect hax = getfield (get (h, "userdata"), "handle"); [hplots, text_strings] = __getlegenddata__ (h); + position = get (h, "unmodified_axes_position"); + outerposition = get (h, "unmodified_axes_outerposition"); + units = get (hax, "units"); + set (hax, "units", "points"); + switch get (hax, "activepositionproperty") + case "position" + set (hax, "outerposition", outerposition); + set (hax, "position", position); + case "outerposition" + set (hax, "position", position); + set (hax, "outerposition", outerposition); + endswitch + set (hax, "units", units); h = legend (hax, hplots, get (h, "string")); unwind_protect_cleanup recursive = false; end_unwind_protect endif + endfunction function updatelegendtext (h, d) @@ -1028,8 +1114,8 @@ elseif ((!isempty (displayname) && (! strcmp (marker, "none") || ! strcmp (linestyle, "none"))) && isempty (lm) && isempty (ll)) - ## An element was added to the legend. Need to recall the - ## legend function to recreate a new legend + ## An element was added to the legend. Need to re-call the + ## legend function to recreate a new legend. [hplots, text_strings] = __getlegenddata__ (hlegend); hplots = [hplots, h]; text_strings = {text_strings{:}, displayname}; @@ -1066,21 +1152,42 @@ endif endfunction +%!test +%! graphics_toolkit ("gnuplot"); +%! h = figure ("visible", "off", "__graphics_toolkit__", "gnuplot"); +%! unwind_protect +%! position = get (h, "position"); +%! plot (rand (3)) +%! legend () +%! filename = sprintf ("%s.eps", tmpnam ()); +%! print (filename) +%! unlink (filename); +%! assert (get (h, "position"), position) +%! unwind_protect_cleanup +%! close (h) +%! end_unwind_protect %!demo +%! clf; %! plot (rand (2)); %! title ('legend called with cellstr and string inputs for labels'); -%! legend ({'foo'}, 'bar'); +%! h = legend ({'foo'}, 'bar'); +%! legend location northeastoutside +%! set (h, 'fontsize', 20); %!demo +%! clf; %! plot (rand (3)); %! title ('legend() without inputs creates default labels'); -%! legend (); +%! h = legend (); %!demo %! clf; %! x = 0:1; %! plot (x,x,';I am Blue;', x,2*x, x,3*x,';I am Red;'); +%! legend location northeastoutside +%! ## Placing legend inside should return axes to original size +%! legend location northeast %! title ('Blue and Red keys, with Green missing'); %!demo @@ -1088,32 +1195,37 @@ %! plot (1:10, 1:10, 1:10, fliplr (1:10)); %! title ('incline is blue and decline is green'); %! legend ({'I am blue', 'I am green'}, 'location', 'east'); +%! legend hide +%! legend show %!demo %! clf; %! plot (1:10, 1:10, 1:10, fliplr (1:10)); %! title ('Legend with keys in horizontal orientation'); -%! legend ({'I am blue', 'I am green'}, 'location', 'east', 'orientation', 'horizontal'); -%! legend boxoff; +%! legend ({'I am blue', 'I am green'}, ... +%! 'location', 'east', 'orientation', 'horizontal'); +%! legend boxoff +%! legend boxon %!demo %! clf; %! plot (1:10, 1:10, 1:10, fliplr (1:10)); %! title ('Legend with box off'); %! legend ({'I am blue', 'I am green'}, 'location', 'east'); -%! legend boxoff; +%! legend boxoff %!demo %! clf; %! plot (1:10, 1:10, 1:10, fliplr (1:10)); %! title ('Legend with text to the right of key'); %! legend ({'I am blue', 'I am green'}, 'location', 'east'); -%! legend right; +%! legend right %!demo %! clf; %! plot (1:10, 1:10, 1:10, fliplr (1:10)); -%! title ('Using properties to have legend text shown to the right of key'); +%! title ({'Use properties to place legend text to the right of key', ... +%! 'Legend text color is magenta'}); %! h = legend ({'I am blue', 'I am green'}, 'location', 'east'); %! legend ('left'); %! set (h, 'textposition', 'right'); @@ -1124,13 +1236,14 @@ %! plot (1:10, 1:10, 1:10, fliplr (1:10)); %! title ('Legend is hidden') %! legend ({'I am blue', 'I am green'}, 'location', 'east'); -%! legend hide; +%! legend hide %!demo %! clf; %! x = 0:1; %! plot (x,x,';I am Blue;', x,2*x,';I am Green;', x,3*x,';I am Red;'); -%! title ('labels embedded in call to plot'); +%! title ({'Labels are embedded in call to plot', ... +%! 'Legend is hidden and then shown'}); %! legend boxon %! legend hide %! legend show @@ -1141,7 +1254,7 @@ %! plot (x, x, ';\alpha;', ... %! x, 2*x, ';\beta=2\alpha;', ... %! x, 3*x, ';\gamma=3\alpha;'); -%! title ('labels with interpreted Greek text'); +%! title ('Labels with interpreted Greek text'); %!demo %! clf; @@ -1272,6 +1385,7 @@ %! legend ('Hello', 'World', 'interpreter', 'foobar'); %!demo +%! clf; %! x = 0:10; %! y1 = rand (size (x)); %! y2 = rand (size (x)); @@ -1280,6 +1394,7 @@ %! legend ([h1, h2], {'Blue', 'Green'}, 'location', 'south'); %!demo +%! clf; %! x = 0:10; %! y1 = rand (size (x)); %! y2 = rand (size (x)); @@ -1288,6 +1403,7 @@ %! legend ({'Blue', 'Green'}, 'location', 'south'); %!demo +%! clf; %! x = 0:10; %! y1 = rand (size (x)); %! y2 = rand (size (x)); @@ -1295,3 +1411,37 @@ %! title ('plotyy legend test #3: Blue and Green labels'); %! legend ('Blue', 'Green', 'location', 'south'); +%!demo % bug 36408 +%! clf; +%! option = 'right'; +%! subplot (3,1,1); +%! plot (rand (1,4)); +%! title ('Subplots should adjust to the legend placed outside'); +%! legend ({'1'}, 'location', 'northeastoutside'); +%! legend (option); +%! subplot (3,1,2); +%! plot (rand (1,4)); +%! legend ({'1234567890'}, 'location', 'eastoutside'); +%! legend (option); +%! subplot (3,1,3); +%! plot (rand (1,4)); +%! legend ({'12345678901234567890'}, 'location', 'southeastoutside'); +%! legend (option); + +%!demo % bug 36408 +%! clf; +%! option = 'right'; +%! subplot (3,1,1) +%! plot (rand (1,4)); +%! title ('Subplots should adjust to the legend placed outside'); +%! legend ({'1'}, 'location', 'northwestoutside'); +%! legend (option); +%! subplot (3,1,2); +%! plot (rand (1,4)); +%! legend ({'1234567890'}, 'location', 'westoutside'); +%! legend (option); +%! subplot (3,1,3); +%! plot (rand (1,4)); +%! legend ({'12345678901234567890'}, 'location', 'southwestoutside'); +%! legend (option); +
--- a/scripts/plot/line.m +++ b/scripts/plot/line.m @@ -43,20 +43,21 @@ endfunction + %!demo %! clf %! x = 0:0.3:10; %! y1 = cos (x); %! y2 = sin (x); %! subplot (3,1,1); -%! args = {"color", "b", "marker", "s"}; -%! line ([x(:), x(:)], [y1(:), y2(:)], args{:}) -%! title ("Test broadcasting for line()") +%! args = {'color', 'b', 'marker', 's'}; +%! line ([x(:), x(:)], [y1(:), y2(:)], args{:}); +%! title ('Test broadcasting for line()'); %! subplot (3,1,2); -%! line (x(:), [y1(:), y2(:)], args{:}) +%! line (x(:), [y1(:), y2(:)], args{:}); %! subplot (3,1,3); -%! line ([x(:), x(:)+pi/2], y1(:), args{:}) -%! xlim ([0 10]) +%! line ([x(:), x(:)+pi/2], y1(:), args{:}); +%! xlim ([0 10]); %!test %! hf = figure ("visible", "off");
--- a/scripts/plot/loglogerr.m +++ b/scripts/plot/loglogerr.m @@ -17,10 +17,11 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} loglogerr (@var{args}) +## @deftypefn {Function File} {} loglogerr (@var{args}) +## @deftypefnx {Function File} {@var{h} =} loglogerr (@var{args}) ## Produce two-dimensional plots on double logarithm axis with ## errorbars. Many different combinations of arguments are possible. -## The most used form is +## The most common form is ## ## @example ## loglogerr (@var{x}, @var{y}, @var{ey}, @var{fmt})
--- a/scripts/plot/mesh.m +++ b/scripts/plot/mesh.m @@ -64,24 +64,24 @@ %!demo -%! clf (); +%! clf; %! x = logspace (0,1,11); %! z = x'*x; %! mesh (x, x, z, z.^2); -%! xlabel xlabel -%! ylabel ylabel -%! zlabel "linear scale" +%! xlabel xlabel; +%! ylabel ylabel; +%! zlabel 'linear scale'; %!demo -%! clf (); +%! clf; %! x = logspace (0,1,11); %! z = x'*x; %! mesh (x, x, z, z.^2); -%! set (gca, "zscale", "log") -%! xlabel xlabel -%! ylabel ylabel -%! zlabel "log scale" -%! if (strcmp (get (gcf, "__graphics_toolkit__"), "gnuplot")) -%! title ({"Gnuplot: mesh color is wrong", "This a Gnuplot bug"}) +%! set (gca, 'zscale', 'log'); +%! xlabel xlabel; +%! ylabel ylabel; +%! zlabel 'log scale'; +%! if (strcmp (get (gcf, '__graphics_toolkit__'), 'gnuplot')) +%! title ({'Gnuplot: mesh color is wrong', 'This a Gnuplot bug'}); %! endif
--- a/scripts/plot/ndgrid.m +++ b/scripts/plot/ndgrid.m @@ -34,11 +34,13 @@ function varargout = ndgrid (varargin) - if (nargin == 1) + if (nargin == 0) + print_usage (); + elseif (nargin == 1) n = max ([nargout, 1]); ## If only one input argument is given, repeat it n-times varargin(1:n) = varargin(1); - elseif (nargin > 0 && nargin >= nargout) + elseif (nargin >= nargout) n = max ([nargin, 1]); else error ("ndgrid: wrong number of input arguments"); @@ -47,12 +49,10 @@ ## Determine the size of the output arguments shape = zeros (1, n); - for i = 1:n - if (! isvector (varargin{i})) + if (! isvector (varargin{i}) && ! isempty (varargin{i})) error ("ndgrid: arguments must be vectors"); endif - shape(i) = length (varargin{i}); endfor @@ -108,3 +108,11 @@ %! assert (XX1, XX2.'); %! assert (YY1, YY2.'); +%!assert (ndgrid ([]), zeros(0,1)) +%!assert (ndgrid ([], []), zeros(0,0)) + +%% Test input validation +%!error ndgrid () +%!error <wrong number of input arguments> [a,b,c] = ndgrid (1:3,1:3) +%!error <arguments must be vectors> ndgrid (ones (2,2)) +
--- a/scripts/plot/pareto.m +++ b/scripts/plot/pareto.m @@ -38,7 +38,7 @@ ## ## The data are passed as @var{x} and the abscissa as @var{y}. If @var{y} is ## absent, then the abscissa are assumed to be @code{1 : length (@var{x})}. -## @var{y} can be a string array, a cell array of strings or a numerical +## @var{y} can be a string array, a cell array of strings, or a numerical ## vector. ## ## The optional return value @var{h} is a 2-element vector with a graphics @@ -55,6 +55,7 @@ ## pareto (Sold, Cheese); ## @end group ## @end example +## @seealso{bar, barh, pie, plot} ## @end deftypefn function h = pareto (varargin)
--- a/scripts/plot/pcolor.m +++ b/scripts/plot/pcolor.m @@ -19,18 +19,16 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} pcolor (@var{x}, @var{y}, @var{c}) ## @deftypefnx {Function File} {} pcolor (@var{c}) -## Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and -## a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of -## the mesh's vertices. If @var{x} and @var{y} are vectors, then a typical -## vertex -## is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} -## correspond to different @var{x} values and rows of @var{c} correspond -## to different @var{y} values. +## Produce a density plot for matrices @var{x} and @var{y} from +## @code{meshgrid}, and a matrix @var{c} corresponding to the @var{x} and +## @var{y} coordinates of the mesh's vertices. If @var{x} and @var{y} are +## vectors, then a typical vertex is (@var{x}(j), @var{y}(i), @var{c}(i,j)). +## Thus, columns of @var{c} correspond to different @var{x} values and rows +## of @var{c} correspond to different @var{y} values. ## ## The @code{colormap} is scaled to the extents of @var{c}. -## Limits may be placed on the color axis by the -## command @code{caxis}, or by setting the @code{clim} property of the -## parent axis. +## Limits may be placed on the color axis by the command @code{caxis}, or by +## setting the @code{clim} property of the parent axis. ## ## The face color of each cell of the mesh is determined by interpolating ## the values of @var{c} for the cell's vertices. Contrast this with @@ -42,7 +40,7 @@ ## "faceted", which renders a single color for each cell's face with the edge ## visible. ## -## @var{h} is the handle to the surface object. +## The optional return value @var{h} is a handle to the surface object. ## ## @seealso{caxis, contour, meshgrid, imagesc, shading} ## @end deftypefn
--- a/scripts/plot/pie.m +++ b/scripts/plot/pie.m @@ -22,17 +22,17 @@ ## @deftypefnx {Function File} {} pie (@dots{}, @var{labels}) ## @deftypefnx {Function File} {} pie (@var{h}, @dots{}); ## @deftypefnx {Function File} {@var{h} =} pie (@dots{}); -## Produce a 2-D pie chart. +## Plot a 2-D pie chart. ## -## Called with a single vector argument, produces a pie chart of the -## elements in @var{x}, with the size of the slice determined by percentage -## size of the values of @var{x}. +## When called with a single vector argument, produce a pie chart of the +## elements in @var{x}. The size of the ith slice is the percentage that the +## element @var{x}i represents of the total sum of @var{x}. ## -## The variable @var{explode} is a vector of the same length as @var{x} that -## if non zero "explodes" the slice from the pie chart. +## The variable @var{explode} is a vector of the same length as @var{x} that, +## if non-zero, "explodes" the slice from the pie chart. ## -## If given @var{labels} is a cell array of strings of the same length as -## @var{x}, giving the labels of each of the slices of the pie chart. +## The optional input @var{labels} is a cell array of strings of the same +## length as @var{x} specifying the label for each slice. ## ## The optional return value @var{h} is a list of handles to the patch ## and text objects generating the plot.
--- a/scripts/plot/pie3.m +++ b/scripts/plot/pie3.m @@ -23,17 +23,17 @@ ## @deftypefnx {Function File} {} pie3 (@dots{}, @var{labels}) ## @deftypefnx {Function File} {} pie3 (@var{h}, @dots{}); ## @deftypefnx {Function File} {@var{h} =} pie3 (@dots{}); -## Draw a 3-D pie chart. +## Plot a 3-D pie chart. ## ## Called with a single vector argument, produces a 3-D pie chart of the -## elements in @var{x}, with the size of the slice determined by percentage -## size of the values of @var{x}. +## elements in @var{x}. The size of the ith slice is the percentage that the +## element @var{x}i represents of the total sum of @var{x}. ## -## The variable @var{explode} is a vector of the same length as @var{x} that -## if non zero "explodes" the slice from the pie chart. +## The variable @var{explode} is a vector of the same length as @var{x} that, +## if non-zero, "explodes" the slice from the pie chart. ## -## If given @var{labels} is a cell array of strings of the same length as -## @var{x}, giving the labels of each of the slices of the pie chart. +## The optional input @var{labels} is a cell array of strings of the same +## length as @var{x} specifying the label for each slice. ## ## The optional return value @var{h} is a list of graphics handles to the patch, ## surface, and text objects generating the plot.
--- a/scripts/plot/plotmatrix.m +++ b/scripts/plot/plotmatrix.m @@ -27,10 +27,10 @@ ## @code{plotmatrix} plots a set of axes corresponding to ## ## @example -## plot (@var{x} (:, i), @var{y} (:, j) +## plot (@var{x}(:, i), @var{y}(:, j)) ## @end example ## -## Given a single argument @var{x}, then this is equivalent to +## Given a single argument @var{x} this is equivalent to ## ## @example ## plotmatrix (@var{x}, @var{x}) @@ -38,7 +38,7 @@ ## ## @noindent ## except that the diagonal of the set of axes will be replaced with the -## histogram @code{hist (@var{x} (:, i))}. +## histogram @code{hist (@var{x}(:, i))}. ## ## The marker to use can be changed with the @var{style} argument, that is a ## string defining a marker in the same manner as the @code{plot} @@ -57,6 +57,7 @@ ## plotmatrix (randn (100, 3), "g+") ## @end example ## +## @seealso{plot} ## @end deftypefn function [h, ax, bigax, p, pax] = plotmatrix (varargin)
--- a/scripts/plot/plotyy.m +++ b/scripts/plot/plotyy.m @@ -51,6 +51,7 @@ ## ylabel (ax(2), "Axis 2"); ## @end group ## @end example +## @seealso{plot} ## @end deftypefn function [Ax, H1, H2] = plotyy (varargin) @@ -276,11 +277,11 @@ %! y = 5 * cos (t); %! [hax, h1, h2] = plotyy (t, x, t, y); %! [~, h3, h4] = plotyy (t+1, x, t+1, y); -%! set ([h3, h4], "linestyle", "--") -%! xlabel (hax(1), 'xlabel') -%! title (hax(2), 'title') -%! ylabel (hax(1), 'Left axis is Blue') -%! ylabel (hax(2), 'Right axis is Green') +%! set ([h3, h4], 'linestyle', '--'); +%! xlabel (hax(1), 'xlabel'); +%! title (hax(2), 'title'); +%! ylabel (hax(1), 'Left axis is Blue'); +%! ylabel (hax(2), 'Right axis is Green'); function deleteplotyy (h, d, ax2, t2) if (ishandle (ax2) && strcmp (get (ax2, "type"), "axes")
--- a/scripts/plot/polar.m +++ b/scripts/plot/polar.m @@ -28,7 +28,7 @@ ## ## The optional return value @var{h} is a graphics handle to the created plot. ## -## @seealso{plot} +## @seealso{plot, rose, compass} ## @end deftypefn ## Author: jwe
--- a/scripts/plot/print.m +++ b/scripts/plot/print.m @@ -175,7 +175,7 @@ ## ## @table @code ## @item ljet2p -## HP LaserJet IIP +## HP LaserJet @nospell{IIP} ## ## @item ljet3 ## HP LaserJet III @@ -199,7 +199,7 @@ ## Produces pdf output from eps ## @end table ## -## For a complete list, type `system ("gs -h")' to see what formats +## For a complete list, type @samp{system ("gs -h")} to see what formats ## and devices are available. ## ## When Ghostscript output is sent to a printer the size is determined @@ -263,7 +263,7 @@ ## @end group ## @end example ## -## Example: Print to an HP Deskjet 550C. +## Example: Print to an HP DeskJet 550C. ## ## @example ## @group
--- a/scripts/plot/printd.m +++ b/scripts/plot/printd.m @@ -84,18 +84,19 @@ pr_out = sprintf ("%s file %s written\n", opt, filename); endfunction + %!demo %! r2 = char ( -%! "stem step: 10, data: unsorted.", -%! "Hinges: lo: 12, hi: 42" , -%! " 1 | 22118" , -%! " 2 | 28" , -%! " 3 | 98" , -%! " 4 | 244" , -%! " 5 | 2" ); -%! printd (r2, "test_p.txt"); -%! system ("cat test_p.txt"); -%! delete ("test_p.txt"); +%! 'stem step: 10, data: unsorted.', +%! 'Hinges: lo: 12, hi: 42' , +%! ' 1 | 22118' , +%! ' 2 | 28' , +%! ' 3 | 98' , +%! ' 4 | 244' , +%! ' 5 | 2' ); +%! printd (r2, 'test_p.txt'); +%! system ('cat test_p.txt'); +%! delete ('test_p.txt'); %!test %! r2 = char ( @@ -110,6 +111,5 @@ %! r4 = fileread ("test_p.txt"); %! delete ("test_p.txt"); %! r2 = disp (r2); -%! assert (r4, r2) +%! assert (r4, r2); -
--- a/scripts/plot/private/__file_filter__.m +++ b/scripts/plot/private/__file_filter__.m @@ -81,7 +81,7 @@ endswitch if (isempty (name)) - extlist = strsplit (filterext, ";", false); + extlist = ostrsplit (filterext, ";"); extlist = strrep (extlist, "*.", ""); extlist = toupper (extlist); extlist(end+1, :) = repmat ({","}, 1, length (extlist));
--- a/scripts/plot/private/__fltk_file_filter__.m +++ b/scripts/plot/private/__fltk_file_filter__.m @@ -34,7 +34,7 @@ for idx = 1 : r curr_ext = file_filter{idx, 1}; - curr_ext = strsplit (curr_ext, ";", false); + curr_ext = ostrsplit (curr_ext, ";"); if (length (curr_ext) > 1) curr_ext = regexprep (curr_ext, '\*\.', ',');
--- a/scripts/plot/private/__fltk_ginput__.m +++ b/scripts/plot/private/__fltk_ginput__.m @@ -23,9 +23,6 @@ ## This is ginput.m implementation for fltk. -## FIXME -- Key presses cannot toggle menu items nor hotkey functionality -## (grid, autoscale) during ginput! - function [x, y, button] = __fltk_ginput__ (f, n = -1) if (isempty (get (f, "currentaxes"))) @@ -33,7 +30,7 @@ endif x = y = button = []; - ginput_aggregator (0, 0, 0, 0); + ginput_accumulator (0, 0, 0, 0); # initialize accumulator unwind_protect @@ -43,17 +40,14 @@ orig_ginput_keypressfcn = get (f, "keypressfcn"); set (f, "keypressfcn", @ginput_keypressfcn); - while (true) + do __fltk_redraw__ (); ## Release CPU. sleep (0.01); - [x, y, n0, button] = ginput_aggregator (-1, 0, 0, 0); - if (n0 == n || n0 < 0) - break; - endif - endwhile + [x, y, n0, button] = ginput_accumulator (-1, 0, 0, 0); + until (n0 == n || n0 < 0) unwind_protect_cleanup set (f, "windowbuttondownfcn", orig_windowbuttondownfcn); @@ -62,17 +56,15 @@ endfunction -function [x, y, n, button] = ginput_aggregator (mode, xn, yn, btn) +function [x, y, n, button] = ginput_accumulator (mode, xn, yn, btn) persistent x y n button; if (mode == 0) ## Initialize. - x = []; - y = []; - button = []; + x = y = button = []; n = 0; elseif (mode == 1) - ## Accept mouse button or key press. + ## Append mouse button or key press. x = [x; xn]; y = [y; yn]; button = [button; btn]; @@ -81,25 +73,23 @@ ## The end due to Enter. n = -1; endif + endfunction function ginput_windowbuttondownfcn (src, data) point = get (get (src,"currentaxes"), "currentpoint"); - ## FIXME -- How to get the actual mouse button pressed (1,2,3) into - ## "button"? - button = 1; - ginput_aggregator (1, point(1,1), point(2,1), button); + button = data; + ginput_accumulator (1, point(1,1), point(2,1), button); endfunction function ginput_keypressfcn (src, evt) point = get (get (src, "currentaxes"), "currentpoint"); - ## FIXME -- use evt.Key or evt.Character? key = evt.Key; if (key == 10) - ## Enter key. - ginput_aggregator (2, point(1,1), point(2,1), key); + ## Enter key stops ginput. + ginput_accumulator (2, NaN, NaN, NaN); else - ginput_aggregator (1, point(1,1), point(2,1), key); + ginput_accumulator (1, point(1,1), point(2,1), key); endif endfunction
--- a/scripts/plot/private/__gnuplot_ginput__.m +++ b/scripts/plot/private/__gnuplot_ginput__.m @@ -125,23 +125,18 @@ break; endif - if (nargin > 1) - ## Input argument n was given => stop when k == n. - if (k == n) - break; - endif - else - ## Input argument n not given => stop when hitting a return key. - ## if (button(k) == 0x0D || button(k) == 0x0A) - ## ## hit Return or Enter - if (button(k) == 0x0D) - ## hit Return - x(k:end) = []; - y(k:end) = []; - button(k:end) = []; - break; - endif + if (button(k) == 0x0D || button(k) == 0x0A) + ## Stop when hitting a RETURN or ENTER key. + x(k:end) = []; + y(k:end) = []; + button(k:end) = []; + break; endif + if (nargin > 1 && k == n) + ## Input argument n was given, stop when k == n. + break; + endif + endwhile unwind_protect_cleanup
--- a/scripts/plot/private/__gnuplot_print__.m +++ b/scripts/plot/private/__gnuplot_print__.m @@ -293,6 +293,17 @@ function [h, fontsize] = get_figure_text_objs (opts) h = findall (opts.figure, "-property", "fontsize"); + hp = get (h, "parent"); + if (iscell (hp)) + hp = cell2mat (hp); + endif + ## Do not change the text objects fontsizes for the children of a + ## legend axes. These will be handled by the fontsize listener. + is_legend_key_string = strcmp (get (hp, "tag"), "legend") ... + & isprop (hp, "string") ... + & isprop (hp, "location") ... + & strcmp (get (hp, "type"), "axes"); + h(is_legend_key_string) = []; fontsize = get (h, "fontsize"); switch (numel (fontsize)) case 0
--- a/scripts/plot/private/__go_draw_axes__.m +++ b/scripts/plot/private/__go_draw_axes__.m @@ -2229,7 +2229,7 @@ endif if (ischar (ticklabel)) if (rows (ticklabel) == 1 && any (ticklabel == "|")) - ticklabel = strsplit (ticklabel, "|", false); + ticklabel = ostrsplit (ticklabel, "|"); else ticklabel = cellstr (ticklabel); endif
--- a/scripts/plot/private/__next_line_style__.m +++ b/scripts/plot/private/__next_line_style__.m @@ -41,7 +41,7 @@ elseif (reset || isempty (style_rotation)) style_rotation = get (gca (), "linestyleorder"); if (ischar (style_rotation)) - style_rotation = strsplit (style_rotation, "|", false); + style_rotation = ostrsplit (style_rotation, "|"); endif num_styles = length (style_rotation); style_index = 1;
--- a/scripts/plot/private/__plt__.m +++ b/scripts/plot/private/__plt__.m @@ -156,7 +156,7 @@ endfor endfunction -function retval = __plt1__ (h, x1, options, properties) +function retval = __plt1__ (h, x1, options, properties = {}) if (nargin < 2 || nargin > 4) print_usage (); @@ -166,10 +166,6 @@ options = __default_plot_options__ (); endif - if (nargin < 4) - properties = {}; - endif - if (! isstruct (options)) error ("__plt1__: options must be a struct array"); endif @@ -197,7 +193,7 @@ endfunction -function retval = __plt2__ (h, x1, x2, options, properties) +function retval = __plt2__ (h, x1, x2, options, properties = {}) if (nargin < 3 || nargin > 5) print_usage (); @@ -207,12 +203,8 @@ options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; - endif - if (! isstruct (options)) - error ("__plt1__: options must be a struct array"); + error ("__plt2__: options must be a struct array"); endif if (islogical (x1)) @@ -262,350 +254,243 @@ endfunction -function retval = __plt2mm__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif - - if (nargin < 4 || isempty (options)) - options = __default_plot_options__ (); - endif - - if (nargin < 5) - properties = {}; - endif - - [x_nr, x_nc] = size (x); - [y_nr, y_nc] = size (y); - - k = 1; - if (x_nr == y_nr && x_nc == y_nc) - if (x_nc > 0) - if (numel (options) == 1) - options = repmat (options(:), x_nc, 1); - endif - retval = zeros (x_nc, 1); - for i = 1:x_nc - linestyle = options(i).linestyle; - marker = options(i).marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options(i).color; - if (isempty (color)) - color = __next_line_color__ (); - endif - - retval(i) = line (x(:,i), y(:,i), "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - endfor - else - error ("__plt2mm__: arguments must be a matrices"); - endif - else - error ("__plt2mm__: matrix dimensions must match"); - endif - -endfunction - -function retval = __plt2mv__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2mm__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; - endif - [x_nr, x_nc] = size (x); [y_nr, y_nc] = size (y); - if (y_nr == 1) - y = y'; - tmp = y_nr; - y_nr = y_nc; - y_nc = tmp; - endif - - if (x_nr == y_nr) - 1; - elseif (x_nc == y_nr) - x = x'; - tmp = x_nr; - x_nr = x_nc; - x_nc = tmp; - else - error ("__plt2mv__: matrix dimensions must match"); + if (x_nr != y_nr && x_nc != y_nc) + error ("__plt2mm__: matrix dimensions must match"); endif - if (x_nc > 0) - if (numel (options) == 1) - options = repmat (options(:), x_nc, 1); + if (numel (options) == 1) + options = repmat (options(:), x_nc, 1); + endif + retval = zeros (x_nc, 1); + for i = 1:x_nc + linestyle = options(i).linestyle; + marker = options(i).marker; + if (isempty (marker) && isempty (linestyle)) + [linestyle, marker] = __next_line_style__ (); endif - retval = zeros (x_nc, 1); - for i = 1:x_nc - linestyle = options(i).linestyle; - marker = options(i).marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options(i).color; - if (isempty (color)) - color = __next_line_color__ (); - endif + color = options(i).color; + if (isempty (color)) + color = __next_line_color__ (); + endif - retval(i) = line (x(:,i), y, "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - endfor - else - error ("__plt2mv__: arguments must be a matrices"); - endif + retval(i) = line (x(:,i), y(:,i), "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfor endfunction -function retval = __plt2ss__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2mv__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; + y = y(:); + [y_nr, y_nc] = size (y); + [x_nr, x_nc] = size (x); + + if (x_nr == y_nr) + ## Correctly oriented. Do nothing. + elseif (x_nc == y_nr) + x = x.'; + [x_nr, x_nc] = deal (x_nc, x_nr); + else + error ("__plt2mv__: matrix dimensions must match"); + endif + + if (numel (options) == 1) + options = repmat (options(:), x_nc, 1); + endif + retval = zeros (x_nc, 1); + for i = 1:x_nc + linestyle = options(i).linestyle; + marker = options(i).marker; + if (isempty (marker) && isempty (linestyle)) + [linestyle, marker] = __next_line_style__ (); + endif + color = options(i).color; + if (isempty (color)) + color = __next_line_color__ (); + endif + + retval(i) = line (x(:,i), y, "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfor + +endfunction + +function retval = __plt2ss__ (h, x, y, options, properties = {}) + + if (nargin < 4 || isempty (options)) + options = __default_plot_options__ (); endif if (numel (options) > 1) options = options(1); endif - [x_nr, x_nc] = size (x); - [y_nr, y_nc] = size (y); + linestyle = options.linestyle; + marker = options.marker; + if (isempty (marker) && isempty (linestyle)) + ## If unspecified, marker for a single point is always "." + linestyle = "-"; + marker = "."; + endif + color = options.color; + if (isempty (color)) + color = __next_line_color__ (); + endif - if (x_nr == 1 && x_nr == y_nr && x_nc == 1 && x_nc == y_nc) - linestyle = options.linestyle; - marker = options.marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options.color; - if (isempty (color)) - color = __next_line_color__ (); - endif - - retval = line (x, y, "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - else - error ("__plt2ss__: arguments must be scalars"); - endif + retval = line (x, y, "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); endfunction -function retval = __plt2sv__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2sv__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; + len = numel (y); + if (numel (options) == 1) + options = repmat (options(:), len, 1); endif - - if (isscalar (x) && isvector (y)) - len = numel (y); - if (numel (options) == 1) - options = repmat (options(:), len, 1); + retval = zeros (len, 1); + for i = 1:len + linestyle = options(i).linestyle; + marker = options(i).marker; + if (isempty (marker) && isempty (linestyle)) + ## If unspecified, marker for a point is always "." + linestyle = "-"; + marker = "."; endif - retval = zeros (len, 1); - for i = 1:len - linestyle = options(i).linestyle; - marker = options(i).marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options(i).color; - if (isempty (color)) - color = __next_line_color__ (); - endif + color = options(i).color; + if (isempty (color)) + color = __next_line_color__ (); + endif - retval(i) = line (x, y(i), "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - endfor - else - error ("__plt2sv__: first arg must be scalar, second arg must be vector"); - endif + retval(i) = line (x, y(i), "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfor endfunction -function retval = __plt2vm__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2vm__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; - endif - + x = x(:); [x_nr, x_nc] = size (x); [y_nr, y_nc] = size (y); - if (x_nr == 1) - x = x'; - tmp = x_nr; - x_nr = x_nc; - x_nc = tmp; - endif - if (x_nr == y_nr) - 1; + ## Correctly oriented. Do nothing. elseif (x_nr == y_nc) - y = y'; - tmp = y_nr; - y_nr = y_nc; - y_nc = tmp; + y = y.'; + [y_nr, y_nc] = deal (y_nc, y_nr); else error ("__plt2vm__: matrix dimensions must match"); endif - if (y_nc > 0) - if (numel (options) == 1) - options = repmat (options(:), y_nc, 1); + if (numel (options) == 1) + options = repmat (options(:), y_nc, 1); + endif + retval = zeros (y_nc, 1); + for i = 1:y_nc + linestyle = options(i).linestyle; + marker = options(i).marker; + if (isempty (marker) && isempty (linestyle)) + [linestyle, marker] = __next_line_style__ (); endif - retval = zeros (y_nc, 1); - for i = 1:y_nc - linestyle = options(i).linestyle; - marker = options(i).marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options(i).color; - if (isempty (color)) - color = __next_line_color__ (); - endif + color = options(i).color; + if (isempty (color)) + color = __next_line_color__ (); + endif - retval(i) = line (x, y(:,i), "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - endfor - else - error ("__plt2vm__: arguments must be a matrices"); - endif + retval(i) = line (x, y(:,i), "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfor endfunction -function retval = __plt2vs__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2vs__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; + len = numel (x); + if (numel (options) == 1) + options = repmat (options(:), len, 1); endif - - if (isvector (x) && isscalar (y)) - len = numel (x); - if (numel (options) == 1) - options = repmat (options(:), len, 1); + retval = zeros (len, 1); + for i = 1:len + linestyle = options(i).linestyle; + marker = options(i).marker; + if (isempty (marker) && isempty (linestyle)) + ## If unspecified, marker for a point is always "." + linestyle = "-"; + marker = "."; endif - retval = zeros (len, 1); - for i = 1:len - linestyle = options(i).linestyle; - marker = options(i).marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options(i).color; - if (isempty (color)) - color = __next_line_color__ (); - endif + color = options(i).color; + if (isempty (color)) + color = __next_line_color__ (); + endif - retval(i) = line (x(i), y, "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - endfor - else - error ("__plt2vs__: first arg must be vector, second arg must be scalar"); - endif + retval(i) = line (x(i), y, "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfor endfunction -function retval = __plt2vv__ (h, x, y, options, properties) - - if (nargin < 3 || nargin > 5) - print_usage (); - endif +function retval = __plt2vv__ (h, x, y, options, properties = {}) if (nargin < 4 || isempty (options)) options = __default_plot_options__ (); endif - if (nargin < 5) - properties = {}; - endif - if (numel (options) > 1) options = options(1); endif - [x_nr, x_nc] = size (x); - [y_nr, y_nc] = size (y); - - if (x_nr == 1) - x = x'; - tmp = x_nr; - x_nr = x_nc; - x_nc = tmp; - endif + x = x(:); + y = y(:); - if (y_nr == 1) - y = y'; - tmp = y_nr; - y_nr = y_nc; - y_nc = tmp; - endif - - if (x_nr == y_nr) - linestyle = options.linestyle; - marker = options.marker; - if (isempty (marker) && isempty (linestyle)) - [linestyle, marker] = __next_line_style__ (); - endif - color = options.color; - if (isempty (color)) - color = __next_line_color__ (); - endif - - retval = line (x, y, "color", color, - "linestyle", linestyle, - "marker", marker, properties{:}); - else + if (length (x) != length (y)) error ("__plt2vv__: vector lengths must match"); endif + linestyle = options.linestyle; + marker = options.marker; + if (isempty (marker) && isempty (linestyle)) + [linestyle, marker] = __next_line_style__ (); + endif + color = options.color; + if (isempty (color)) + color = __next_line_color__ (); + endif + + retval = line (x, y, "color", color, + "linestyle", linestyle, + "marker", marker, properties{:}); + endfunction +
--- a/scripts/plot/private/__stem__.m +++ b/scripts/plot/private/__stem__.m @@ -531,27 +531,31 @@ z = get (h, "zdata"); if (!isempty (z) && size_equal (x, y, z)) - error ("stem3: inconsistent size of x, y and z"); - elseif (numel (x) != numel (y)) - error ("stem: inconsistent size of x and y"); + sz = min ([size(x); size(y); size(z)]); + x = x(1:sz(1),1:sz(2)); + y = y(1:sz(1),1:sz(2)); + z = z(1:sz(1),1:sz(2)); + elseif (numel (x) != numel (y)); + sz = min ([size(x); size(y)]); + x = x(1:sz(1),1:sz(2)); + y = y(1:sz(1),1:sz(2)); + endif + bl = get (h, "basevalue"); + nx = numel (x); + x = x(:)'; + xt = [x; x; NaN(1, nx)](:); + if (! isempty (z)) + y = y(:)'; + yt = [y; y; NaN(1, nx)](:); + z = z(:)'; + zt = [bl * ones(1, nx); z; NaN(1, nx)](:); else - bl = get (h, "basevalue"); - nx = numel (x); - x = x(:)'; - xt = [x; x; NaN(1, nx)](:); - if (! isempty (z)) - y = y(:)'; - yt = [y; y; NaN(1, nx)](:); - z = z(:)'; - zt = [bl * ones(1, nx); z; NaN(1, nx)](:); - else - y = y(:)'; - yt = [bl * ones(1, nx); y; NaN(1, nx)](:); - zt = []; - endif + y = y(:)'; + yt = [bl * ones(1, nx); y; NaN(1, nx)](:); + zt = []; + endif - kids = get (h, "children"); - set (kids(2), "xdata", xt, "ydata", yt, "zdata", zt); - set (kids(1), "xdata", x, "ydata", y, "zdata", z); - endif + kids = get (h, "children"); + set (kids(2), "xdata", xt, "ydata", yt, "zdata", zt); + set (kids(1), "xdata", x, "ydata", y, "zdata", z); endfunction
--- a/scripts/plot/quiver.m +++ b/scripts/plot/quiver.m @@ -41,7 +41,7 @@ ## in a similar manner to the line styles used with the @code{plot} command. ## If a marker is specified then markers at the grid points of the vectors are ## printed rather than arrows. If the argument "filled" is given then the -## markers as filled. +## markers are drawn filled. ## ## The optional return value @var{h} is a graphics handle to a quiver object. ## A quiver object regroups the components of the quiver plot (body, arrow, @@ -55,7 +55,7 @@ ## @end group ## @end example ## -## @seealso{plot} +## @seealso{quiver3, feather, plot} ## @end deftypefn function retval = quiver (varargin)
--- a/scripts/plot/quiver3.m +++ b/scripts/plot/quiver3.m @@ -58,7 +58,7 @@ ## @end group ## @end example ## -## @seealso{plot} +## @seealso{quiver, plot} ## @end deftypefn function retval = quiver3 (varargin)
--- a/scripts/plot/ribbon.m +++ b/scripts/plot/ribbon.m @@ -20,7 +20,7 @@ ## @deftypefn {Function File} {} ribbon (@var{x}, @var{y}, @var{width}) ## @deftypefnx {Function File} {} ribbon (@var{y}) ## @deftypefnx {Function File} {@var{h} =} ribbon (@dots{}) -## Plot a ribbon plot for the columns of @var{y} vs. @var{x}. The +## Plot a ribbon plot for the columns of @var{y} vs. @var{x}. The ## optional parameter @var{width} specifies the width of a single ribbon ## (default is 0.75). If @var{x} is omitted, a vector containing the ## row numbers is assumed (1:rows (Y)).
--- a/scripts/plot/rose.m +++ b/scripts/plot/rose.m @@ -17,13 +17,14 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} rose (@var{th}, @var{r}) +## @deftypefn {Function File} {} rose (@var{th}) +## @deftypefnx {Function File} {} rose (@var{th}, @var{r}) ## @deftypefnx {Function File} {} rose (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} rose (@dots{}) ## @deftypefnx {Function File} {[@var{r}, @var{th}] =} rose (@dots{}) ## -## Plot an angular histogram. With one vector argument @var{th}, plots the -## histogram with 20 angular bins. If @var{th} is a matrix, then each column +## Plot an angular histogram. With one vector argument, @var{th}, plot the +## histogram with 20 angular bins. If @var{th} is a matrix then each column ## of @var{th} produces a separate histogram. ## ## If @var{r} is given and is a scalar, then the histogram is produced with @@ -33,14 +34,13 @@ ## The optional return value @var{h} is a vector of graphics handles to the ## line objects representing each histogram. ## -## If two output arguments are requested then, rather than plotting the -## histogram, the polar vectors necessary to plot the histogram are -## returned. +## If two output arguments are requested then no plot is made and +## the polar vectors necessary to plot the histogram are returned instead. ## ## @example ## @group -## [r, t] = rose ([2*randn(1e5,1), pi + 2*randn(1e5,1)]); -## polar (r, t); +## [r, th] = rose ([2*randn(1e5,1), pi + 2*randn(1e5,1)]); +## polar (r, th); ## @end group ## @end example ##
--- a/scripts/plot/scatter.m +++ b/scripts/plot/scatter.m @@ -26,16 +26,16 @@ ## @deftypefnx {Function File} {} scatter (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} scatter (@dots{}) ## -## Plot a scatter plot of the data. A marker is plotted at each point +## Draw a scatter plot of the data. A marker is plotted at each point ## defined by the points in the vectors @var{x} and @var{y}. The size of -## the markers used is determined by the @var{s}, which can be a scalar, -## a vector of the same length of @var{x} and @var{y}. If @var{s} is not +## the markers used is determined by the @var{s}, which can be a scalar or +## a vector of the same length as @var{x} and @var{y}. If @var{s} is not ## given or is an empty matrix, then the default value of 8 points is used. ## ## The color of the markers is determined by @var{c}, which can be a string ## defining a fixed color; a 3-element vector giving the red, green,and blue ## components of the color; a vector of the same length as @var{x} that gives -## a scaled index into the current colormap; or a @var{n}-by-3 matrix defining +## a scaled index into the current colormap; or an @var{n}-by-3 matrix defining ## the colors of each of the markers individually. ## ## The marker to use can be changed with the @var{style} argument, that is a @@ -43,7 +43,10 @@ ## If the argument @code{"filled"} is given then the markers as filled. All ## additional arguments are passed to the underlying patch command. ## -## The optional return value @var{h} provides a handle to the patch object +## The optional return value @var{h} is a graphics handle to the created patch +## object. +## +## Example: ## ## @example ## @group
--- a/scripts/plot/semilogxerr.m +++ b/scripts/plot/semilogxerr.m @@ -17,10 +17,11 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} semilogxerr (@var{args}) +## @deftypefn {Function File} {} semilogxerr (@var{args}) +## @deftypefnx {Function File} {@var{h} =} semilogxerr (@var{args}) ## Produce two-dimensional plots using a logarithmic scale for the @var{x} ## axis and errorbars at each data point. Many different combinations of -## arguments are possible. The most used form is +## arguments are possible. The most common form is ## ## @example ## semilogxerr (@var{x}, @var{y}, @var{ey}, @var{fmt})
--- a/scripts/plot/semilogy.m +++ b/scripts/plot/semilogy.m @@ -76,12 +76,12 @@ %! y = logspace (-5, 1, 10); %! %! subplot (2,1,1); -%! semilogy (x, y); -%! ylabel ('semilogy (x, y)'); +%! semilogy (x, y); +%! ylabel ('semilogy (x, y)'); %! %! subplot (2,1,2); -%! semilogy (x, -y); -%! ylabel ('semilogy (x, -y)'); +%! semilogy (x, -y); +%! ylabel ('semilogy (x, -y)'); %!demo %! clf; @@ -89,14 +89,14 @@ %! y = logspace (-5, 1, 10); %! %! subplot (2,1,1); -%! semilogy (x, y); -%! set (gca, 'ydir', 'reverse', 'activepositionproperty', 'outerposition'); -%! ylabel ({'semilogy (x, y)', 'ydir = reversed'}); +%! semilogy (x, y); +%! set (gca, 'ydir', 'reverse', 'activepositionproperty', 'outerposition'); +%! ylabel ({'semilogy (x, y)', 'ydir = reversed'}); %! %! subplot (2,1,2); -%! semilogy (x, -y); -%! set (gca, 'ydir', 'reverse', 'activepositionproperty', 'outerposition'); -%! ylabel ({'semilogy (x, -y)', 'ydir = reversed'}); +%! semilogy (x, -y); +%! set (gca, 'ydir', 'reverse', 'activepositionproperty', 'outerposition'); +%! ylabel ({'semilogy (x, -y)', 'ydir = reversed'}); %!test %! hf = figure ("visible", "off");
--- a/scripts/plot/semilogyerr.m +++ b/scripts/plot/semilogyerr.m @@ -17,10 +17,11 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} semilogyerr (@var{args}) +## @deftypefn {Function File} {} semilogyerr (@var{args}) +## @deftypefnx {Function File} {@var{h} =} semilogyerr (@var{args}) ## Produce two-dimensional plots using a logarithmic scale for the @var{y} ## axis and errorbars at each data point. Many different combinations of -## arguments are possible. The most used form is +## arguments are possible. The most common form is ## ## @example ## semilogyerr (@var{x}, @var{y}, @var{ey}, @var{fmt})
--- a/scripts/plot/shrinkfaces.m +++ b/scripts/plot/shrinkfaces.m @@ -149,59 +149,60 @@ endfunction + %!demo +%! clf; %! faces = [1 2 3; 1 3 4]; %! vertices = [0 0; 1 0; 1 1; 0 1]; -%! clf () -%! patch ("Faces", faces, "Vertices", vertices, "FaceColor", "none") +%! patch ('Faces', faces, 'Vertices', vertices, 'FaceColor', 'none'); %! fv = shrinkfaces (faces, vertices, 0.25); -%! patch (fv) -%! axis equal +%! patch (fv); +%! axis equal; %!demo +%! clf; %! faces = [1 2 3 4; 5 6 7 8]; %! vertices = [0 0; 1 0; 2 1; 1 1; 2 0; 3 0; 4 1; 3.5 1]; -%! clf () -%! patch ("Faces", faces, "Vertices", vertices, "FaceColor", "none") +%! patch ('Faces', faces, 'Vertices', vertices, 'FaceColor', 'none'); %! fv = shrinkfaces (faces, vertices, 0.25); -%! patch (fv) -%! axis equal -%! grid on +%! patch (fv); +%! axis equal; +%! grid on; %!demo +%! clf; %! faces = [1 2 3 4]; %! vertices = [-1 2; 0 0; 1 2; 0 1]; -%! clf () -%! patch ("Faces", faces, "Vertices", vertices, "FaceColor", "none") +%! patch ('Faces', faces, 'Vertices', vertices, 'FaceColor', 'none'); %! fv = shrinkfaces (faces, vertices, 0.25); -%! patch (fv) -%! axis equal -%! grid on -%! title "faces which are not convex are clearly not allowed" +%! patch (fv); +%! axis equal; +%! grid on; +%! title 'faces which are not convex are clearly not allowed' %!demo +%! clf; %! [phi r] = meshgrid (linspace (0, 1.5*pi, 16), linspace (1, 2, 4)); %! tri = delaunay (phi(:), r(:)); %! v = [r(:).*sin(phi(:)) r(:).*cos(phi(:))]; -%! clf () -%! p = patch ("Faces", tri, "Vertices", v, "FaceColor", "none"); +%! p = patch ('Faces', tri, 'Vertices', v, 'FaceColor', 'none'); %! fv = shrinkfaces (p); -%! patch (fv) -%! axis equal -%! grid on +%! patch (fv); +%! axis equal; +%! grid on; %!demo -%! N = 10; # N intervals per axis +%! clf; +%! N = 10; % N intervals per axis %! [x, y, z] = meshgrid (linspace (-4,4,N+1)); %! val = x.^3 + y.^3 + z.^3; %! fv = isosurface (x, y, z, val, 3, z); %! -%! clf () -%! p = patch ("Faces", fv.faces, "Vertices", fv.vertices, "FaceVertexCData", ... -%! fv.facevertexcdata, "FaceColor", "interp", "EdgeColor", "black"); -%! axis equal -%! view (115, 30) -%! drawnow +%! p = patch ('Faces', fv.faces, 'Vertices', fv.vertices, 'FaceVertexCData', ... +%! fv.facevertexcdata, 'FaceColor', 'interp', 'EdgeColor', 'black'); +%! axis equal; +%! view (115, 30); +%! drawnow; %! shrinkfaces (p, 0.6); %!shared faces, vertices, nfv, nfv2 @@ -209,8 +210,9 @@ %! vertices = [0 0 0; 1 0 0; 1 1 0]; %! nfv = shrinkfaces (faces, vertices, 0.7); %! nfv2 = shrinkfaces (nfv, 1/0.7); -%!assert (isfield (nfv, "faces")); -%!assert (isfield (nfv, "vertices")); -%!assert (size (nfv.faces), [1 3]); -%!assert (size (nfv.vertices), [3 3]); -%!assert (norm (nfv2.vertices - vertices), 0, 2*eps); +%!assert (isfield (nfv, "faces")) +%!assert (isfield (nfv, "vertices")) +%!assert (size (nfv.faces), [1 3]) +%!assert (size (nfv.vertices), [3 3]) +%!assert (norm (nfv2.vertices - vertices), 0, 2*eps) +
--- a/scripts/plot/sombrero.m +++ b/scripts/plot/sombrero.m @@ -17,7 +17,8 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} sombrero (@var{n}) +## @deftypefn {Function File} {} sombrero () +## @deftypefnx {Function File} {} sombrero (@var{n}) ## Produce the familiar three-dimensional sombrero plot using @var{n} ## grid lines. If @var{n} is omitted, a value of 41 is assumed. ##
--- a/scripts/plot/stairs.m +++ b/scripts/plot/stairs.m @@ -29,9 +29,9 @@ ## If only one argument is given, it is taken as a vector of y-values ## and the x coordinates are taken to be the indices of the elements. ## -## If one output argument is requested, return a graphics handle to the plot. -## If two output arguments are specified, the data are generated but -## not plotted. For example, +## If one output argument is requested, return a graphics handle to the +## created plot. If two output arguments are specified, the data are generated +## but not plotted. For example, ## ## @example ## stairs (x, y); @@ -49,8 +49,7 @@ ## ## @noindent ## are equivalent. -## @seealso{plot, semilogx, semilogy, loglog, polar, mesh, contour, -## bar, xlabel, ylabel, title} +## @seealso{plot} ## @end deftypefn ## Author: jwe @@ -233,6 +232,19 @@ %! [xs, ys] = stairs (9:-1:1); %! plot (xs, ys); +%!demo +%! clf; +%! N = 11; +%! x = 0:(N-1); +%! y = rand (1, N); +%! hs = stairs (x(1), y(1)); +%! set (gca (), 'xlim', [1, N-1], 'ylim', [0, 1]); +%! for k=2:N +%! set (hs, 'xdata', x(1:k), 'ydata', y(1:k)); +%! drawnow (); +%! pause (0.2); +%! end + function update_props (h, d) set (get (h, "children"), "color", get (h, "color"), @@ -248,6 +260,10 @@ x = get (h, "xdata"); y = get (h, "ydata"); + sz = min ([size(x); size(y)]); + x = x(1:sz(1), 1:sz(2)); + y = y(1:sz(1), 1:sz(2)); + nr = length (x); len = 2 * nr - 1; xs = ys = zeros (1, len);
--- a/scripts/plot/stem.m +++ b/scripts/plot/stem.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} stem (@var{x}) +## @deftypefn {Function File} {} stem (@var{y}) ## @deftypefnx {Function File} {} stem (@var{x}, @var{y}) ## @deftypefnx {Function File} {} stem (@var{x}, @var{y}, @var{linespec}) ## @deftypefnx {Function File} {} stem (@dots{}, "filled") @@ -130,3 +130,16 @@ %! set (h(2), 'color', 'g'); %! set (h(1), 'basevalue', -1); +%!demo +%! clf; +%! N = 11; +%! x = 0:(N-1); +%! y = rand (1, N); +%! hs = stem (x(1), y(1)); +%! set (gca (), 'xlim', [1, N-1], 'ylim', [0, 1]); +%! for k=2:N +%! set (hs, 'xdata', x(1:k), 'ydata', y(1:k)) +%! drawnow (); +%! pause (0.2); +%! end +
--- a/scripts/plot/stem3.m +++ b/scripts/plot/stem3.m @@ -17,7 +17,9 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{h} =} stem3 (@var{x}, @var{y}, @var{z}, @var{linespec}) +## @deftypefn {Function File} {} stem3 (@var{x}, @var{y}, @var{z}) +## @deftypefnx {Function File} {} stem3 (@var{x}, @var{y}, @var{z}, @var{linespec}) +## @deftypefnx {Function File} {@var{h} =} stem3 (@dots{}) ## Plot a three-dimensional stem graph and return the handles of the line ## and marker objects used to draw the stems as "stem series" object. ## The default color is @code{"r"} (red). The default line style is @@ -35,7 +37,7 @@ ## @noindent ## plots 31 stems with heights from 0 to 6 lying on a circle. Color ## definitions with RGB-triples are not valid! -## @seealso{bar, barh, stem, plot} +## @seealso{stem, bar, barh, plot} ## @end deftypefn function h = stem3 (varargin)
--- a/scripts/plot/stemleaf.m +++ b/scripts/plot/stemleaf.m @@ -306,30 +306,31 @@ %!demo -%! ## Unsorted plot: +%! %% Unsorted plot: %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44]; -%! stemleaf (x, "Unsorted plot"); +%! stemleaf (x, 'Unsorted plot'); %!demo -%! ## Sorted leaves: +%! %% Sorted leaves: %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44]; %! y = sort (x); -%! stemleaf (y, "Sorted leaves"); +%! stemleaf (y, 'Sorted leaves'); %!demo -%! ## Sorted leaves (large dataset): -%! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44 37 113 124 37 48 127 \ -%! 36 29 31 125 139 131 115 105 132 104 123 35 113 122 42 117 119 58 109 \ -%! 23 105 63 27 44 105 99 41 128 121 116 125 32 61 37 127 29 113 121 58 \ -%! 114 126 53 114 96 25 109 7 31 141 46 -13 71 43 117 116 27 7 68 40 31 \ -%! 115 124 42 128 52 71 118 117 38 27 106 33 117 116 111 40 119 47 105 57\ -%! 122 109 124 115 43 120 43 27 27 18 28 48 125 107 114 34 133 45 120 30 \ -%! 127 31 116 146 21 23 30 10 20 21 30 0 100 110 1 20 0]; +%! %% Sorted leaves (large dataset): +%! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44 37 113 124 37 48 ... +%! 127 36 29 31 125 139 131 115 105 132 104 123 35 113 122 42 117 119 ... +%! 58 109 23 105 63 27 44 105 99 41 128 121 116 125 32 61 37 127 29 113 ... +%! 121 58 114 126 53 114 96 25 109 7 31 141 46 -13 71 43 117 116 27 7 ... +%! 68 40 31 115 124 42 128 52 71 118 117 38 27 106 33 117 116 111 40 ... +%! 119 47 105 57 122 109 124 115 43 120 43 27 27 18 28 48 125 107 114 ... +%! 34 133 45 120 30 127 31 116 146 21 23 30 10 20 21 30 0 100 110 1 20 ... +%! 0]; %! y = sort (x); -%! stemleaf (y, "Sorted leaves (large dataset)"); +%! stemleaf (y, 'Sorted leaves (large dataset)'); %!demo -%! ## Gaussian leaves: +%! %% Gaussian leaves: %! x = fix (30 * randn (300,1)); %! stemleaf (x); @@ -544,7 +545,8 @@ %!test %! ## Example from EDA: Chevrolet Prices pg. 30 -%! x = [150 250 688 695 795 795 895 895 895 1099 1166 1333 1499 1693 1699 1775 1995]; +%! x = [150 250 688 695 795 795 895 895 895 ... +%! 1099 1166 1333 1499 1693 1699 1775 1995]; %! rexp = char ( %! " Data: Chevrolet Prices EDA pg.30", %! " " ,
--- a/scripts/plot/surfl.m +++ b/scripts/plot/surfl.m @@ -131,8 +131,7 @@ ## Get view vector (vv). a = axis; [az, el] = view; - [vv(1), vv(2), vv(3)] = sph2cart ((az - 90) * pi/180.0, el * pi/180.0, 1.0); - vv /= norm (vv); + vv = sph2cart ((az - 90) * pi/180.0, el * pi/180.0, 1.0); if (!have_lv) ## Calculate light vector (lv) from view vector.
--- a/scripts/plot/tetramesh.m +++ b/scripts/plot/tetramesh.m @@ -126,10 +126,10 @@ %! X = [x(:) y(:) z(:)]; %! colormap (jet (64)); %! h = tetramesh (tetra, X); -%! set (h(1:2:end), "Visible", "off"); +%! set (h(1:2:end), 'Visible', 'off'); %! axis equal; %! view (30, 20); -%! title ("Using jet (64), every other tetrahedron invisible"); +%! title ('Using jet (64), every other tetrahedron invisible'); %!demo %! clf; @@ -141,8 +141,8 @@ %! tetra = delaunay3 (x, y, z); %! X = [x(:) y(:) z(:)]; %! colormap (gray (256)); -%! tetramesh (tetra, X, 21:20:241, "EdgeColor", "w"); +%! tetramesh (tetra, X, 21:20:241, 'EdgeColor', 'w'); %! axis equal; %! view (30, 20); -%! title ("Using gray (256) and white edges"); +%! title ('Using gray (256) and white edges');
--- a/scripts/polynomial/roots.m +++ b/scripts/polynomial/roots.m @@ -79,41 +79,39 @@ function r = roots (v) - if (nargin != 1 || min (size (v)) > 1) + if (nargin != 1 || (! isvector (v) && ! isempty (v))) print_usage (); elseif (any (isnan (v) | isinf (v))) error ("roots: inputs must not contain Inf or NaN"); endif + v = v(:); n = numel (v); - v = v(:); - ## If v = [ 0 ... 0 v(k+1) ... v(k+l) 0 ... 0 ], we can remove the - ## leading k zeros and n - k - l roots of the polynomial are zero. + ## If v = [ 0 ... 0 v(k+1) ... v(k+l) 0 ... 0 ], + ## we can remove the leading k zeros, + ## and n - k - l roots of the polynomial are zero. - if (isempty (v)) - f = v; - else - f = find (v ./ max (abs (v))); + v_max = max (abs (v)); + if (isempty (v) || v_max == 0) + r = []; + return; endif + + f = find (v ./ v_max); m = numel (f); - if (m > 0 && n > 1) - v = v(f(1):f(m)); - l = max (size (v)); - if (l > 1) - A = diag (ones (1, l-2), -1); - A(1,:) = -v(2:l) ./ v(1); - r = eig (A); - if (f(m) < n) - tmp = zeros (n - f(m), 1); - r = [r; tmp]; - endif - else - r = zeros (n - f(m), 1); + v = v(f(1):f(m)); + l = numel (v); + if (l > 1) + A = diag (ones (1, l-2), -1); + A(1,:) = -v(2:l) ./ v(1); + r = eig (A); + if (f(m) < n) + r = [r; zeros(n - f(m), 1)]; endif else - r = []; + r = zeros (n - f(m), 1); endif endfunction @@ -125,11 +123,12 @@ %! assert (r, [0; 0; 0; 0; 3; 3; 3; 3], 0.001); %!assert (isempty (roots ([]))) +%!assert (isempty (roots ([0 0]))) %!assert (isempty (roots (1))) %!assert (roots ([1, -6, 11, -6]), [3; 2; 1], sqrt (eps)) -%!assert(roots ([1e-200, -1e200, 1]), 1e-200) -%!assert(roots ([1e-200, -1e200 * 1i, 1]), -1e-200 * 1i) +%!assert (roots ([1e-200, -1e200, 1]), 1e-200) +%!assert (roots ([1e-200, -1e200 * 1i, 1]), -1e-200 * 1i) %!error roots () %!error roots (1,2)
--- a/scripts/set/powerset.m +++ b/scripts/set/powerset.m @@ -26,7 +26,7 @@ ## ## With the optional second argument @code{"rows"}, each row of the set @var{a} ## is considered one element of the set. As a result, @var{a} must then be a -## numerical 2D matrix. +## numerical 2-D matrix. ## ## @seealso{unique, union, setxor, setdiff, ismember} ## @end deftypefn
--- a/scripts/signal/fftshift.m +++ b/scripts/signal/fftshift.m @@ -24,7 +24,7 @@ ## center of the vector or matrix. ## ## If @var{x} is a vector of @math{N} elements corresponding to @math{N} -## time samples spaced by @math{dt}, then +## time samples spaced by @nospell{@math{dt}}, then ## @code{fftshift (fft (@var{x}))} corresponds to frequencies ## ## @example @@ -32,7 +32,7 @@ ## @end example ## ## @noindent -## where @nospell{@math{df}} = 1 / @math{dt}. +## where @nospell{@math{df} = 1 / @math{dt}}. ## ## If @var{x} is a matrix, the same holds for rows and columns. If ## @var{x} is an array, then the same holds along each dimension.
--- a/scripts/signal/periodogram.m +++ b/scripts/signal/periodogram.m @@ -48,7 +48,7 @@ ## "@nospell{twosided}" computes spectrum from [0..nfft-1]. These strings ## can appear at any position in the list input arguments after window. ## -## @item Pxx: one-, or two-sided power spectrum. +## @item @nospell{Pxx}: one-, or two-sided power spectrum. ## ## @item w: angular frequency [0..2*pi) (two-sided) or [0..pi] one-sided. ##
--- a/scripts/sparse/bicg.m +++ b/scripts/sparse/bicg.m @@ -1,5 +1,5 @@ -## Copyright (C) 2006 Sylvain Pelissier <sylvain.pelissier@gmail.com> -## Copyright (C) 2012 Carlo de Falco +## Copyright (C) 2006 Sylvain Pelissier +## Copyright (C) 2012 Carlo de Falco ## ## 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 @@ -54,6 +54,7 @@ ## ## @item 3: the algorithm reached stagnation ## @end itemize +## ## (the value 2 is unused but skipped for compatibility). ## ## @item @var{relres} is the final value of the relative residual. @@ -67,6 +68,8 @@ ## ## @end deftypefn +## Author: Sylvain Pelissier <sylvain.pelissier@gmail.com> +## Author: Carlo de Falco function [x, flag, res1, k, resvec] = bicg (A, b, tol, maxit, M1, M2, x0)
--- a/scripts/sparse/bicgstab.m +++ b/scripts/sparse/bicgstab.m @@ -56,6 +56,7 @@ ## ## @item 3: the algorithm reached stagnation ## @end itemize +## ## (the value 2 is unused but skipped for compatibility). ## ## @item @var{relres} is the final value of the relative residual.
--- a/scripts/sparse/cgs.m +++ b/scripts/sparse/cgs.m @@ -56,6 +56,7 @@ ## ## @item 3: the algorithm reached stagnation ## @end itemize +## ## (the value 2 is unused but skipped for compatibility). ## ## @item @var{relres} is the final value of the relative residual.
--- a/scripts/sparse/pcg.m +++ b/scripts/sparse/pcg.m @@ -206,9 +206,10 @@ ## SIAM, 1995. (the base PCG algorithm) ## ## @item -## Y. Saad, @cite{Iterative Methods for Sparse Linear Systems}, PWS 1996. -## (condition number estimate from PCG) Revised version of this book is -## available online at @url{http://www-users.cs.umn.edu/~saad/books.html} +## Y. Saad, @cite{Iterative Methods for Sparse Linear Systems}, +## @nospell{PWS} 1996. (condition number estimate from PCG) +## Revised version of this book is available online at +## @url{http://www-users.cs.umn.edu/~saad/books.html} ## @end enumerate ## ## @seealso{sparse, pcr}
--- a/scripts/sparse/private/__sprand_impl__.m +++ b/scripts/sparse/private/__sprand_impl__.m @@ -55,9 +55,27 @@ mn = m*n; k = round (d*mn); - idx = randperm (mn, k); + if (mn > sizemax ()) + ## randperm will overflow, so use alternative methods + + idx = unique (fix (rand (min (k*1.01, k+10), 1) * mn)) + 1; - [i, j] = ind2sub ([m, n], idx); + ## idx contains random numbers in [1,mn] + ## generate 1% or 10 more random values than necessary in order to + ## reduce the probability that there are less than k distinct + ## values; maybe a better strategy could be used but I don't think + ## it's worth the price + + ## actual number of entries in S + k = min (length (idx), k); + j = floor ((idx(1:k) - 1) / m); + i = idx(1:k) - j * m; + else + idx = randperm (mn, k); + [i, j] = ind2sub ([m, n], idx); + endif + + S = sparse (i, j, randfun (k, 1), m, n); endfunction
--- a/scripts/sparse/sprand.m +++ b/scripts/sparse/sprand.m @@ -81,3 +81,7 @@ %!error sprand (3, 3, -1) %!error sprand (3, 3, 2) +%% Test very large, very low density matrix doesn't fail +%!test +%! s = sprand(1e6,1e6,1e-7); +
--- a/scripts/sparse/sprandn.m +++ b/scripts/sparse/sprandn.m @@ -72,3 +72,6 @@ %!error sprandn (3, 3, -1) %!error sprandn (3, 3, 2) +%% Test very large, very low density matrix doesn't fail +%!test +%! s = sprandn(1e6,1e6,1e-7);
--- a/scripts/sparse/svds.m +++ b/scripts/sparse/svds.m @@ -137,7 +137,11 @@ endif [m, n] = size (A); - max_a = max (abs (A(:))); + max_a = max (abs (nonzeros (A))); + if (isempty (max_a)) + max_a = 0; + endif + if (max_a == 0) s = zeros (k, 1); # special case of zero matrix else
--- a/scripts/specfun/ellipke.m +++ b/scripts/specfun/ellipke.m @@ -1,5 +1,5 @@ -## Copyright (C) 2001 David Billinghurst <David.Billinghurst@riotinto.com> -## Copyright (C) 2001 Paul Kienzle <pkienzle@users.sf.net> +## Copyright (C) 2001 David Billinghurst +## Copyright (C) 2001 Paul Kienzle ## Copyright (C) 2003 Jaakko Ruohio ## ## This file is part of Octave. @@ -25,9 +25,9 @@ ## Compute complete elliptic integral of the first K(@var{m}) and second ## E(@var{m}) kind. ## -## @var{m} is either real array or scalar with 0 <= m <= 1. +## @var{m} is either real array or scalar with 0 @leq{} m @leq{} 1. ## -## @var{tol} is currently ignored (@sc{Matlab} uses this to allow faster, +## @var{tol} is currently ignored (@sc{matlab} uses this to allow faster, ## less accurate approximation). ## ## Ref: Abramowitz, Milton and Stegun, Irene A. Handbook of Mathematical @@ -35,6 +35,10 @@ ## @seealso{ellipj} ## @end deftypefn +## Author: David Billinghurst <David.Billinghurst@riotinto.com> +## Author: Paul Kienzle <pkienzle@users.sf.net> +## Author: Jaakko Ruohio + function [k, e] = ellipke (m) if (nargin < 1 || nargin > 2)
--- a/scripts/specfun/expint.m +++ b/scripts/specfun/expint.m @@ -1,4 +1,4 @@ -## Copyright (C) 2006 Sylvain Pelissier <sylvain.pelissier@gmail.com> +## Copyright (C) 2006 Sylvain Pelissier ## ## This file is part of Octave. ## @@ -16,6 +16,8 @@ ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. +## Author: Sylvain Pelissier <sylvain.pelissier@gmail.com> + ## -*- texinfo -*- ## @deftypefn {Function File} {} expint (@var{x}) ## Compute the exponential integral,
--- a/scripts/special-matrix/gallery.m +++ b/scripts/special-matrix/gallery.m @@ -50,7 +50,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{c} =} gallery ("circul", @var{v}) +## @deftypefn {Function File} {@var{c} =} gallery ("circul", @var{v}) ## Create a circulant matrix. ## ## @end deftypefn @@ -81,8 +81,8 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {[@var{c},@var{d}, @var{e}] =} gallery ("dorr", @var{n}) -## @deftypefnx {Function File} {[@var{c},@var{d}, @var{e}] =} gallery ("dorr", @var{n}, @var{theta}) +## @deftypefn {Function File} {[@var{c}, @var{d}, @var{e}] =} gallery ("dorr", @var{n}) +## @deftypefnx {Function File} {[@var{c}, @var{d}, @var{e}] =} gallery ("dorr", @var{n}, @var{theta}) ## @deftypefnx {Function File} {@var{a} =} gallery ("dorr", @dots{}) ## Create a diagonally dominant, ill conditioned, tridiagonal matrix. ## @@ -94,7 +94,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("fiedler", @var{c}) +## @deftypefn {Function File} {@var{a} =} gallery ("fiedler", @var{c}) ## Create a symmetric Fiedler matrix. ## ## @end deftypefn @@ -112,7 +112,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{c} =} gallery ("gcdmat", @var{n}) +## @deftypefn {Function File} {@var{c} =} gallery ("gcdmat", @var{n}) ## Create a greatest common divisor matrix. ## ## @var{c} is an @var{n}-by-@var{n} matrix whose values correspond to the @@ -135,7 +135,8 @@ ## ## @deftypefn {Function File} {@var{a} =} gallery ("hanowa", @var{n}) ## @deftypefnx {Function File} {@var{a} =} gallery ("hanowa", @var{n}, @var{d}) -## Create a matrix whose eigenvalues lie on a vertical line in the complex plane. +## Create a matrix whose eigenvalues lie on a vertical line in the complex +## plane. ## ## @end deftypefn ## @@ -151,7 +152,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("invol", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("invol", @var{n}) ## Create an involutory matrix. ## ## @end deftypefn @@ -194,22 +195,22 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("lehmer", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("lehmer", @var{n}) ## Create a Lehmer matrix (symmetric positive definite). ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{t} =} gallery ("lesp", @var{n}) +## @deftypefn {Function File} {@var{t} =} gallery ("lesp", @var{n}) ## Create a tridiagonal matrix with real, sensitive eigenvalues. ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("lotkin", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("lotkin", @var{n}) ## Create a Lotkin matrix. ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("minij", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("minij", @var{n}) ## Create a symmetric positive definite matrix MIN(i,j). ## ## @end deftypefn @@ -220,7 +221,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {[@var{a}, @var{t}] =} gallery ("neumann", @var{n}) +## @deftypefn {Function File} {[@var{a}, @var{t}] =} gallery ("neumann", @var{n}) ## Create a singular matrix from the discrete Neumann problem (sparse). ## ## @end deftypefn @@ -231,7 +232,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("parter", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("parter", @var{n}) ## Create a Parter matrix (a Toeplitz matrix with singular values near pi). ## ## @end deftypefn @@ -242,7 +243,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("poisson", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("Poisson", @var{n}) ## Create a block tridiagonal matrix from Poisson's equation (sparse). ## ## @end deftypefn @@ -253,7 +254,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{h} =} gallery ("randhess", @var{x}) +## @deftypefn {Function File} {@var{h} =} gallery ("randhess", @var{x}) ## Create a random, orthogonal upper Hessenberg matrix. ## ## @end deftypefn @@ -273,18 +274,18 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("redheff", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("redheff", @var{n}) ## Create a zero and ones matrix of Redheffer associated with the Riemann ## hypothesis. ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("riemann", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("riemann", @var{n}) ## Create a matrix associated with the Riemann hypothesis. ## ## @end deftypefn ## -## @deftypefn {Function File} {@var{a} =} gallery ("ris", @var{n}) +## @deftypefn {Function File} {@var{a} =} gallery ("ris", @var{n}) ## Create a symmetric Hankel matrix. ## ## @end deftypefn @@ -333,7 +334,7 @@ ## ## @end deftypefn ## -## @deftypefn {Function File} {[@var{a}, @var{b}] =} gallery ("wilk", @var{n}) +## @deftypefn {Function File} {[@var{a}, @var{b}] =} gallery ("wilk", @var{n}) ## Create various specific matrices devised/discussed by Wilkinson. ## ## @end deftypefn @@ -532,7 +533,7 @@ case (0), # do nothing case (1), n = n + 1; otherwise - error ("gallery: unknown K `%d' for chebspec matrix.", k); + error ("gallery: unknown K '%d' for chebspec matrix.", k); endswitch n = n-1; @@ -666,11 +667,11 @@ error ("gallery: V must be numeric for circul matrix."); endif - n = numel (x); - if (isscalar (x) && fix (x) == x) + n = numel (v); + if (isscalar (v) && fix (v) == v) n = v; v = 1:n; - elseif (n > 1 && isvector (x)) + elseif (n > 1 && isvector (v)) ## do nothing else error ("gallery: X must be a scalar or a vector for circul matrix."); @@ -839,7 +840,7 @@ A = eye (n) + theta*P; else - error ("gallery: unknown estimator K `%d' for condex matrix.", k); + error ("gallery: unknown estimator K '%d' for condex matrix.", k); endif ## Pad out with identity as necessary. @@ -999,7 +1000,7 @@ A = toeplitz (c, [1 1 zeros(1,n-2)]); otherwise - error ("gallery: unknown K `%d' for dramadah matrix.", k); + error ("gallery: unknown K '%d' for dramadah matrix.", k); endswitch endfunction @@ -1827,7 +1828,7 @@ Q = cos (m); otherwise - error ("gallery: unknown K `%d' for orthog matrix.", k); + error ("gallery: unknown K '%d' for orthog matrix.", k); endswitch endfunction @@ -2006,7 +2007,7 @@ case (2), A = 2*floor ( rand(m, n) + 0.5) -1; # {-1, 1} case (3), A = round (3*rand(m, n) - 1.5); # {-1, 0, 1} otherwise - error ("gallery: unknown K `%d' for smoke matrix.", k); + error ("gallery: unknown K '%d' for smoke matrix.", k); endswitch endfunction @@ -2097,7 +2098,7 @@ rand ("uniform"); sigma = exp (-rand (p, 1) * log (kappa)); otherwise - error ("gallery: unknown MODE `%d' for randsvd matrix.", mode); + error ("gallery: unknown MODE '%d' for randsvd matrix.", mode); endswitch ## Convert to diagonal matrix of singular values. @@ -2616,7 +2617,7 @@ A = diag (abs (-m:m)) + E + E'; else - error ("gallery: unknown N `%d' for wilk matrix.", n); + error ("gallery: unknown N '%d' for wilk matrix.", n); endif endfunction
--- a/scripts/startup/main-rcfile +++ b/scripts/startup/main-rcfile @@ -6,7 +6,7 @@ ## Configure readline using the file inputrc in the Octave startup ## directory. -read_readline_init_file (sprintf ("%s%s%s", +readline_read_init_file (sprintf ("%s%s%s", octave_config_info ("startupfiledir"), filesep, "inputrc"));
--- a/scripts/statistics/base/quantile.m +++ b/scripts/statistics/base/quantile.m @@ -38,7 +38,8 @@ ## dimension. ## ## The methods available to calculate sample quantiles are the nine methods -## used by R (http://www.r-project.org/). The default value is METHOD = 5. +## used by R (@url{http://www.r-project.org/}). The default value is +## @w{METHOD = 5}. ## ## Discontinuous sample quantile methods 1, 2, and 3 ## @@ -308,8 +309,7 @@ ## quantiles, @var{q} (the inverse of the cdf), for the sample, @var{x}. ## ## The optional input, @var{method}, refers to nine methods available in R -## (http://www.r-project.org/). The default is @var{method} = 7. For more -## detail, see `help quantile'. +## (http://www.r-project.org/). The default is @var{method} = 7. ## @seealso{prctile, quantile, statistics} ## Author: Ben Abbott <bpabbott@mac.com>
--- a/scripts/statistics/tests/f_test_regression.m +++ b/scripts/statistics/tests/f_test_regression.m @@ -18,8 +18,8 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{pval}, @var{f}, @var{df_num}, @var{df_den}] =} f_test_regression (@var{y}, @var{x}, @var{rr}, @var{r}) -## Perform an F test for the null hypothesis rr * b = r in a classical -## normal regression model y = X * b + e. +## Perform an F test for the null hypothesis @nospell{rr * b = r} in a +## classical normal regression model y = X * b + e. ## ## Under the null, the test statistic @var{f} follows an F distribution ## with @var{df_num} and @var{df_den} degrees of freedom.
--- a/scripts/statistics/tests/t_test_regression.m +++ b/scripts/statistics/tests/t_test_regression.m @@ -18,20 +18,23 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{pval}, @var{t}, @var{df}] =} t_test_regression (@var{y}, @var{x}, @var{rr}, @var{r}, @var{alt}) -## Perform an t test for the null hypothesis @code{@var{rr} * @var{b} = -## @var{r}} in a classical normal regression model @code{@var{y} = -## @var{x} * @var{b} + @var{e}}. Under the null, the test statistic @var{t} -## follows a @var{t} distribution with @var{df} degrees of freedom. +## Perform a t test for the null hypothesis +## @nospell{@code{@var{rr} * @var{b} = @var{r}}} in a classical normal +## regression model @code{@var{y} = @var{x} * @var{b} + @var{e}}. Under the +## null, the test statistic @var{t} follows a @var{t} distribution with +## @var{df} degrees of freedom. ## ## If @var{r} is omitted, a value of 0 is assumed. ## ## With the optional argument string @var{alt}, the alternative of ## interest can be selected. If @var{alt} is @code{"!="} or ## @code{"<>"}, the null is tested against the two-sided alternative -## @code{@var{rr} * @var{b} != @var{r}}. If @var{alt} is @code{">"}, the -## one-sided alternative @code{@var{rr} * @var{b} > @var{r}} is used. -## Similarly for @var{"<"}, the one-sided alternative @code{@var{rr} * -## @var{b} < @var{r}} is used. The default is the two-sided case. +## @nospell{@code{@var{rr} * @var{b} != @var{r}}}. If @var{alt} is @code{">"}, +## the one-sided alternative +## @nospell{@code{@var{rr} * @var{b} > @var{r}}} is used. Similarly for +## @var{"<"}, the one-sided alternative +## @nospell{@code{@var{rr} * @var{b} < @var{r}}} is used. The default is the +## two-sided case. ## ## The p-value of the test is returned in @var{pval}. ##
--- a/scripts/strings/dec2base.m +++ b/scripts/strings/dec2base.m @@ -66,8 +66,11 @@ if (! iscolumn (d)) d = d(:); endif - - if (! isnumeric (d) || iscomplex (d) || any (d < 0 | d != fix (d))) + + ## Treat logical as numeric for compatibility with ML + if (islogical (d)) + d = double (d); + elseif (! isnumeric (d) || iscomplex (d) || any (d < 0 | d != fix (d))) error ("dec2base: input must be real non-negative integers"); endif @@ -151,6 +154,10 @@ %!assert (dec2base ([1, 2; 3, 4], 2, 3), ["001"; "011"; "010"; "100"]) %!assert (dec2base ({1, 2; 3, 4}, 2, 3), ["001"; "011"; "010"; "100"]) +%!test +%! a = 0:3; +%! assert (dec2base (!a, 2, 1), ["1"; "0"; "0"; "0"]) + %%Test input validation %!error dec2base () %!error dec2base (1)
--- a/scripts/strings/module.mk +++ b/scripts/strings/module.mk @@ -4,6 +4,7 @@ strings/base2dec.m \ strings/bin2dec.m \ strings/blanks.m \ + strings/cstrcat.m \ strings/deblank.m \ strings/dec2base.m \ strings/dec2bin.m \ @@ -14,16 +15,16 @@ strings/isletter.m \ strings/isstrprop.m \ strings/mat2str.m \ + strings/ostrsplit.m \ strings/regexptranslate.m \ strings/rindex.m \ - strings/strsplit.m \ strings/str2num.m \ strings/strcat.m \ - strings/cstrcat.m \ strings/strchr.m \ strings/strjoin.m \ strings/strjust.m \ strings/strmatch.m \ + strings/strsplit.m \ strings/strtok.m \ strings/strtrim.m \ strings/strtrunc.m \
new file mode 100644 --- /dev/null +++ b/scripts/strings/ostrsplit.m @@ -0,0 +1,118 @@ +## Copyright (C) 2009-2012 Jaroslav Hajek +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {[@var{cstr}] =} ostrsplit (@var{s}, @var{sep}) +## @deftypefnx {Function File} {[@var{cstr}] =} ostrsplit (@var{s}, @var{sep}, @var{strip_empty}) +## Split the string @var{s} using one or more separators @var{sep} and return +## a cell array of strings. Consecutive separators and separators at +## boundaries result in empty strings, unless @var{strip_empty} is true. +## The default value of @var{strip_empty} is false. +## +## 2-D character arrays are split at separators and at the original column +## boundaries. +## +## Example: +## +## @example +## @group +## ostrsplit ("a,b,c", ",") +## @result{} +## @{ +## [1,1] = a +## [1,2] = b +## [1,3] = c +## @} +## +## ostrsplit (["a,b" ; "cde"], ",") +## @result{} +## @{ +## [1,1] = a +## [1,2] = b +## [1,3] = cde +## @} +## @end group +## @end example +## @seealso{strsplit, strtok} +## @end deftypefn + +function cstr = ostrsplit (s, sep, strip_empty = false) + + if (nargin < 2 || nargin > 3) + print_usage (); + elseif (! ischar (s) || ! ischar (sep)) + error ("ostrsplit: S and SEP must be string values"); + elseif (! isscalar (strip_empty)) + error ("ostrsplit: STRIP_EMPTY must be a scalar value"); + endif + + if (isempty (s)) + cstr = cell (size (s)); + else + if (rows (s) > 1) + ## For 2-D arrays, add separator character at line boundaries + ## and transform to single string + s(:, end+1) = sep(1); + s = reshape (s.', 1, numel (s)); + s(end) = []; + endif + + ## Split s according to delimiter + if (isscalar (sep)) + ## Single separator + idx = find (s == sep); + else + ## Multiple separators + idx = strchr (s, sep); + endif + + ## Get substring lengths. + if (isempty (idx)) + strlens = length (s); + else + strlens = [idx(1)-1, diff(idx)-1, numel(s)-idx(end)]; + endif + ## Remove separators. + s(idx) = []; + if (strip_empty) + ## Omit zero lengths. + strlens = strlens(strlens != 0); + endif + + ## Convert! + cstr = mat2cell (s, 1, strlens); + endif + +endfunction + + +%!assert (ostrsplit ("road to hell", " "), {"road", "to", "hell"}) +%!assert (ostrsplit ("road to^hell", " ^"), {"road", "to", "hell"}) +%!assert (ostrsplit ("road to--hell", " -", true), {"road", "to", "hell"}) +%!assert (ostrsplit (["a,bc";",de"], ","), {"a", "bc", char(ones(1,0)), "de "}) +%!assert (ostrsplit (["a,bc";",de"], ",", true), {"a", "bc", "de "}) +%!assert (ostrsplit (["a,bc";",de"], ", ", true), {"a", "bc", "de"}) + +%% Test input validation +%!error ostrsplit () +%!error ostrsplit ("abc") +%!error ostrsplit ("abc", "b", true, 4) +%!error <S and SEP must be string values> ostrsplit (123, "b") +%!error <S and SEP must be string values> ostrsplit ("abc", 1) +%!error <STRIP_EMPTY must be a scalar value> ostrsplit ("abc", "def", ones (3,3)) +
--- a/scripts/strings/strjoin.m +++ b/scripts/strings/strjoin.m @@ -1,5 +1,5 @@ -## Copyright (C) 2007 Muthiah Annamalai <muthiah.annamalai@uta.edu> -## Copyright (C) 2013 Ben Abbott <bpabbott@mac.com> +## Copyright (C) 2007 Muthiah Annamalai +## Copyright (C) 2013 Ben Abbott ## ## This file is part of Octave. ## @@ -18,20 +18,21 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{str} =} strjoin (@var{cstr}) +## @deftypefn {Function File} {@var{str} =} strjoin (@var{cstr}) ## @deftypefnx {Function File} {@var{str} =} strjoin (@var{cstr}, @var{delimiter}) -## Joins the elements of the cell-string array, @var{cstr}, into a single +## Join the elements of the cell-string array, @var{cstr}, into a single ## string. ## ## If no @var{delimiter} is specified, the elements of @var{cstr} -## seperated by a space. +## separated by a space. ## ## If @var{delimiter} is specified as a string, the cell-string array is -## joined using the string. +## joined using the string. Escape sequences are supported. ## ## If @var{delimiter} is a cell-string array whose length is one less -## than @var{cstr}, then the elemennts of @var{cstr} are joined by -## interleaving the cell-string elements of @var{delimiter}. +## than @var{cstr}, then the elements of @var{cstr} are joined by +## interleaving the cell-string elements of @var{delimiter}. Escape +## sequences are not supported. ## ## @example ## @group @@ -42,6 +43,9 @@ ## @seealso {strsplit} ## @end deftypefn +## Author: Muthiah Annamalai <muthiah.annamalai@uta.edu> +## Author: Ben Abbott <bpabbott@mac.com> + function rval = strjoin (cstr, delimiter) if (nargin == 1) @@ -58,6 +62,7 @@ endif if (ischar (delimiter)) + delimiter = do_string_escapes (delimiter); delimiter = {delimiter}; end @@ -65,14 +70,18 @@ if (numel (delimiter) == 1 && num > 1) delimiter = repmat (delimiter, 1, num); delimiter(end) = {""}; - elseif (numel (delimiter) != num - 1) + elseif (num > 0 && numel (delimiter) != num - 1) error ("strjoin:cellstring_delimiter_mismatch", "strjoin: the number of delimiters does not match the number of strings") else delimiter(end+1) = {""}; endif - rval = sprintf ("%s", [cstr(:).'; delimiter(:).']{:}); + if (num == 0) + rval = ""; + else + rval = [[cstr(:).'; delimiter(:).']{:}]; + endif endfunction @@ -82,3 +91,6 @@ %! "Octave*Scilab*Lush*Yorick") %!assert (strjoin ({"space", "comma", "dash", "semicolon", "done"}, %! {" ", ",", "-", ";"}), "space comma,dash-semicolon;done") +%!assert (strjoin ({'Octave','Scilab'},'\n'), "Octave\nScilab") +%!assert (strjoin ({'Octave','Scilab'},{'\n'}), "Octave\\nScilab") +%!assert (strjoin ({},'foo'), "")
--- a/scripts/strings/strsplit.m +++ b/scripts/strings/strsplit.m @@ -19,23 +19,21 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{cstr}] =} strsplit (@var{s}) ## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@var{s}, @var{del}) -## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@var{s}, @var{del}, @var{collapsedelimiters}) ## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@dots{}, @var{name}, @var{value}) ## @deftypefnx {Function File} {[@var{cstr}, @var{matches}] =} strsplit (@dots{}) ## Split the string @var{s} using the delimiters specified by @var{del} -## and return a cell array of strings. For a single delimiter, @var{del} -## may be a string, or a scalar cell-string. For multible delimiters, -## @var{del} must be a cell-string array. Unless @var{collapsedelimiters} is -## specified to be @var{false}, consecutive delimiters are collapsed into one. +## and return a cell-string array of sub-strings. If a delimiter is not +## specified the string, @var{s}, is split at whitespace. The delimiter, +## @var{del} may be a string, a scalar cell-string, or cell-string array. +## @var{del} must be a cell-string array. By default, consecutive +## delimiters in the input string, @var{s}, are collapsed into one. ## ## The second output, @var{matches}, returns the delmiters which were matched -## in the original string. The matched delimiters are uneffected by the -## @var{collapsedelimiters}. +## in the original string. ## ## Example: ## ## @example -## @group ## strsplit ("a b c") ## @result{} ## @{ @@ -70,33 +68,22 @@ ## [1,5] = c ## @} ## -## @end group ## @end example ## ## Supported @var{name}/@var{value} pair arguments are; ## ## @itemize -## @item @var{collapsedelimiters} may take the value of @var{true} or @var{false} -## with the default being @var{false}. -## @item @var{delimitertype} may take the value of @code{legacy}, -## @code{simple} or @code{regularexpression}. -## If @var{delimitertype} is equal to @code{legacy}, each individual -## character of @var{del} is used to split the input. For both @code{simple} -## and @code{regularexpression}, the string is split at the boundaries of the -## delimiter string. If @var{delimiter} is a cell-string, then the string -## is split at the boundaries of each of the cells' strings. @var{simple} -## delimiters may contain escaped characters, but are otherwise treated as -## literal strings. +## @item @var{collapsedelimiters} may take the value of @var{true} or +## @var{false} with the default being @var{false}. ## -## If the specified delimiters are single characters, the default is -## @var{delimitertype} is @code{legacy}. Otherwise the default -## @var{delimitertype} is @code{simple}. +## @item @var{delimitertype} may take the value of @code{simple} or +## @code{regularexpression}. The default is @var{delimitertype} is +## @code{simple}. ## @end itemize ## ## Example: ## ## @example -## @group ## strsplit ("a foo b,bar c", ",|\\s|foo|bar", "delimitertype", "regularexpression") ## @result{} ## @{ @@ -115,16 +102,6 @@ ## [1,5] = c ## @} ## -## strsplit ("a,,b, c", ", ", false, "delimitertype", "legacy") -## @result{} -## @{ -## [1,1] = a -## [1,2] = -## [1,3] = b -## [1,4] = -## [1,5] = c -## @} -## ## strsplit ("a,\t,b, c", @{',', '\s'@}, "delimitertype", "regularexpression") ## @result{} ## @{ @@ -132,10 +109,20 @@ ## [1,2] = b ## [1,3] = c ## @} -## @end group +## +## strsplit ("a,\t,b, c", @{',', ' ', '\t'@}, "collapsedelimiters", false) +## @result{} +## @{ +## [1,1] = a +## [1,2] = +## [1,3] = +## [1,4] = b +## [1,5] = +## [1,6] = c +## @} ## @end example ## -## @seealso{strjoin, strtok, regexp} +## @seealso{ostrsplit, strjoin, strtok, regexp} ## @end deftypefn function [result, matches] = strsplit (str, del, varargin) @@ -145,7 +132,9 @@ [reg, params] = parseparams (varargin); - if (numel (reg) > 1) + if (nargin < 1) + print_usage (); + elseif (numel (reg) > 1) print_usage (); elseif (numel (reg) == 1) if (islogical (reg{1}) || isnumeric (reg{1})) @@ -160,22 +149,14 @@ args.(lower(params{n})) = params{n+1}; elseif (ischar (varargin{n})) error ("strsplit:invalid_parameter_name", - sprintf ("strsplit: Invalid parameter name, `%s'", varargin{n})) + "strsplit: invalid parameter name, '%s'", varargin{n}); else print_usage (); endif endfor if (strcmpi (args.delimitertype, "default")) - if (nargin == 1 || numel (del) == 1 - || (nargin > 1 && (islogical (del) || isnumeric (del))) - || iscell (del) && all (cellfun (@numel, del) < 2)) - ## For single character delimiters, default to "legacy" - args.delimitertype = "legacy"; - else - ## For multi-character delimiters, default to "simple" - args.delimitertype = "simple"; - endif + args.delimitertype = "simple"; endif # Save the length of the "delimitertype" parameter @@ -189,16 +170,12 @@ ## Set proper default for the delimiter type if (strncmpi (args.delimitertype, "simple", numel (args.delimitertype))) del = {" ","\f","\n","\r","\t","\v"}; - elseif (strncmpi (args.delimitertype, "legacy", numel (args.delimitertype))) - del = " \f\n\r\t\v"; else del = "\\s"; endif endif - if (nargin < 1) - print_usage (); - elseif (! ischar (str) || (! ischar (del) && ! iscellstr (del))) + if (! ischar (str) || (! ischar (del) && ! iscellstr (del))) error ("strsplit: S and DEL must be string values"); elseif (! isscalar (args.collapsedelimiters)) error ("strsplit: COLLAPSEDELIMITERS must be a scalar value"); @@ -210,70 +187,12 @@ else del = do_string_escapes (del); endif + % This is clumsy, but needed for multi-row strings del = regexprep (del, '([^\w])', '\\$1'); endif - if (rows (str) > 1) - tmp = char (del(1)); - str = [str, repmat(tmp,rows(str),1)]; - str = reshape (str.', 1, numel (str)); - str(end-numel(tmp)+1:end) = []; - endif - if (isempty (str)) result = {str}; - elseif (strncmpi (args.delimitertype, "legacy", length_deltype)) - ## Legacy splitting is fast - if (! ischar (del)) - if (iscell (del) && all (cellfun (@numel, del) < 2)) - del = [del{:}]; - else - error ("strsplit:legacy_delimiter_must_be_char", - "%s %s", "strsplit: for DELIMITERTYPE = ""legacy"" ", - "DEL must be a string, or a cell array scalar character elements.") - endif - endif - if (strcmp (typeinfo (del), "sq_string")) - del = do_string_escapes (del); - endif - ## Split str at each character contained in del - if (isscalar (del)) - ## Single separator - idx = find (str == del); - else - ## Multiple separators - idx = strchr (str, del); - endif - - ## Get substring lengths. - if (isempty (idx)) - strlens = length (str); - else - strlens = [idx(1)-1, diff(idx)-1, numel(str)-idx(end)]; - endif - if (nargout > 1) - ## Grab the separators - matches = num2cell (str(idx)(:)).'; - if (args.collapsedelimiters) - ## Collapse the consequtive delimiters - ## TODO - is there a vectorized way? - for m = numel(matches):-1:2 - if (strlens(m) == 0) - matches{m-1} = [matches{m-1:m}]; - matches(m) = []; - endif - end - endif - endif - ## Remove separators. - str(idx) = []; - if (args.collapsedelimiters) - ## Omit zero lengths. - strlens = strlens(strlens != 0); - endif - - ## Convert! - result = mat2cell (str, 1, strlens); elseif (strncmpi (args.delimitertype, "regularexpression", length_deltype) || strncmpi (args.delimitertype, "simple", length_deltype)) if (iscellstr (del)) @@ -285,14 +204,11 @@ endif [result, ~, ~, ~, matches] = regexp (str, del, "split"); else - error ("strsplit:invalid_delimitertype", - sprintf ("strsplit: Invalid DELIMITERTYPE")) + error ("strsplit:invalid_delimitertype", + "strsplit: Invalid DELIMITERTYPE"); endif endfunction -% Mimic the old strsplit() -%!assert (cellfun (@numel, strsplit (["a,b,c";"1,2 "], ",")), [1 1 2 1 4]) - %!shared str %! str = "The rain in Spain stays mainly in the plain."; % Split on all whitespace. @@ -323,7 +239,7 @@ %!assert (strsplit ("road to^hell", {" ","^"}), {"road", "to", "hell"}) %!assert (strsplit ("road to--hell", {" ","-"}, true), {"road", "to", "hell"}) %!assert (strsplit (["a,bc,,de"], ",", false, "delimitertype", "s"), {"a", "bc", "", "de"}) -%!assert (strsplit (["a,bc,,de"], ",", false), {"a", "bc", char(ones(1,0)), "de"}) +%!assert (strsplit (["a,bc,,de"], ",", false), {"a", "bc", "", "de"}) %!assert (strsplit (["a,bc,de"], ",", true), {"a", "bc", "de"}) %!assert (strsplit (["a,bc,de"], {","," "}, true), {"a", "bc", "de"}) @@ -337,14 +253,6 @@ %!assert (strsplit (["a,bc,de"], "[, ]", true, "delimitertype", "r"), {"a", "bc", "de"}) %!assert (strsplit ("hello \t world", 1, "delimitertype", "r"), {"hello", "world"}); -%!assert (strsplit ("road to hell", " ", false, "delimitertype", "l"), {"road", "to", "hell"}) -%!assert (strsplit ("road to^hell", " ^", false, "delimitertype", "l"), {"road", "to", "hell"}) -%!assert (strsplit ("road to--hell", " -", true, "delimitertype", "l"), {"road", "to", "hell"}) -%!assert (strsplit (["a,bc";",de"], ",", false, "delimitertype", "l"), {"a", "bc", char(ones(1,0)), "de "}) -%!assert (strsplit (["a,bc";",de"], ",", true, "delimitertype", "l"), {"a", "bc", "de "}) -%!assert (strsplit (["a,bc";",de"], ", ", true, "delimitertype", "l"), {"a", "bc", "de"}) - -%!assert (strsplit ("foo\tbar", '\t', "delimitertype", "l"), {"foo", "bar"}) %!assert (strsplit ("foo\tbar", '\t', "delimitertype", "r"), {"foo", "bar"}) %!assert (strsplit ("foo\tbar", '\t', "delimitertype", "s"), {"foo", "bar"}) @@ -367,14 +275,16 @@ %! assert (a, {"a", "b"}) %! assert (m, {"\t \n"}) %!test -%! [a, m] = strsplit ("a123b", "123", "delimitertype", "legacy"); -%! assert (a, {"a", "b"}) -%! assert (m, {"123"}) -%!test %! [s, m] = strsplit ("hello \t world", 1); %! assert (s, {"hello", "world"}); %! assert (m, {" \t "}); +%% Compatibility +%! assert (strsplit ("", "a"), {""}) +%! assert (strsplit ("a", "a"), {"", ""}) +%! assert (strsplit ("aa", "a"), {"", ""}) +%! assert (strsplit ("aaa", "a"), {"", ""}) + %% Test input validation %!error strsplit () %!error strsplit ("abc", "b", true, 4)
--- a/scripts/testfun/__have_feature__.m +++ b/scripts/testfun/__have_feature__.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} __have_feature__ (feature) +## @deftypefn {Function File} {} __have_feature__ (feature) ## Undocumented internal function. ## @end deftypefn
--- a/scripts/testfun/__printf_assert__.m +++ b/scripts/testfun/__printf_assert__.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} __printf_assert__ (@dots{}) +## @deftypefn {Function File} {} __printf_assert__ (@dots{}) ## Undocumented internal function. ## @end deftypefn
--- a/scripts/testfun/__prog_output_assert__.m +++ b/scripts/testfun/__prog_output_assert__.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} __prog_output_assert__ (@var{str}) +## @deftypefn {Function File} {} __prog_output_assert__ (@var{str}) ## Undocumented internal function. ## @end deftypefn
--- a/scripts/testfun/__run_test_suite__.m +++ b/scripts/testfun/__run_test_suite__.m @@ -17,7 +17,7 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} __run_test_suite__ (@var{fcndirs}, @var{fixedtestdirs}) +## @deftypefn {Function File} {} __run_test_suite__ (@var{fcndirs}, @var{fixedtestdirs}) ## Undocumented internal function. ## @end deftypefn
--- a/scripts/testfun/rundemos.m +++ b/scripts/testfun/rundemos.m @@ -30,7 +30,7 @@ function rundemos (directory) if (nargin == 0) - dirs = strsplit (path (), pathsep (), false); + dirs = ostrsplit (path (), pathsep ()); elseif (nargin == 1) if (is_absolute_filename (directory)) dirs = {directory};
--- a/scripts/testfun/runtests.m +++ b/scripts/testfun/runtests.m @@ -30,7 +30,7 @@ function runtests (directory) if (nargin == 0) - dirs = strsplit (path (), pathsep (), false); + dirs = ostrsplit (path (), pathsep ()); elseif (nargin == 1) if (is_absolute_filename (directory)) dirs = {directory};
--- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,7 +28,7 @@ -I$(top_srcdir)/liboctave/system \ -I$(top_srcdir)/liboctave/util \ -I$(top_srcdir)/libinterp \ - -I$(top_builddir)/libinterp/interpfcn -I$(top_srcdir)/libinterp/interpfcn \ + -I$(top_builddir)/libinterp/corefcn -I$(top_srcdir)/libinterp/corefcn \ -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu AM_CFLAGS += $(WARN_CFLAGS)
--- a/test/parser.tst +++ b/test/parser.tst @@ -257,3 +257,9 @@ %! R = @(rot) [cos(rot) -sin(rot); sin(rot) cos(rot)]; %! assert (R(pi/2), [cos(pi/2), -sin(pi/2); sin(pi/2),cos(pi/2)]); +## Check that xyz is tagged as a variable in the parser. Both +## expressions must remain on one line for this test to work as +## intended. +%!test +%! xyz(1) = 1; xyz /= 1; +%! assert (xyz, 1);
--- a/test/system.tst +++ b/test/system.tst @@ -231,7 +231,7 @@ %% test/octave.test/system/fnmatch-1.m %!test -%! string_fill_char = setstr (0); +%! string_fill_char = char (0); %! assert ((fnmatch ("a*a", {"aba"; "xxxba"; "aa"}) == [1; 0; 1] %! && fnmatch ({"a*a"; "b*b"}, "bob") %! && fnmatch ("x[0-5]*", {"x1"; "x6"}) == [1; 0]