Mercurial > octave
view libinterp/dldfcn/__fltk_uigetfile__.cc @ 30888:32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
For new users of Octave it is best to show explicit calling forms
in the documentation and to show a return argument when it exists.
* __ftp__.cc, __magick_read__.cc, __pchip_deriv__.cc, bitfcns.cc, bsxfun.cc,
call-stack.cc, cellfun.cc, chol.cc, conv2.cc, data.cc, debug.cc, defaults.cc,
det.cc, dirfns.cc, display.cc, dot.cc, error.cc, event-manager.cc, fft.cc,
fft2.cc, fftn.cc, file-io.cc, getgrent.cc, getpwent.cc, getrusage.cc,
graphics.cc, hash.cc, help.cc, input.cc, interpreter.cc, kron.cc, load-path.cc,
mappers.cc, max.cc, nproc.cc, oct-hist.cc, pager.cc, pinv.cc, psi.cc, rand.cc,
settings.cc, sighandlers.cc, stream-euler.cc, strfns.cc, symtab.cc,
syscalls.cc, sysdep.cc, time.cc, toplev.cc, utils.cc, variables.cc,
__fltk_uigetfile__.cc, audiodevinfo.cc, audioread.cc, fftw.cc, ov-bool-mat.cc,
ov-cell.cc, ov-class.cc, ov-classdef.cc, ov-fcn-handle.cc, ov-java.cc,
ov-struct.cc, ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc, octave.cc, profiler.cc:
Add return arguments to @deftypefn macros where they were missing.
Attempt to use standard naming convention for return variables.
Occasionally improved the docstring itself by re-wording or adding code
examples.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 04 Apr 2022 10:31:48 -0700 |
parents | 796f54d4ddbf |
children | e88a07dec498 |
line wrap: on
line source
//////////////////////////////////////////////////////////////////////// // // Copyright (C) 2010-2022 The Octave Project Developers // // See the file COPYRIGHT.md in the top-level directory of this // distribution or <https://octave.org/copyright/>. // // 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 // <https://www.gnu.org/licenses/>. // //////////////////////////////////////////////////////////////////////// #if defined (HAVE_CONFIG_H) # include "config.h" #endif #if defined (HAVE_FLTK) # if defined (WIN32) # define WIN32_LEAN_AND_MEAN # endif # include <string> # include <FL/Fl.H> # include <FL/Fl_File_Chooser.H> // FLTK headers may include X11/X.h which defines Complex, and that // conflicts with Octave's Complex typedef. We don't need the X11 // Complex definition in this file, so remove it before including Octave // headers which may require Octave's Complex typedef. # undef Complex #endif #include "dMatrix.h" #include "file-ops.h" #include "Cell.h" #include "defun-dld.h" #include "errwarn.h" #include "ov.h" OCTAVE_NAMESPACE_BEGIN DEFUN_DLD (__fltk_uigetfile__, args, , doc: /* -*- texinfo -*- @deftypefn {} {[@var{fname}, @var{fpath}, @var{fltidx}] =} __fltk_uigetfile__ (@dots{}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_FLTK) // Expected argument list: // // args(0) ... FileFilter in fltk format // args(1) ... Title // args(2) ... Default Filename // args(3) ... SelectValue "on"/"off"/"dir"/"create" octave_value_list retval (3, octave_value (0)); std::string file_filter = args(0).string_value (); std::string title = args(1).string_value (); std::string default_name = args(2).string_value (); int multi_type = Fl_File_Chooser::SINGLE; std::string flabel = "Filename:"; std::string multi = args(3).string_value (); if (multi == "on") multi_type = Fl_File_Chooser::MULTI; else if (multi == "dir") { multi_type = Fl_File_Chooser::DIRECTORY; flabel = "Directory:"; } else if (multi == "create") multi_type = Fl_File_Chooser::CREATE; Fl_File_Chooser::filename_label = flabel.c_str (); Fl_File_Chooser fc (default_name.c_str (), file_filter.c_str (), multi_type, title.c_str ()); fc.preview (0); if (multi_type == Fl_File_Chooser::CREATE) fc.ok_label ("Save"); fc.show (); while (fc.shown ()) Fl::wait (); if (fc.value ()) { int file_count = fc.count (); std::string fname; // FLTK uses forward slash even for Windows std::string sep = "/"; std::size_t idx; if (file_count == 1 && multi_type != Fl_File_Chooser::DIRECTORY) { fname = fc.value (); idx = fname.find_last_of (sep); retval(0) = fname.substr (idx + 1); } else { Cell file_cell = Cell (file_count, 1); for (octave_idx_type n = 1; n <= file_count; n++) { fname = fc.value (n); idx = fname.find_last_of (sep); file_cell(n - 1) = fname.substr (idx + 1); } retval(0) = file_cell; } if (multi_type == Fl_File_Chooser::DIRECTORY) retval(0) = sys::file_ops::native_separator_path (std::string (fc.value ())); else { retval(1) = sys::file_ops::native_separator_path (std::string (fc.directory ()) + sep); retval(2) = fc.filter_value () + 1; } } fc.hide (); Fl::flush (); return retval; #else octave_unused_parameter (args); err_disabled_feature ("__fltk_uigetfile__", "OpenGL and FLTK"); #endif } /* ## No test needed for internal helper function. %!assert (1) */ OCTAVE_NAMESPACE_END