Mercurial > octave-nkf
diff src/DLD-FUNCTIONS/__init_fltk__.cc @ 12263:c626741871a0 release-3-4-x
Allow ui file function to work if gnuplot is the selected toolkit and fltk is available
author | Kai Habel <kai.habel@gmx.de> |
---|---|
date | Thu, 27 Jan 2011 17:58:19 +0100 |
parents | f4689107dd8c |
children | be90f9e4548e |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/__init_fltk__.cc Thu Jan 27 06:37:52 2011 -0500 +++ b/src/DLD-FUNCTIONS/__init_fltk__.cc Thu Jan 27 17:58:19 2011 +0100 @@ -2036,103 +2036,5 @@ return octave_value(mode_str); } -DEFUN_DLD (__fltk_uigetfile__, args, , - "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} __fltk_uigetfile__ (@dots{})\n\ -Undocumented internal function.\n\ -@end deftypefn") -{ - // This function should be called by uigetfile.m - // Error checking should be done in uigetfile.m! - // - // Expected argument list - // args(0) ... FileFilter in fltk format - // args(1) ... Title - // args(2) ... Default Filename - // args(3) ... PostionValue [x,y] - // args(4) ... SelectValue "on"/"off"/"dir"/"create" - - std::string file_filter, title, default_name, multi; - if (args(0).is_string ()) - file_filter = args(0).string_value(); - - if (args(1).is_string ()) - title = args(1).string_value(); - - if (args(2).is_string ()) - default_name = args(2).string_value(); - - if (args(3).is_real_matrix ()) - Matrix pos = args(3).matrix_value(); - - int multi_type = Fl_File_Chooser::SINGLE; - std::string flabel = "Filename:"; - if (args(4).is_string ()) - { - multi = args(4).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 = new Fl_File_Chooser(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 (); } - - octave_value_list fargs, retval; - - retval(0) = octave_value(0); - retval(1) = octave_value(0); - retval(2) = octave_value(0); - - if (fc->value() != NULL) - { - int file_count = fc->count (); - std::string fname; - std::string sep = file_ops::dir_sep_str (); - 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) = std::string(fc->value ()); - else - { - retval(1) = std::string(fc->directory ()) + sep; - retval(2) = fc->filter_value(); - } - } - - return retval; -} #endif