Mercurial > octave
changeset 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 | 3293cd2651fb |
children | cc9da21511c1 |
files | libgui/graphics/PushButtonControl.cc libgui/graphics/ToggleButtonControl.cc libgui/graphics/ToggleButtonControl.h |
diffstat | 3 files changed, 50 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/graphics/PushButtonControl.cc Tue Aug 14 11:17:26 2018 -0700 +++ b/libgui/graphics/PushButtonControl.cc Tue Aug 14 11:52:38 2018 -0700 @@ -54,7 +54,13 @@ QPushButton *btn) : ButtonControl (go, btn) { + uicontrol::properties& up = properties<uicontrol> (); + btn->setAutoFillBackground (true); + octave_value cdat = up.get_cdata (); + QImage img = Utils::makeImageFromCData (cdat, + cdat.rows (), cdat.columns ()); + btn->setIcon (QIcon (QPixmap::fromImage (img))); } PushButtonControl::~PushButtonControl (void) @@ -72,6 +78,16 @@ btn->setText (Utils::fromStdString (up.get_string_string ())); break; + 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;
--- 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; + } + } + };
--- a/libgui/graphics/ToggleButtonControl.h Tue Aug 14 11:17:26 2018 -0700 +++ b/libgui/graphics/ToggleButtonControl.h Tue Aug 14 11:52:38 2018 -0700 @@ -37,6 +37,9 @@ ~ToggleButtonControl (void); static ToggleButtonControl * create (const graphics_object& go); + + protected: + void update (int pId); }; }