# HG changeset patch # User Rik # Date 1534272758 25200 # Node ID 88e87c69c8b8dbca9a75b00b6721c38daadc15d0 # Parent 3293cd2651fbd7eaf05b1fec5dbaa0612656696d 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(). diff -r 3293cd2651fb -r 88e87c69c8b8 libgui/graphics/PushButtonControl.cc --- 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 (); + 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; diff -r 3293cd2651fb -r 88e87c69c8b8 libgui/graphics/ToggleButtonControl.cc --- 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 (); + 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 (); + QPushButton *btn = qWidget (); + + 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; + } + } + }; diff -r 3293cd2651fb -r 88e87c69c8b8 libgui/graphics/ToggleButtonControl.h --- 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); }; }