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