]> git.lyx.org Git - lyx.git/blob - src/frontends/gnome/GERT.C
fix tooltips in toolbar
[lyx.git] / src / frontends / gnome / GERT.C
1 /* This file is part of
2  * =================================================
3  * 
4  *          LyX, The Document Processor
5  *          Copyright 1995-2000 The LyX Team.
6  *
7  * ================================================= 
8  *
9  * \author Michael Koziarski <michael@koziarski.org>
10  */
11
12 #ifdef __GNUG__
13 #pragma implementation
14 #endif
15
16 #include <config.h>
17
18 #include "gnomeBC.h"
19 #include "GERT.h"
20
21 #include <gtkmm/radiobutton.h>
22 #include <gtkmm/button.h>
23
24 GERT::GERT(ControlERT & c)
25         : FormCB<ControlERT>(c, "GERT")
26 {}
27
28
29 GERT::~GERT()
30 {}
31
32
33 void GERT::build()
34 {
35         // Connect the buttons.
36         close_btn()->signal_clicked().connect(SigC::slot(*this, &GERT::OKClicked));
37
38
39         // Make sure everything is in the correct state.
40         bc().refresh();
41         
42         // Manage the read-only aware widgets.
43         bc().addReadOnly(open());
44         bc().addReadOnly(inlined());
45         bc().addReadOnly(collapsed());
46
47 }
48
49
50 void GERT::connect_signals()
51 {
52         slot_open = open()->signal_clicked().connect(
53                 SigC::slot(*this, &GERT::ApplyClicked)
54                 );
55         slot_collapsed = collapsed()->signal_clicked().connect(
56                 SigC::slot(*this, &GERT::ApplyClicked)
57                 );
58         slot_inlined = inlined()->signal_clicked().connect(
59                 SigC::slot(*this, &GERT::ApplyClicked)
60                 );
61 }
62
63
64 void GERT::disconnect_signals()
65 {
66         slot_open.disconnect();
67         slot_collapsed.disconnect();
68         slot_inlined.disconnect();
69 }
70
71
72 void GERT::apply()
73 {
74
75         if (open()->get_active())
76                 controller().params().status = InsetERT::Open;
77         else if (collapsed()->get_active())
78                 controller().params().status = InsetERT::Collapsed;
79         else 
80                 controller().params().status = InsetERT::Inlined;
81
82 }
83
84
85 void GERT::update()
86 {
87         disconnect_signals();
88         switch (controller().params().status) {
89         case InsetERT::Open:
90                 open()->set_active(true);
91                 break;
92         case InsetERT::Collapsed:
93                 collapsed()->set_active(true);
94                 break;
95         case InsetERT::Inlined:
96                 inlined()->set_active(true);
97                 break;
98         }
99         connect_signals();
100
101 }
102
103 Gtk::Button * GERT::close_btn() const 
104 {
105         return getWidget<Gtk::Button>("r_close_btn");
106 }
107 Gtk::RadioButton * GERT::open() const 
108 {
109         return getWidget<Gtk::RadioButton>("r_open");
110 }
111 Gtk::RadioButton * GERT::collapsed() const 
112 {
113         return getWidget<Gtk::RadioButton>("r_collapsed");
114 }
115 Gtk::RadioButton * GERT::inlined() const 
116 {
117         return getWidget<Gtk::RadioButton>("r_inlined");
118 }