summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Slit.cc100
1 files changed, 92 insertions, 8 deletions
diff --git a/src/Slit.cc b/src/Slit.cc
index c349230..c91a7b5 100644
--- a/src/Slit.cc
+++ b/src/Slit.cc
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Slit.cc,v 1.64 2003/06/22 14:17:17 fluxgen Exp $ 25// $Id: Slit.cc,v 1.65 2003/06/23 13:32:30 fluxgen Exp $
26 26
27#include "Slit.hh" 27#include "Slit.hh"
28 28
@@ -72,6 +72,83 @@
72#include <algorithm> 72#include <algorithm>
73using namespace std; 73using namespace std;
74 74
75template<>
76void FbTk::Resource<Slit::Placement>::setFromString(const char *strval) {
77 if (strcasecmp(strval, "TopLeft")==0)
78 m_value = Slit::TOPLEFT;
79 else if (strcasecmp(strval, "CenterLeft")==0)
80 m_value = Slit::CENTERLEFT;
81 else if (strcasecmp(strval, "BottomLeft")==0)
82 m_value = Slit::BOTTOMLEFT;
83 else if (strcasecmp(strval, "TopCenter")==0)
84 m_value = Slit::TOPCENTER;
85 else if (strcasecmp(strval, "BottomCenter")==0)
86 m_value = Slit::BOTTOMCENTER;
87 else if (strcasecmp(strval, "TopRight")==0)
88 m_value = Slit::TOPRIGHT;
89 else if (strcasecmp(strval, "CenterRight")==0)
90 m_value = Slit::CENTERRIGHT;
91 else if (strcasecmp(strval, "BottomRight")==0)
92 m_value = Slit::BOTTOMRIGHT;
93 else
94 setDefaultValue();
95}
96
97template<>
98void FbTk::Resource<Slit::Direction>::setFromString(const char *strval) {
99 if (strcasecmp(strval, "Vertical") == 0)
100 m_value = Slit::VERTICAL;
101 else if (strcasecmp(strval, "Horizontal") == 0)
102 m_value = Slit::HORIZONTAL;
103 else
104 setDefaultValue();
105}
106
107string FbTk::Resource<Slit::Placement>::getString() {
108 switch (m_value) {
109 case Slit::TOPLEFT:
110 return string("TopLeft");
111 break;
112 case Slit::CENTERLEFT:
113 return string("CenterLeft");
114 break;
115 case Slit::BOTTOMLEFT:
116 return string("BottomLeft");
117 break;
118 case Slit::TOPCENTER:
119 return string("TopCenter");
120 break;
121 case Slit::BOTTOMCENTER:
122 return string("BottomCenter");
123 break;
124 case Slit::TOPRIGHT:
125 return string("TopRight");
126 break;
127 case Slit::CENTERRIGHT:
128 return string("CenterRight");
129 break;
130 case Slit::BOTTOMRIGHT:
131 return string("BottomRight");
132 break;
133 }
134 //default string
135 return string("BottomRight");
136}
137
138template<>
139string FbTk::Resource<Slit::Direction>::getString() {
140 switch (m_value) {
141 case Slit::VERTICAL:
142 return string("Vertical");
143 break;
144 case Slit::HORIZONTAL:
145 return string("Horizontal");
146 break;
147 }
148 // default string
149 return string("Vertical");
150}
151
75namespace { 152namespace {
76 153
77class SlitClientMenuItem: public FbTk::MenuItem { 154class SlitClientMenuItem: public FbTk::MenuItem {
@@ -275,19 +352,26 @@ void Slit::updateStrut() {
275 int left = 0, right = 0, top = 0, bottom = 0; 352 int left = 0, right = 0, top = 0, bottom = 0;
276 switch (placement()) { 353 switch (placement()) {
277 case TOPLEFT: 354 case TOPLEFT:
278 top = height(); 355 if (direction() == HORIZONTAL)
279 left = width(); 356 top = height();
357 else
358 left = width();
280 break; 359 break;
281 case TOPCENTER: 360 case TOPCENTER:
282 top = height(); 361 if (direction() == HORIZONTAL)
362 top = height();
283 break; 363 break;
284 case TOPRIGHT: 364 case TOPRIGHT:
285 right = width(); 365 if (direction() == HORIZONTAL)
286 top = height(); 366 top = height();
367 else
368 right = width();
287 break; 369 break;
288 case BOTTOMLEFT: 370 case BOTTOMLEFT:
289 bottom = height(); 371 if (direction() == HORIZONTAL)
290 left = width(); 372 bottom = height();
373 else
374 left = width();
291 break; 375 break;
292 case BOTTOMCENTER: 376 case BOTTOMCENTER:
293 // would be strange to have it request size on vertical direction 377 // would be strange to have it request size on vertical direction