]> git.lyx.org Git - lyx.git/blob - src/Timeout.C
update all .po files ot latestes pot
[lyx.git] / src / Timeout.C
1 /* This file is part of
2  * ====================================================== 
3  * 
4  *           LyX, The Document Processor
5  *        
6  *           Copyright 1995 Matthias Ettrich
7  *           Copyright 1995-2000 The LyX Team.
8  *
9  * ====================================================== */
10
11 #ifdef __GNUG__
12 #pragma implementation
13 #endif
14
15 #include <config.h>
16
17 #include FORMS_H_LOCATION
18
19 #include "Timeout.h"
20 #include "debug.h"
21
22 using std::endl;
23
24 extern "C" {
25         static
26         void C_intern_timeout_cb(int, void * data) 
27         {
28                 Timeout * to = static_cast<Timeout*>(data);
29                 to->emit();
30         }
31 }
32
33
34 Timeout::Timeout()
35         : type(ONETIME), timeout_ms(0), timeout_id(-1)
36 {}
37
38
39 Timeout::Timeout(int msec, Type t)
40         : type(t), timeout_ms(msec), timeout_id(-1)
41 {}
42
43
44 Timeout::~Timeout() 
45 {
46         stop();
47 }
48
49
50 void Timeout::restart()
51 {
52         stop();
53         start();
54 }
55
56
57 void Timeout::start()
58 {
59         if (timeout_id != -1)
60                 lyxerr << "Timeout::start: already running!" << endl;
61         timeout_id = fl_add_timeout(timeout_ms,
62                                     C_intern_timeout_cb, this);
63 }
64         
65
66 void Timeout::stop()
67 {
68         if (timeout_id != -1) {
69                 fl_remove_timeout(timeout_id);
70                 timeout_id = -1;
71         }
72 }
73
74
75 void Timeout::emit()
76 {
77         timeout_id = -1;
78         timeout.emit();
79         if (type == CONTINOUS)
80                 start();
81 }
82         
83
84 void Timeout::setType(Type t)
85 {
86         type = t;
87 }
88
89
90 void Timeout::setTimeout(int msec)
91 {
92         timeout_ms = msec;
93 }