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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 };