Mercurial > projects > mde
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 } |