]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/ButtonController.C
Flatten the ButtonController tree by splitting it into a Controller and
[lyx.git] / src / frontends / controllers / ButtonController.C
1 /**
2  * \file ButtonController.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Allan Rae
7  *
8  * Full author contact details are available in file CREDITS
9  */
10
11
12 #include <config.h>
13 #include "ButtonController.h"
14 #include "BCView.h"
15 #include "support/LAssert.h"
16 #include "debug.h"
17
18
19 ButtonController::~ButtonController()
20 {}
21
22
23 BCView & ButtonController::view() const
24 {
25         lyx::Assert(view_.get());
26         return *view_.get();
27 }
28
29 void ButtonController::view(BCView * view)
30 {
31         view_.reset(view);
32 }
33
34
35 ButtonPolicy & ButtonController::bp() const
36 {
37         lyx::Assert(bp_.get());
38         return *bp_.get();
39 }
40
41 void ButtonController::bp(ButtonPolicy * bp)
42 {
43         bp_.reset(bp);
44 }
45
46
47 void ButtonController::refresh()
48 {
49         view().refresh();
50 }
51
52                 
53 void ButtonController::refreshReadOnly()
54 {
55         view().refreshReadOnly();
56 }
57
58
59 void ButtonController::ok()
60 {
61         input(ButtonPolicy::SMI_OKAY);
62 }
63
64
65 void ButtonController::input(ButtonPolicy::SMInput in)
66 {
67         if (ButtonPolicy::SMI_NOOP == in)
68                 return;
69         bp().input(in);
70         view().refresh();
71 }
72
73
74 void ButtonController::apply()
75 {
76         input(ButtonPolicy::SMI_APPLY);
77 }
78
79
80 void ButtonController::cancel()
81 {
82         input(ButtonPolicy::SMI_CANCEL);
83 }
84
85
86 void ButtonController::restore()
87 {
88         input(ButtonPolicy::SMI_RESTORE);
89 }
90
91
92 void ButtonController::hide()
93 {
94         input(ButtonPolicy::SMI_HIDE);
95 }
96
97
98 void ButtonController::valid(bool v)
99 {
100         if (v) {
101                 input(ButtonPolicy::SMI_VALID);
102         } else {
103                 input(ButtonPolicy::SMI_INVALID);
104         }
105 }
106
107
108 void ButtonController::invalid()
109 {
110         input(ButtonPolicy::SMI_INVALID);
111 }
112
113
114 bool ButtonController::readOnly(bool ro)
115 {
116         lyxerr[Debug::GUI] << "Setting controller ro: " << ro << std::endl;
117
118         if (ro) {
119                 bp().input(ButtonPolicy::SMI_READ_ONLY);
120         } else {
121                 bp().input(ButtonPolicy::SMI_READ_WRITE);
122         }
123         view().refreshReadOnly();
124         view().refresh();
125         return ro;
126 }
127
128
129 void ButtonController::readWrite()
130 {
131         readOnly(false);
132 }