comparison mde/gui/widget/ParentContent.d @ 172:0dd49f333189

Implemented "void setContent (IContent)".
author Diggory Hardy <diggory.hardy@gmail.com>
date Wed, 29 Jul 2009 20:28:22 +0200
parents e45226d3deae
children a1ba9157510e
comparison
equal deleted inserted replaced
171:7f7b2011b759 172:0dd49f333189
160 content_.addCallback (&switchWidget); 160 content_.addCallback (&switchWidget);
161 } 161 }
162 162
163 override IContent content () { 163 override IContent content () {
164 return content_; 164 return content_;
165 }
166 override void setContent (IContent) {
167 logger.warn ("SwitchWidget: resetting content is not yet supported");
165 } 168 }
166 169
167 override bool setup (uint n, uint flags) { 170 override bool setup (uint n, uint flags) {
168 bool r = super.setup (n, flags); 171 bool r = super.setup (n, flags);
169 if (r) { 172 if (r) {
294 } 297 }
295 298
296 override IContent content () { 299 override IContent content () {
297 return content_; 300 return content_;
298 } 301 }
302 override void setContent (IContent c) {
303 auto cont = cast(IBoolContent) c;
304 if (!cont) {
305 logger.warn ("CollapsibleWidget: invalid content set: {}; ignoring", c);
306 return;
307 }
308 content_ = cont;
309 collapse (content_);
310 }
299 311
300 override void minWChange (IChildWidget widget, wdim nmw) { 312 override void minWChange (IChildWidget widget, wdim nmw) {
301 debug assert (widget is subWidgets[0]); 313 debug assert (widget is subWidgets[0]);
302 mw = nmw; 314 mw = nmw;
303 parent.minWChange (this, nmw); 315 parent.minWChange (this, nmw);
342 } 354 }
343 355
344 protected: 356 protected:
345 // callback on content_ 357 // callback on content_
346 void collapse (IContent) { 358 void collapse (IContent) {
359 if (collapsed == content_()) return;
347 collapsed = content_(); 360 collapsed = content_();
348 if (collapsed) { 361 if (collapsed) {
349 mw = mh = 0; 362 mw = mh = 0;
350 } else { 363 } else {
351 mw = subWidgets[0].minWidth; 364 mw = subWidgets[0].minWidth;
389 if (w < mw || !subWidgets[0].isWSizable) w = mw; 402 if (w < mw || !subWidgets[0].isWSizable) w = mw;
390 if (h < mh || !subWidgets[0].isHSizable) h = mh; 403 if (h < mh || !subWidgets[0].isHSizable) h = mh;
391 return true; 404 return true;
392 } 405 }
393 406
407 override void setContent (IContent c) {
408 subWidgets[0].setContent = c;
409 }
410
394 override void setWidth (wdim nw, int) { 411 override void setWidth (wdim nw, int) {
395 debug assert (nw >= mw); 412 debug assert (nw >= mw);
396 w = nw; 413 w = nw;
397 subWidgets[0].setWidth (w - border.x1 - border.x2, -1); 414 subWidgets[0].setWidth (w - border.x1 - border.x2, -1);
398 } 415 }