Mercurial > octave
diff libgui/graphics/ToggleButtonControl.cc @ 25788:88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
* ToggleButtonControl.h (update): Add protected function to class.
* ToggleButtonControl.cc (ToggleButtonControl): In constructor,
create a QImage from "cdata" property and apply it using setIcon().
* ToggleButtonControl.cc (update): New function to handle changes to
object properties. Decode "ID_CDATA" in switch statement. Create a QImage
from "cdata" property and apply it using setIcon().
* PushButtonControl.cc (PushButtonControl): In constructor,
create a QImage from "cdata" property and apply it using setIcon().
* PushButtonControl.cc (update): Decode "ID_CDATA" in switch statement. Create
a QImage from "cdata" property and apply it using setIcon().
author | Rik <rik@octave.org> |
---|---|
date | Tue, 14 Aug 2018 11:52:38 -0700 |
parents | 6652d3823428 |
children | 1a12d4369beb |
line wrap: on
line diff
--- a/libgui/graphics/ToggleButtonControl.cc Tue Aug 14 11:17:26 2018 -0700 +++ b/libgui/graphics/ToggleButtonControl.cc Tue Aug 14 11:52:38 2018 -0700 @@ -51,7 +51,7 @@ } ToggleButtonControl::ToggleButtonControl (const graphics_object& go, - QPushButton *btn) + QPushButton *btn) : ButtonControl (go, btn) { Object *parent = Object::parentObject (go); @@ -59,11 +59,41 @@ if (btnGroup) btnGroup->addButton (btn); + uicontrol::properties& up = properties<uicontrol> (); + btn->setCheckable (true); btn->setAutoFillBackground (true); + octave_value cdat = up.get_cdata (); + QImage img = Utils::makeImageFromCData (cdat, + cdat.rows (), cdat.columns ()); + btn->setIcon (QIcon (QPixmap::fromImage (img))); } ToggleButtonControl::~ToggleButtonControl (void) { } + void + ToggleButtonControl::update (int pId) + { + uicontrol::properties& up = properties<uicontrol> (); + QPushButton *btn = qWidget<QPushButton> (); + + switch (pId) + { + case uicontrol::properties::ID_CDATA: + { + octave_value cdat = up.get_cdata (); + QImage img = Utils::makeImageFromCData (cdat, + cdat.rows (), + cdat.columns ()); + btn->setIcon (QIcon (QPixmap::fromImage (img))); + } + break; + + default: + BaseControl::update (pId); + break; + } + } + };