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