]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/helper_funcs.h
John's character.C patch (bug fix).
[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,
46                         std::pair<string,string> const & dir2);
47
48 /** Functions to extract vectors of the first and second elems from a
49     vector<pair<A,B> >
50 */
51
52 template<class Pair>
53 struct firster {
54         typedef typename Pair::first_type first_type;
55         first_type const & operator()(Pair const & p) { return p.first; }
56 };
57
58 template<class Pair>
59 struct seconder {
60         typedef typename Pair::second_type second_type;
61         second_type const & operator()(Pair const & p) { return p.second; }
62 };
63
64 ///
65 template<class Pair>
66 std::vector<typename Pair::first_type> const
67 getFirst(std::vector<Pair> const & pr)
68 {
69         std::vector<typename Pair::first_type> tmp(pr.size());
70         std::transform(pr.begin(), pr.end(), tmp.begin(), firster<Pair>());
71         return tmp;
72 }
73
74 ///
75 template<class Pair>
76 std::vector<typename Pair::second_type> const
77 getSecond(std::vector<Pair> const & pr)
78 {
79         std::vector<typename Pair::second_type> tmp(pr.size());
80         std::transform(pr.begin(), pr.end(), tmp.begin(), seconder<Pair>());
81         return tmp;
82 }
83
84
85 #endif // HELPERFUNCS_H