]> git.lyx.org Git - lyx.git/blob - src/frontends/gtk/GTimeout.C
The Gtk patch.
[lyx.git] / src / frontends / gtk / GTimeout.C
1 /**
2  * \file gtk/GTimeout.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Baruch Even
7  * \author Michael Koziarski
8  * \author Huang Ying
9  *
10  * Full author contact details are available in file CREDITS
11  */
12
13 #include <config.h>
14 #include <gtkmm.h>
15
16 #include "GTimeout.h"
17 #include "debug.h"
18
19
20 Timeout::Timeout(unsigned int msec, Type t)
21         : pimpl_(new GTimeout(*this)), type(t), timeout_ms(msec)
22 {}
23
24
25 GTimeout::GTimeout(Timeout & owner)
26         : Timeout::Impl(owner)
27 {
28 }
29
30
31 void GTimeout::reset()
32 {
33         stop();
34 }
35
36
37 bool GTimeout::running() const
38 {
39         return running_;
40 }
41
42
43 void GTimeout::start()
44 {
45         if (conn_.connected()) {
46                 lyxerr << "Timeout::start: already running!" << std::endl;
47                 stop();
48         }
49
50         conn_ = Glib::signal_timeout().connect(
51                          SigC::slot(*this, &GTimeout::timeoutEvent),
52                          timeout_ms()
53                         );
54         running_ = true;
55 }
56
57
58 void GTimeout::stop()
59 {
60         conn_.disconnect();
61         running_ = false;
62 }
63
64
65 bool GTimeout::timeoutEvent()
66 {
67         emit();
68         return false; // discontinue emitting timeouts.
69 }