]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/helper_funcs.C
port the graphics dialog to the new scheme and get rid of the ControlInset
[lyx.git] / src / frontends / controllers / helper_funcs.C
index d23cd8868f06dc6a170396538ff7aa617ad83a1b..34ac0f1207a9a156061d489d7cd1f5c9a26cc61d 100644 (file)
@@ -10,9 +10,6 @@
 
 #include <vector>
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
 
 #include <config.h>
 #include "LString.h"
@@ -29,7 +26,7 @@ using std::vector;
 using std::make_pair;
 
 
-string const browseFile(LyXView * lv, string const & filename,
+string const browseFile(string const & filename,
                        string const & title,
                        string const & pattern,
                        bool save,
@@ -40,12 +37,12 @@ string const browseFile(LyXView * lv, string const & filename,
        if (!filename.empty())
                lastPath = OnlyPath(filename);
 
-       FileDialog fileDlg(lv, title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
+       FileDialog fileDlg(title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
 
        FileDialog::Result result;
 
        while (true) {
-               if (save) 
+               if (save)
                        result = fileDlg.save(lastPath, pattern,
                                OnlyFilename(filename));
                else
@@ -69,17 +66,17 @@ string const browseFile(LyXView * lv, string const & filename,
 }
 
 
-string const browseRelFile(LyXView * lv, string const & filename,
+string const browseRelFile(string const & filename,
                        string const & refpath,
                        string const & title,
                        string const & pattern,
-                       bool save,
+                       bool save,
                        pair<string,string> const & dir1,
                        pair<string,string> const & dir2)
 {
        string const fname = MakeAbsPath(filename, refpath);
 
-       string const outname = browseFile(lv, fname, title, pattern, save,
+       string const outname = browseFile(fname, title, pattern, save,
                                          dir1, dir2);
        string const reloutname = MakeRelPath(outname, refpath);
        if (prefixIs(reloutname, "../"))
@@ -89,6 +86,40 @@ string const browseRelFile(LyXView * lv, string const & filename,
 }
 
 
+string const browseDir(string const & pathname,
+                       string const & title,
+                       pair<string,string> const & dir1,
+                       pair<string,string> const & dir2)
+{
+       string lastPath(".");
+       if (!pathname.empty())
+               lastPath = OnlyPath(pathname);
+
+       FileDialog fileDlg(title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
+
+       FileDialog::Result result;
+
+       while (true) {
+               result = fileDlg.opendir(lastPath,
+                               OnlyFilename(pathname));
+
+               if (result.second.empty())
+                       return result.second;
+
+               lastPath = OnlyPath(result.second);
+
+               if (result.second.find_first_of("#~$% ") == string::npos)
+                       break;
+
+               Alert::alert(_("directory name can't contain any "
+                       "of these characters:"),
+                       _("space, '#', '~', '$' or '%'."));
+       }
+
+       return result.second;
+}
+
+
 // sorry this is just a temporary hack we should include vspace.h! (Jug)
 extern const char * stringFromUnit(int);