]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/helper_funcs.h
add shortcuts to filedialogs directory buttons; small gnome patch from Michael
[lyx.git] / src / frontends / controllers / helper_funcs.h
1 // -*- C++ -*-
2 /* This file is part of
3  * ====================================================== 
4  *
5  *           LyX, The Document Processor
6  *
7  *           Copyright 2001 The LyX Team.
8  *
9  * ======================================================
10  *
11  * \file ControlCitation.h
12  * \author Angus Leeming <a.leeming@ic.ac.uk>
13  */
14
15 #ifndef HELPERFUNCS_H
16 #define HELPERFUNCS_H
17
18 #include <utility> // pair
19
20 #ifdef __GNUG__
21 #pragma interface
22 #endif
23
24 /** Functions to convert a string to/from a vector. */
25
26 ///
27 string const
28 getStringFromVector(std::vector<string> const & vec, string const & delim=",");
29
30 ///
31 std::vector<string> const
32 getVectorFromString(string const & str, string const & delim=",");
33
34 class LyXView;
35  
36 /** Launch a file dialog and return the chosen file.
37     filename: a suggested filename.
38     title: the title of the dialog.
39     pattern: *.ps etc.
40     dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
41 */
42 string const browseFile(LyXView *lv, string const & filename,
43                         string const & title,
44                         string const & pattern, 
45                         std::pair<string,string> const & dir1 = std::make_pair(string(), string()),
46                         std::pair<string,string> const & dir2 = std::make_pair(string(), string()));
47
48
49 /// Returns a vector of units that can be used to create a valid LaTeX length.
50 std::vector<string> const getLatexUnits();
51
52
53 /** Functions to extract vectors of the first and second elems from a
54     vector<pair<A,B> >
55 */
56
57 template<class Pair>
58 struct firster {
59         typedef typename Pair::first_type first_type;
60         first_type const & operator()(Pair const & p) { return p.first; }
61 };
62
63 template<class Pair>
64 struct seconder {
65         typedef typename Pair::second_type second_type;
66         second_type const & operator()(Pair const & p) { return p.second; }
67 };
68
69 ///
70 template<class Pair>
71 std::vector<typename Pair::first_type> const
72 getFirst(std::vector<Pair> const & pr)
73 {
74         std::vector<typename Pair::first_type> tmp(pr.size());
75         std::transform(pr.begin(), pr.end(), tmp.begin(), firster<Pair>());
76         return tmp;
77 }
78
79 ///
80 template<class Pair>
81 std::vector<typename Pair::second_type> const
82 getSecond(std::vector<Pair> const & pr)
83 {
84         std::vector<typename Pair::second_type> tmp(pr.size());
85         std::transform(pr.begin(), pr.end(), tmp.begin(), seconder<Pair>());
86         return tmp;
87 }
88
89
90 #endif // HELPERFUNCS_H