Mercurial > octave
annotate libgui/graphics/ToggleButtonControl.cc @ 29992:6ea4a84df9c7
rename QtHandles namespace to octave
To simplify the codebase, replace QtHandles top-level namespace by
octave. Since the header files for the Qt graphics code are not
installed, this change shouldn't cause trouble for any external
packages so we shouldn't need to provide an alias, even temporarily.
Modified files: BaseControl.cc, BaseControl.h, ButtonControl.cc,
ButtonControl.h, ButtonGroup.cc, ButtonGroup.h, Canvas.cc, Canvas.h,
CheckBoxControl.cc, CheckBoxControl.h, Container.cc, Container.h,
ContextMenu.cc, ContextMenu.h, EditControl.cc, EditControl.h,
Figure.cc, Figure.h, FigureWindow.cc, FigureWindow.h, GLCanvas.cc,
GLCanvas.h, GenericEventNotify.h, KeyMap.cc, KeyMap.h,
ListBoxControl.cc, ListBoxControl.h, Logger.cc, Logger.h, Menu.cc,
Menu.h, MenuContainer.h, Object.cc, Object.h, ObjectProxy.cc,
ObjectProxy.h, Panel.cc, Panel.h, PopupMenuControl.cc,
PopupMenuControl.h, PushButtonControl.cc, PushButtonControl.h,
PushTool.cc, PushTool.h, QtHandlesUtils.cc, QtHandlesUtils.h,
RadioButtonControl.cc, RadioButtonControl.h, SliderControl.cc,
SliderControl.h, Table.cc, Table.h, TextControl.cc, TextControl.h,
TextEdit.cc, TextEdit.h, ToggleButtonControl.cc,
ToggleButtonControl.h, ToggleTool.cc, ToggleTool.h, ToolBar.cc,
ToolBar.h, ToolBarButton.cc, ToolBarButton.h, annotation-dialog.cc,
qt-graphics-toolkit.cc, qt-graphics-toolkit.h, and graphics-init.cc.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 18 Aug 2021 00:21:26 -0400 |
parents | 7854d5752dd2 |
children | d4d83344d653 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
28225
diff
changeset
|
3 // Copyright (C) 2011-2021 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
27 # include "config.h" |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 #endif |
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 |
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 #include <QPushButton> |
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 |
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 #include "ToggleButtonControl.h" |
21824
6780a8657be3
Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents:
21724
diff
changeset
|
33 #include "ButtonGroup.h" |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 #include "Container.h" |
18505
fb96b7f55242
rename file to avoid clash on case-insenstive filesystems (bug #41658)
John W. Eaton <jwe@octave.org>
parents:
18501
diff
changeset
|
35 #include "QtHandlesUtils.h" |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
37 #include "octave-qobject.h" |
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
38 |
29992
6ea4a84df9c7
rename QtHandles namespace to octave
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
39 namespace octave |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 { |
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
42 ToggleButtonControl* |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
43 ToggleButtonControl::create (octave::base_qobject& oct_qobj, |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
44 octave::interpreter& interp, |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
45 const graphics_object& go) |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
46 { |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
47 Object *parent = parentObject (interp, go); |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
49 if (parent) |
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
50 { |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23447
diff
changeset
|
51 Container *container = parent->innerContainer (); |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
53 if (container) |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
54 return new ToggleButtonControl (oct_qobj, interp, go, |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
55 new QPushButton (container)); |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
56 } |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
57 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
58 return nullptr; |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
59 } |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
61 ToggleButtonControl::ToggleButtonControl (octave::base_qobject& oct_qobj, |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
62 octave::interpreter& interp, |
27645
028205a91a07
eliminate global access to Octave resources in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
63 const graphics_object& go, |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
64 QPushButton *btn) |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
65 : ButtonControl (oct_qobj, interp, go, btn) |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
66 { |
27647
2a506bc4a7af
eliminate global access to Octave interpreter in qt graphics classes
John W. Eaton <jwe@octave.org>
parents:
27645
diff
changeset
|
67 Object *parent = parentObject (interp, go); |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23447
diff
changeset
|
68 ButtonGroup *btnGroup = dynamic_cast<ButtonGroup *>(parent); |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
69 if (btnGroup) |
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
70 btnGroup->addButton (btn); |
21824
6780a8657be3
Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents:
21724
diff
changeset
|
71 |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
72 uicontrol::properties& up = properties<uicontrol> (); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
73 |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
74 btn->setCheckable (true); |
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
75 btn->setAutoFillBackground (true); |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
76 octave_value cdat = up.get_cdata (); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
77 QImage img = Utils::makeImageFromCData (cdat, |
28225
fbced93c9704
Fix reversal of width and height in uicontrol icon creation (bug #58144).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
78 cdat.columns (), cdat.rows ()); |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
79 btn->setIcon (QIcon (QPixmap::fromImage (img))); |
28227
a56ee7986ea4
Use size from 'CData' property of uicontrol to set icon size of buttons (bug #58144).
Rik <rik@octave.org>
parents:
28225
diff
changeset
|
80 btn->setIconSize (QSize (cdat.columns (), cdat.rows ())); |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
81 } |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
82 |
22411
c69805d1fa64
maint: Style check C++ code in libgui/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
83 ToggleButtonControl::~ToggleButtonControl (void) |
22417
48c00363dc74
maint: Use '{ }' for empty function bodies in C++.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
84 { } |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
85 |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
86 void |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
87 ToggleButtonControl::update (int pId) |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
88 { |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
89 uicontrol::properties& up = properties<uicontrol> (); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
90 QPushButton *btn = qWidget<QPushButton> (); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
91 |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
92 switch (pId) |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
93 { |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
94 case uicontrol::properties::ID_CDATA: |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
95 { |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
96 octave_value cdat = up.get_cdata (); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
97 QImage img = Utils::makeImageFromCData (cdat, |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
98 cdat.rows (), |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
99 cdat.columns ()); |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
100 btn->setIcon (QIcon (QPixmap::fromImage (img))); |
29277
486ff0874d68
Fix regression with icon size on uicontrol buttons (bug #59827).
Rik <rik@octave.org>
parents:
28227
diff
changeset
|
101 btn->setIconSize (QSize (cdat.columns (), cdat.rows ())); |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
102 } |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
103 break; |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
104 |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
105 default: |
26225
1a12d4369beb
Fix "Value" property for uicontrol togglebuttons (bug #55211).
Rik <rik@octave.org>
parents:
25788
diff
changeset
|
106 ButtonControl::update (pId); |
25788
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
107 break; |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
108 } |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
109 } |
88e87c69c8b8
Implement "cdata" property for pushbuttons (bug #44332).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
110 |
18498
2e7cad6f180c
Initial integration of QtHandles.
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
111 }; |