Mercurial > octave
annotate libinterp/dldfcn/__init_fltk__.cc @ 23097:0c5f04b9dca1
style fixes
* __init_fltk__.cc: Use m_ prefix for class data members. Use
constructor initialization lists where practical.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 26 Jan 2017 23:19:45 -0500 |
parents | ef4d915df748 |
children | 95a9d6ffaecc |
rev | line source |
---|---|
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1 /* |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2 |
22323
bac0d6f07a3e
maint: Update copyright notices for 2016.
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3 Copyright (C) 2007-2016 Shai Ayal |
bac0d6f07a3e
maint: Update copyright notices for 2016.
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
4 Copyright (C) 2014-2016 Andreas Weber |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
5 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
6 This file is part of Octave. |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
7 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
8 Octave is free software; you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
9 under the terms of the GNU General Public License as published by |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
10 the Free Software Foundation; either version 3 of the License, or |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
11 (at your option) any later version. |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
12 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
13 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
14 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22622
diff
changeset
|
16 GNU General Public License for more details. |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
17 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
18 You should have received a copy of the GNU General Public License |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
19 along with Octave; see the file COPYING. If not, see |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
20 <http://www.gnu.org/licenses/>. |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
21 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
22 */ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
23 |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
24 /* |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
25 |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
26 To initialize: |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
27 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
28 graphics_toolkit ("fltk"); |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
29 plot (randn (1e3, 1)); |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
30 |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
31 */ |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
32 |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
33 // PKG_ADD: if (__have_feature__ ("FLTK") && __have_feature__ ("OPENGL") && have_window_system ()) register_graphics_toolkit ("fltk"); endif |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
34 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
35 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
36 # include "config.h" |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
37 #endif |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
38 |
14111
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
39 #include "defun-dld.h" |
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
40 #include "error.h" |
21126
ba0a4b4f021d
include errwarn.h in files that use err_disabled_feature conditionally
John W. Eaton <jwe@octave.org>
parents:
21109
diff
changeset
|
41 #include "errwarn.h" |
14111
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
42 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
43 #if defined (HAVE_FLTK) |
7954 | 44 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
45 #if defined (HAVE_X_WINDOWS) |
21196
bd96c2efd4fe
move include statements for OpenGL headers to a single file
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
46 # include <X11/Xlib.h> |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
47 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
48 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
49 #include <cmath> |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
50 |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
51 #include <locale> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
52 #include <map> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
53 #include <sstream> |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
54 #include <string> |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
55 #include <vector> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
56 |
21196
bd96c2efd4fe
move include statements for OpenGL headers to a single file
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
57 #if defined (WIN32) |
bd96c2efd4fe
move include statements for OpenGL headers to a single file
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
58 # define WIN32_LEAN_AND_MEAN |
13721
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
59 #endif |
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
60 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
61 #include <FL/Fl.H> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
62 #include <FL/Fl_Box.H> |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
63 #include <FL/Fl_Button.H> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
64 #include <FL/Fl_Choice.H> |
12565
0f71b9639207
Correct typo in #include path for FLTK header files (bug #32972).
Rik <octave@nomad.inbox5.com>
parents:
12539
diff
changeset
|
65 #include <FL/Fl_File_Chooser.H> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
66 #include <FL/Fl_Gl_Window.H> |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
67 #include <FL/names.h> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
68 #include <FL/Fl_Menu_Bar.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
69 #include <FL/Fl_Menu_Button.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
70 #include <FL/Fl_Output.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
71 #include <FL/Fl_Window.H> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
72 #include <FL/fl_ask.H> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
73 #include <FL/fl_draw.H> |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
74 #include <FL/gl.h> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
75 |
12205
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
76 // FLTK headers may include X11/X.h which defines Complex, and that |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
77 // conflicts with Octave's Complex typedef. We don't need the X11 |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
78 // Complex definition in this file, so remove it before including Octave |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
79 // headers which may require Octave's Complex typedef. |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
80 #undef Complex |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
81 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
82 #include "Array.h" |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
83 #include "cmd-edit.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
84 #include "dColVector.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
85 #include "dMatrix.h" |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
86 #include "lo-ieee.h" |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
87 #include "oct-env.h" |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
88 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
89 #include "Cell.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
90 #include "builtin-defun-decls.h" |
17881
7aadb87f599a
Display warning and don't init FLTK toolkit if no DISPLAY available (bug #40423).
Rik <rik@octave.org>
parents:
17861
diff
changeset
|
91 #include "display.h" |
19657
0cdda69dc2b4
Fix compilation error when building with FLTK but without gl2ps
Mike Miller <mtmiller@ieee.org>
parents:
19639
diff
changeset
|
92 #include "gl-render.h" |
21199
dd6605e1eaea
make gl2ps_renderer implementation private
John W. Eaton <jwe@octave.org>
parents:
21196
diff
changeset
|
93 #include "gl2ps-print.h" |
7954 | 94 #include "graphics.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
95 #include "interpreter.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
96 #include "oct-map.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
97 #include "oct-opengl.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
98 #include "ov-fcn-handle.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
99 #include "ov.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
100 #include "ovl.h" |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
101 #include "parse.h" |
9216
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
102 #include "variables.h" |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
103 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
104 #define FLTK_GRAPHICS_TOOLKIT_NAME "fltk" |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
105 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
106 const char* help_text = "\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
107 Keyboard Shortcuts\n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
108 a - autoscale\n\ |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
109 p - pan/zoom\n\ |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
110 r - rotate\n\ |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
111 g - toggle grid\n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
112 \n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
113 Mouse\n\ |
9455 | 114 left drag - pan\n\ |
115 mouse wheel - zoom\n\ | |
116 right drag - rectangle zoom\n\ | |
117 left double click - autoscale\n\ | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
118 "; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
119 |
7869 | 120 class OpenGL_fltk : public Fl_Gl_Window |
121 { | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
122 public: |
23097 | 123 |
7869 | 124 OpenGL_fltk (int xx, int yy, int ww, int hh, double num) |
23097 | 125 : Fl_Gl_Window (xx, yy, ww, hh, 0), m_number (num), m_renderer (), |
126 m_in_zoom (false), m_zoom_box () | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
127 { |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
128 #if defined (HAVE_OPENGL) |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
129 // Ask for double buffering and a depth buffer. |
18293
c6e5466d74fe
Ensure anti-aliasing in fltk plots (patch #8259)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
17945
diff
changeset
|
130 mode (FL_DEPTH | FL_DOUBLE | FL_MULTISAMPLE); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
131 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
132 err_disabled_feature ("OpenGL_fltk", "OpenGL"); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
133 #endif |
7869 | 134 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
135 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22865
diff
changeset
|
136 ~OpenGL_fltk (void) = default; |
7869 | 137 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
138 void zoom (bool z) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
139 { |
23097 | 140 m_in_zoom = z; |
141 if (! m_in_zoom) | |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
142 hide_overlay (); |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
143 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
144 |
23097 | 145 bool zoom (void) { return m_in_zoom; } |
146 void set_zoom_box (const Matrix& zb) { m_zoom_box = zb; } | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
147 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
148 void print (const std::string& cmd, const std::string& term) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
149 { |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
150 //std::cout << "OpenGL_fltk::print(cmd=" << cmd << ", term=" << term << ") canvas size = " << w () << "x" << h () << std::endl; |
19639
61cc00ebac60
move opengl printing code from __init_fltk__.cc to gl2ps-renderer.cc
John W. Eaton <jwe@octave.org>
parents:
19456
diff
changeset
|
151 |
23097 | 152 gl2ps_print (gh_manager::get_object (m_number), cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
153 } |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
154 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
155 void resize (int xx, int yy, int ww, int hh) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
156 { |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
157 #if defined (HAVE_OPENGL) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
158 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
159 Fl_Gl_Window::resize (xx, yy, ww, hh); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
160 |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
161 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
162 // This shouldn't happen because construction of Opengl_fltk |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
163 // objects is supposed to be impossible if OpenGL is not available. |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
164 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
165 panic_impossible (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
166 #endif |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
167 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
168 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
169 bool renumber (double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
170 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
171 bool retval = false; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
172 |
23097 | 173 if (m_number != new_number) |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
174 { |
23097 | 175 m_number = new_number; |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
176 retval = true; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
177 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
178 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
179 return retval; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
180 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
181 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
182 private: |
23097 | 183 |
184 double m_number; | |
185 | |
186 octave::opengl_renderer m_renderer; | |
187 | |
188 bool m_in_zoom; | |
189 | |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
190 // (x1,y1,x2,y2) |
23097 | 191 Matrix m_zoom_box; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
192 |
7869 | 193 void draw (void) |
194 { | |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
195 #if defined (HAVE_OPENGL) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
196 |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
197 if (! valid ()) |
7869 | 198 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
199 glMatrixMode (GL_PROJECTION); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
200 glLoadIdentity (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
201 glViewport (0, 0, w (), h ()); |
7869 | 202 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
203 |
23097 | 204 m_renderer.draw (gh_manager::get_object (m_number)); |
12323
c8da31f12c1d
avoid using new to create temporary gl2ps_renderer object
John W. Eaton <jwe@octave.org>
parents:
12226
diff
changeset
|
205 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
206 if (zoom ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
207 overlay (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
208 |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
209 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
210 // This shouldn't happen because construction of Opengl_fltk |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
211 // objects is supposed to be impossible if OpenGL is not available. |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
212 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
213 panic_impossible (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
214 #endif |
7869 | 215 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
216 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
217 void zoom_box_vertex (void) |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
218 { |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
219 #if defined (HAVE_OPENGL) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
220 |
23097 | 221 glVertex2d (m_zoom_box(0), h () - m_zoom_box(1)); |
222 glVertex2d (m_zoom_box(0), h () - m_zoom_box(3)); | |
223 glVertex2d (m_zoom_box(2), h () - m_zoom_box(3)); | |
224 glVertex2d (m_zoom_box(2), h () - m_zoom_box(1)); | |
225 glVertex2d (m_zoom_box(0), h () - m_zoom_box(1)); | |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
226 |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
227 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
228 // This shouldn't happen because construction of Opengl_fltk |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
229 // objects is supposed to be impossible if OpenGL is not available. |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
230 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
231 panic_impossible (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
232 #endif |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
233 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
234 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
235 void overlay (void) |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
236 { |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
237 #if defined (HAVE_OPENGL) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
238 |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
239 glPushMatrix (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
240 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
241 glMatrixMode (GL_MODELVIEW); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
242 glLoadIdentity (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
243 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
244 glMatrixMode (GL_PROJECTION); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
245 glLoadIdentity (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
246 gluOrtho2D (0.0, w (), 0.0, h ()); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
247 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
248 glPushAttrib (GL_DEPTH_BUFFER_BIT | GL_CURRENT_BIT); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
249 glDisable (GL_DEPTH_TEST); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
250 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
251 glBegin (GL_POLYGON); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
252 glColor4f (0.45, 0.62, 0.81, 0.1); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
253 zoom_box_vertex (); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
254 glEnd (); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
255 |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
256 glBegin (GL_LINE_STRIP); |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
257 glLineWidth (1.5); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
258 glColor4f (0.45, 0.62, 0.81, 0.9); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
259 zoom_box_vertex (); |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
260 glEnd (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
261 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
262 glPopAttrib (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
263 glPopMatrix (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
264 |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
265 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
266 // This shouldn't happen because construction of Opengl_fltk |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
267 // objects is supposed to be impossible if OpenGL is not available. |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
268 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
269 panic_impossible (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
270 #endif |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
271 } |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
272 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
273 int handle (int event) |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
274 { |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
275 #if defined (HAVE_OPENGL) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
276 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
277 switch (event) |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
278 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
279 case FL_ENTER: |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
280 cursor (FL_CURSOR_CROSS); |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
281 return 1; |
7869 | 282 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
283 case FL_LEAVE: |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
284 cursor (FL_CURSOR_DEFAULT); |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
285 return 1; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
286 } |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
287 |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
288 return Fl_Gl_Window::handle (event); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
289 |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
290 #else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
291 // This shouldn't happen because construction of Opengl_fltk |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
292 // objects is supposed to be impossible if OpenGL is not available. |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
293 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
294 panic_impossible (); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
295 #endif |
7869 | 296 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
297 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
298 |
14854
5ae9f0f77635
maint: Use Octave coding conventions for coddling parenthis is DLD-FUNCTIONS directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
299 void script_cb (Fl_Widget*, void* data) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
300 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
301 static_cast<uimenu::properties*> (data)->execute_callback (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
302 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
303 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
304 class fltk_uimenu |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
305 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
306 public: |
23097 | 307 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
308 fltk_uimenu (int xx, int yy, int ww, int hh) |
23097 | 309 : m_menubar (new Fl_Menu_Bar (xx, yy, ww, hh)) |
310 { } | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
311 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
312 int items_to_show (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
313 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
314 //returns the number of visible menu items |
23097 | 315 int len = m_menubar->size (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
316 int n = 0; |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
317 for (int t = 0; t < len; t++) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
318 { |
23097 | 319 const Fl_Menu_Item *m |
320 = static_cast<const Fl_Menu_Item*> (&(m_menubar->menu ()[t])); | |
321 | |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
322 if (m->label () && m->visible ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
323 n++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
324 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
325 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
326 return n; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
327 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
328 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
329 void show (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
330 { |
23097 | 331 m_menubar->show (); |
332 m_menubar->redraw (); | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
333 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
334 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
335 void hide (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
336 { |
23097 | 337 m_menubar->hide (); |
338 m_menubar->redraw (); | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
339 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
340 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
341 bool is_visible (void) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
342 { |
23097 | 343 return m_menubar->visible (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
344 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
345 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
346 int find_index_by_name (const std::string& findname) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
347 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
348 // This function is derived from Greg Ercolano's function |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
349 // int GetIndexByName(...), see: |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
350 // http://seriss.com/people/erco/fltk/#Menu_ChangeLabel |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
351 // He agreed via PM that it can be included in octave using GPLv3 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
352 // Kai Habel (14.10.2010) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
353 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
354 std::string menupath; |
23097 | 355 for (int t = 0; t < m_menubar->size (); t++) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
356 { |
23097 | 357 Fl_Menu_Item *m = const_cast<Fl_Menu_Item*> (&(m_menubar->menu ()[t])); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
358 if (m->submenu ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
359 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
360 // item has submenu |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
361 if (! menupath.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
362 menupath += "/"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
363 menupath += m->label (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
364 |
21021
a5b99b09f8fd
maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents:
21006
diff
changeset
|
365 if (menupath == findname) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
366 return (t); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
367 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
368 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
369 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
370 // End of submenu? Pop back one level. |
17900
8e9532632838
* __init_fltk__.cc: Fix typo in previous change.
John W. Eaton <jwe@octave.org>
parents:
17898
diff
changeset
|
371 if (! m->label ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
372 { |
19872
d575cd1e0da7
Replace std::size_t with bare size_t for conformity to rest of code.
Rik <rik@octave.org>
parents:
19867
diff
changeset
|
373 size_t idx = menupath.find_last_of ("/"); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
374 if (idx != std::string::npos) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
375 menupath.erase (idx); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
376 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
377 menupath.clear (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
378 continue; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
379 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
380 // Menu item? |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
381 std::string itempath = menupath; |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
382 if (! itempath.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
383 itempath += "/"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
384 itempath += m->label (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
385 |
21021
a5b99b09f8fd
maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents:
21006
diff
changeset
|
386 if (itempath == findname) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
387 return (t); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
388 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
389 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
390 return (-1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
391 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
392 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
393 Matrix find_uimenu_children (uimenu::properties& uimenup) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
394 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
395 Matrix uimenu_childs = uimenup.get_all_children (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
396 Matrix retval = do_find_uimenu_children (uimenu_childs); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
397 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
398 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
399 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
400 Matrix find_uimenu_children (figure::properties& figp) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
401 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
402 Matrix uimenu_childs = figp.get_all_children (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
403 Matrix retval = do_find_uimenu_children (uimenu_childs); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
404 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
405 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
406 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
407 Matrix do_find_uimenu_children (Matrix uimenu_childs) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
408 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
409 octave_idx_type k = 0; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
410 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
411 Matrix pos = Matrix (uimenu_childs.numel (), 1); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
412 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
413 for (octave_idx_type ii = 0; ii < uimenu_childs.numel (); ii++) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
414 { |
11207 | 415 graphics_object kidgo = gh_manager::get_object (uimenu_childs (ii)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
416 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
417 if (kidgo.valid_object () && kidgo.isa ("uimenu")) |
11207 | 418 { |
419 uimenu_childs(k) = uimenu_childs(ii); | |
420 pos(k++) = | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
421 dynamic_cast<uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
422 (kidgo.get_properties ()).get_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
423 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
424 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
425 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
426 uimenu_childs.resize (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
427 pos.resize (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
428 Matrix retval = Matrix (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
429 // Don't know if this is the best method to sort. |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
430 // Can we avoid the for loop? |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
431 Array<octave_idx_type> sidx = pos.sort_rows_idx (DESCENDING); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
432 for (octave_idx_type ii = 0; ii < k; ii++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
433 retval(ii) = uimenu_childs (sidx(ii)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
434 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
435 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
436 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
437 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
438 void delete_entry (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
439 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
440 std::string fltk_label = uimenup.get___fltk_label__ (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
441 int idx = find_index_by_name (fltk_label.c_str ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
442 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
443 if (idx >= 0) |
23097 | 444 m_menubar->remove (idx); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
445 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
446 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
447 void update_accelerator (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
448 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
449 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
450 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
451 { |
23097 | 452 Fl_Menu_Item* item = |
453 const_cast<Fl_Menu_Item*> (m_menubar->find_item (fltk_label.c_str ())); | |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
454 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
455 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
456 std::string acc = uimenup.get_accelerator (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
457 if (acc.length () > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
458 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
459 int key = FL_CTRL + acc[0]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
460 item->shortcut (key); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
461 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
462 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
463 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
464 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
465 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
466 void update_callback (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
467 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
468 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
469 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
470 { |
23097 | 471 Fl_Menu_Item* item |
472 = const_cast<Fl_Menu_Item*> (m_menubar->find_item (fltk_label.c_str ())); | |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
473 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
474 { |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
475 if (! uimenup.get_callback ().is_empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
476 item->callback (static_cast<Fl_Callback*> (script_cb), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
477 static_cast<void*> (&uimenup)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
478 else |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
479 item->callback (0, static_cast<void*> (0)); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
480 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
481 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
482 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
483 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
484 void update_enable (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
485 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
486 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
487 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
488 { |
23097 | 489 Fl_Menu_Item* item |
490 = const_cast<Fl_Menu_Item*> (m_menubar->find_item (fltk_label.c_str ())); | |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
491 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
492 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
493 if (uimenup.is_enable ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
494 item->activate (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
495 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
496 item->deactivate (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
497 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
498 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
499 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
500 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
501 void update_foregroundcolor (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
502 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
503 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
504 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
505 { |
23097 | 506 Fl_Menu_Item* item |
507 = const_cast<Fl_Menu_Item*> (m_menubar->find_item (fltk_label.c_str ())); | |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
508 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
509 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
510 Matrix rgb = uimenup.get_foregroundcolor_rgb (); |
12539
ccd0572e5e93
use gnulib:: functions as needed
John W. Eaton <jwe@octave.org>
parents:
12507
diff
changeset
|
511 |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
512 uchar r = static_cast<uchar> (std::floor (rgb (0) * 255)); |
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
513 uchar g = static_cast<uchar> (std::floor (rgb (1) * 255)); |
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
514 uchar b = static_cast<uchar> (std::floor (rgb (2) * 255)); |
12539
ccd0572e5e93
use gnulib:: functions as needed
John W. Eaton <jwe@octave.org>
parents:
12507
diff
changeset
|
515 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
516 item->labelcolor (fl_rgb_color (r, g, b)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
517 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
518 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
519 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
520 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
521 void update_seperator (const uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
522 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
523 // Matlab places the separator before the current |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21732
diff
changeset
|
524 // menu entry, while fltk places it after. So we need to find |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
525 // the previous item in this menu/submenu. (Kai) |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
526 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
527 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
528 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
529 int itemflags = 0, idx; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
530 int curr_idx = find_index_by_name (fltk_label.c_str ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
531 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
532 for (idx = curr_idx - 1; idx >= 0; idx--) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
533 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
534 Fl_Menu_Item* item |
23097 | 535 = const_cast<Fl_Menu_Item*> (&m_menubar->menu () [idx]); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
536 itemflags = item->flags; |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
537 if (item->label ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
538 break; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
539 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
540 |
23097 | 541 if (idx >= 0 && idx < m_menubar->size ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
542 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
543 if (uimenup.is_separator ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
544 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
545 if (idx >= 0 && !(itemflags & FL_SUBMENU)) |
23097 | 546 m_menubar->mode (idx, itemflags | FL_MENU_DIVIDER); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
547 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
548 else |
23097 | 549 m_menubar->mode (idx, itemflags & (~FL_MENU_DIVIDER)); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
550 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
551 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
552 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
553 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
554 void update_visible (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
555 { |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
556 std::string fltk_label = uimenup.get___fltk_label__ (); |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
557 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
558 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
559 Fl_Menu_Item* item |
23097 | 560 = const_cast<Fl_Menu_Item*> (m_menubar->find_item (fltk_label.c_str ())); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
561 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
562 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
563 if (uimenup.is_visible ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
564 item->show (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
565 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
566 item->hide (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
567 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
568 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
569 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
570 |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
571 void update_position (uimenu::properties& uimenup, int pos) |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
572 { |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
573 uimenup.get_property ("position").set (octave_value (static_cast<double> (pos)), |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
574 true, false); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
575 } |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
576 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
577 void add_entry (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
578 { |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
579 |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
580 std::string fltk_label = uimenup.get___fltk_label__ (); |
11207 | 581 |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
582 if (! fltk_label.empty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
583 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
584 bool item_added = false; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
585 do |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
586 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
587 const Fl_Menu_Item* item |
23097 | 588 = m_menubar->find_item (fltk_label.c_str ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
589 |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
590 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
591 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
592 //avoid duplicate menulabels |
19872
d575cd1e0da7
Replace std::size_t with bare size_t for conformity to rest of code.
Rik <rik@octave.org>
parents:
19867
diff
changeset
|
593 size_t idx1 = fltk_label.find_last_of ("("); |
d575cd1e0da7
Replace std::size_t with bare size_t for conformity to rest of code.
Rik <rik@octave.org>
parents:
19867
diff
changeset
|
594 size_t idx2 = fltk_label.find_last_of (")"); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
595 int len = idx2 - idx1; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
596 int val = 1; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
597 if (len > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
598 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
599 std::string valstr = fltk_label.substr (idx1 + 1, len - 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
600 fltk_label.erase (idx1, len + 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
601 val = atoi (valstr.c_str ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
602 if (val > 0 && val < 99) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
603 val++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
604 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
605 std::ostringstream valstream; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
606 valstream << val; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
607 fltk_label += "(" + valstream.str () + ")"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
608 } |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
609 else |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
610 { |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
611 Matrix uimenu_ch = find_uimenu_children (uimenup); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
612 int len = uimenu_ch.numel (); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
613 int flags = 0; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
614 if (len > 0) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
615 flags = FL_SUBMENU; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
616 if (len == 0 && uimenup.is_checked ()) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
617 flags += FL_MENU_TOGGLE + FL_MENU_VALUE; |
23097 | 618 m_menubar->add (fltk_label.c_str (), 0, 0, 0, flags); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
619 item_added = true; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
620 } |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
621 } |
20955
77f5591878bf
maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents:
20845
diff
changeset
|
622 while (! item_added); |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
623 uimenup.set___fltk_label__ (fltk_label); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
624 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
625 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
626 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
627 void add_to_menu (uimenu::properties& uimenup) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
628 { |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
629 std::vector<int> delayed_menus; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
630 Matrix kids = find_uimenu_children (uimenup); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20181
diff
changeset
|
631 int len = kids.numel (); |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
632 std::string fltk_label = uimenup.get___fltk_label__ (); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
633 int count = 0; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
634 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
635 add_entry (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
636 update_foregroundcolor (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
637 update_callback (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
638 update_accelerator (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
639 update_enable (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
640 update_visible (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
641 update_seperator (uimenup); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
642 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
643 for (octave_idx_type ii = 0; ii < len; ii++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
644 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
645 graphics_object kgo = gh_manager::get_object (kids (len - (ii + 1))); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
646 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
647 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
648 uimenu::properties& kprop = dynamic_cast<uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
649 (kgo.get_properties ()); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
650 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
651 // if no pos yet, delay adding menu until after other menus |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
652 int pos = kprop.get_position (); |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
653 if (pos <= 0) |
20181
aa36fb998a4d
maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents:
20119
diff
changeset
|
654 delayed_menus.push_back ((len - (ii + 1))); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
655 else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
656 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
657 add_to_menu (kprop); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
658 } |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
659 } |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
660 } |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
661 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
662 // create any delayed menus |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
663 for (size_t ii = 0; ii < delayed_menus.size (); ii++) |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
664 { |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
665 graphics_object kgo = gh_manager::get_object (kids (delayed_menus[ii])); |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
666 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
667 if (kgo.valid_object ()) |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
668 { |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
669 uimenu::properties& kprop = dynamic_cast<uimenu::properties&> |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
670 (kgo.get_properties ()); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
671 add_to_menu (kprop); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
672 update_position (kprop, ++count); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
673 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
674 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
675 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
676 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
677 void add_to_menu (figure::properties& figp) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
678 { |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
679 std::vector<int> delayed_menus; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
680 Matrix kids = find_uimenu_children (figp); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20181
diff
changeset
|
681 int len = kids.numel (); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
682 int count = 0; |
23097 | 683 m_menubar->clear (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
684 for (octave_idx_type ii = 0; ii < len; ii++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
685 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
686 graphics_object kgo = gh_manager::get_object (kids (len - (ii + 1))); |
11207 | 687 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
688 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
689 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
690 uimenu::properties& kprop = dynamic_cast<uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
691 (kgo.get_properties ()); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
692 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
693 // if no pos yet, delay adding menu until after other menus |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
694 int pos = kprop.get_position (); |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
695 if (pos <= 0) |
20181
aa36fb998a4d
maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents:
20119
diff
changeset
|
696 delayed_menus.push_back ((len - (ii + 1))); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
697 else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
698 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
699 add_to_menu (kprop); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
700 update_position (kprop, ++count); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
701 } |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
702 } |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
703 } |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
704 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
705 // create any delayed menus |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
706 for (size_t ii = 0; ii < delayed_menus.size (); ii++) |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
707 { |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
708 graphics_object kgo = gh_manager::get_object (kids (delayed_menus[ii])); |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
709 |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
710 if (kgo.valid_object ()) |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
711 { |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
712 uimenu::properties& kprop = dynamic_cast<uimenu::properties&> |
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
713 (kgo.get_properties ()); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
714 add_to_menu (kprop); |
20053
ac59136f1f10
update fltk uimenu position when adding to figure
John Donoghue <john.donoghue@ieee.org>
parents:
19998
diff
changeset
|
715 update_position (kprop, ++count); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
716 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
717 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
718 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
719 |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21126
diff
changeset
|
720 template <typename T_prop> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
721 void remove_from_menu (T_prop& prop) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
722 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
723 Matrix kids; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
724 std::string type = prop.get_type (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
725 kids = find_uimenu_children (prop); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20181
diff
changeset
|
726 int len = kids.numel (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
727 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
728 for (octave_idx_type ii = 0; ii < len; ii++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
729 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
730 graphics_object kgo = gh_manager::get_object (kids (len - (ii + 1))); |
11207 | 731 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
732 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
733 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
734 uimenu::properties kprop = dynamic_cast<uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
735 (kgo.get_properties ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
736 remove_from_menu (kprop); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
737 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
738 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
739 |
21021
a5b99b09f8fd
maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents:
21006
diff
changeset
|
740 if (type == "uimenu") |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
741 delete_entry (dynamic_cast<uimenu::properties&> (prop)); |
21021
a5b99b09f8fd
maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents:
21006
diff
changeset
|
742 else if (type == "figure") |
23097 | 743 m_menubar->clear (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
744 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
745 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
746 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
747 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
748 fltk_uimenu (const fltk_uimenu&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
749 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
750 fltk_uimenu operator = (const fltk_uimenu&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
751 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
752 ~fltk_uimenu (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
753 { |
23097 | 754 delete m_menubar; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
755 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
756 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
757 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
758 |
23097 | 759 Fl_Menu_Bar* m_menubar; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
760 }; |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
761 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
762 #if defined (HAVE_X_WINDOWS) |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
763 static int |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
764 xerror_handler (Display *, XErrorEvent *) |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
765 { |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
766 return 0; |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
767 } |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
768 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
769 |
7869 | 770 class plot_window : public Fl_Window |
771 { | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
772 friend class fltk_uimenu; |
23097 | 773 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
774 public: |
23097 | 775 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
776 plot_window (int xx, int yy, int ww, int hh, figure::properties& xfp, |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
777 bool internal) |
23097 | 778 : Fl_Window (xx, yy, ww, hh + m_menu_h + m_status_h + 2, "octave"), |
779 m_window_label (), m_fp (xfp), m_uimenu (0), m_canvas (0), | |
780 m_autoscale (0), m_togglegrid (0), m_panzoom (0), m_rotate (0), | |
781 m_help (0), m_status (0), m_resize_dummy (0), m_ax_obj (), | |
782 m_pos_x (0), m_pos_y (0) | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
783 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
784 callback (window_close, static_cast<void*> (this)); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
785 |
23097 | 786 // The size of the resize_dummy box also determines the minimum |
787 // window size. | |
788 m_resize_dummy = new Fl_Box (5 * m_status_h, m_menu_h, | |
789 ww - 5 * m_status_h, hh); | |
790 | |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
791 // See http://fltk.org/articles.php?L415+I0+T+M1000+P1 |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
792 // for how resizable works |
23097 | 793 resizable (m_resize_dummy); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
794 |
14447
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
795 // FIXME: The function below is only available in FLTK >= 1.3 |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
796 // At some point support for FLTK 1.1 will be dropped in Octave. |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
797 // At that point this function should be uncommented. |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
798 // The current solution is to call xclass() before show() for each window. |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
799 // Set WM_CLASS which allows window managers to properly group related |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
800 // windows. Otherwise, the class is just "FLTK" |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
801 //default_xclass ("Octave"); |
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
802 |
23097 | 803 m_uimenu = new fltk_uimenu (0, 0, ww, m_menu_h); |
804 m_canvas = new OpenGL_fltk (0, m_menu_h, ww, hh, number ()); | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
805 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
806 // The bottom toolbar is a composite of "autoscale", "togglegrid", |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
807 // "panzoom", "rotate", "help", and "status". |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
808 // Only "status" should be resized. |
12621
c99d6785a27e
instantiate canvas before menubar
Kai Habel <kai.habel@gmx.de>
parents:
12565
diff
changeset
|
809 |
23097 | 810 int toolbar_y = m_menu_h + hh + 1; |
811 m_status = new Fl_Output (5 * m_status_h, toolbar_y, | |
812 ww - 5 * m_status_h, m_status_h, ""); | |
813 | |
814 m_status->textcolor (FL_BLACK); | |
815 m_status->color (FL_GRAY); | |
816 m_status->textfont (FL_COURIER); | |
817 m_status->textsize (10); | |
818 m_status->box (FL_ENGRAVED_BOX); | |
819 | |
820 m_autoscale = new Fl_Button (0, toolbar_y, m_status_h, m_status_h, "A"); | |
821 m_autoscale->callback (button_callback, static_cast<void*> (this)); | |
822 m_autoscale->tooltip ("Autoscale"); | |
823 | |
824 m_togglegrid = new Fl_Button (m_status_h, toolbar_y, m_status_h, m_status_h, "G"); | |
825 m_togglegrid->callback (button_callback, static_cast<void*> (this)); | |
826 m_togglegrid->tooltip ("Toggle Grid"); | |
827 | |
828 m_panzoom = new Fl_Button (2* m_status_h, toolbar_y, m_status_h, m_status_h, "P"); | |
829 m_panzoom->callback (button_callback, static_cast<void*> (this)); | |
830 m_panzoom->tooltip ("Mouse Pan/Zoom"); | |
831 | |
832 m_rotate = new Fl_Button (3 * m_status_h, toolbar_y, m_status_h, m_status_h, "R"); | |
833 m_rotate->callback (button_callback, static_cast<void*> (this)); | |
834 m_rotate->tooltip ("Mouse Rotate"); | |
835 | |
836 m_help = new Fl_Button (4 * m_status_h, toolbar_y, m_status_h, m_status_h, "?"); | |
837 m_help->callback (button_callback, static_cast<void*> (this)); | |
838 m_help->tooltip ("Help"); | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
839 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
840 end (); |
7869 | 841 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
842 set_name (); |
23097 | 843 m_uimenu->add_to_menu (m_fp); |
844 if (m_fp.menubar_is ("none") || ! m_uimenu->items_to_show ()) | |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
845 hide_menubar (); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
846 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
847 update_boundingbox (internal); |
12507
41d183070c04
revert changes from 2011-02-26
Konstantinos Poulios <logari81@googlemail.com>
parents:
12484
diff
changeset
|
848 |
23097 | 849 if (m_fp.is_visible ()) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
850 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
851 // FIXME: This code should be removed when Octave drops support |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
852 // for FLTK 1.1. Search for default_xclass in this file to find |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
853 // code that should be uncommented to take its place. |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
854 // |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
855 // Set WM_CLASS which allows window managers to properly group |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
856 // related windows. Otherwise, the class is just "FLTK" |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
857 xclass ("Octave"); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
858 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
859 show (); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
860 |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
861 #if defined (HAVE_X_WINDOWS) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
862 std::string show_gui_msgs |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
863 = octave::sys::env::getenv ("OCTAVE_SHOW_GUI_MESSAGES"); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
864 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
865 // Installing our handler suppresses the messages. |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
866 if (show_gui_msgs.empty ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
867 XSetErrorHandler (xerror_handler); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
868 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
869 |
23097 | 870 if (m_fp.get_currentaxes ().ok ()) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
871 show_canvas (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
872 else |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
873 hide_canvas (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
874 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
875 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
876 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
877 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
878 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
879 plot_window (const plot_window&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
880 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
881 plot_window& operator = (const plot_window&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
882 |
7869 | 883 ~plot_window (void) |
884 { | |
885 this->hide (); | |
19020
d74cdfc5d5c3
Fix problem that FLTK figure stays visible after "close"
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19013
diff
changeset
|
886 Fl::check (); |
7869 | 887 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
888 |
23097 | 889 double number (void) { return m_fp.get___myhandle__ ().value (); } |
7869 | 890 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
891 void renumber (double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
892 { |
23097 | 893 if (! m_canvas) |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
894 error ("unable to renumber figure"); |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20957
diff
changeset
|
895 |
23097 | 896 if (m_canvas->renumber (new_number)) |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20957
diff
changeset
|
897 mark_modified (); |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
898 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
899 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
900 void print (const std::string& cmd, const std::string& term) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
901 { |
23097 | 902 m_canvas->print (cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
903 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
904 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
905 void show_menubar (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
906 { |
23097 | 907 m_uimenu->show (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
908 update_toolbar_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
909 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
910 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
911 void hide_menubar (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
912 { |
23097 | 913 m_uimenu->hide (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
914 update_toolbar_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
915 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
916 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
917 void uimenu_update (const graphics_handle& gh, int id) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
918 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
919 graphics_object uimenu_obj = gh_manager::get_object (gh); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
920 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
921 if (uimenu_obj.valid_object () && uimenu_obj.isa ("uimenu")) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
922 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
923 uimenu::properties& uimenup = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
924 dynamic_cast<uimenu::properties&> (uimenu_obj.get_properties ()); |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
925 std::string fltk_label = uimenup.get___fltk_label__ (); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
926 graphics_object fig = uimenu_obj.get_ancestor ("figure"); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
927 figure::properties& figp = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
928 dynamic_cast<figure::properties&> (fig.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
929 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
930 switch (id) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
931 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
932 case base_properties::ID_BEINGDELETED: |
23097 | 933 m_uimenu->remove_from_menu (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
934 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
935 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
936 case base_properties::ID_VISIBLE: |
23097 | 937 m_uimenu->update_visible (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
938 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
939 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
940 case uimenu::properties::ID_ACCELERATOR: |
23097 | 941 m_uimenu->update_accelerator (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
942 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
943 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
944 case uimenu::properties::ID_CALLBACK: |
23097 | 945 m_uimenu->update_callback (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
946 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
947 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
948 case uimenu::properties::ID_CHECKED: |
23097 | 949 m_uimenu->add_to_menu (figp);//rebuilding entire menu |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
950 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
951 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
952 case uimenu::properties::ID_ENABLE: |
23097 | 953 m_uimenu->update_enable (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
954 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
955 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
956 case uimenu::properties::ID_FOREGROUNDCOLOR: |
23097 | 957 m_uimenu->update_foregroundcolor (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
958 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
959 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
960 case uimenu::properties::ID_LABEL: |
23097 | 961 m_uimenu->add_to_menu (figp);//rebuilding entire menu |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
962 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
963 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
964 case uimenu::properties::ID_POSITION: |
23097 | 965 m_uimenu->add_to_menu (figp);//rebuilding entire menu |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
966 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
967 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
968 case uimenu::properties::ID_SEPARATOR: |
23097 | 969 m_uimenu->update_seperator (uimenup); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
970 break; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
971 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
972 |
23097 | 973 if (m_uimenu->items_to_show ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
974 show_menubar (); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
975 else |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
976 hide_menubar (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
977 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
978 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
979 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
980 void show_canvas (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
981 { |
23097 | 982 if (! m_canvas->can_do ()) |
19454
8dbd55742112
Prevent segfault when video card has insufficient OpenGL support (bug #41747).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18618
diff
changeset
|
983 error ("unable to plot due to insufficient OpenGL support"); |
23097 | 984 else if (m_fp.is_visible ()) |
12903
35ea8b9b2a8e
__init_fltk__.cc: show canvas only, when figure is visible (bug #33321)
Kai Habel <kai.habel@gmx.de>
parents:
12621
diff
changeset
|
985 { |
23097 | 986 m_canvas->show (); |
987 m_canvas->make_current (); | |
12903
35ea8b9b2a8e
__init_fltk__.cc: show canvas only, when figure is visible (bug #33321)
Kai Habel <kai.habel@gmx.de>
parents:
12621
diff
changeset
|
988 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
989 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
990 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
991 void hide_canvas (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
992 { |
23097 | 993 m_canvas->hide (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
994 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
995 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
996 // Move the toolbar at the bottom of the plot_window. |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
997 // The only reason for moving the toolbar is hiding and |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21732
diff
changeset
|
998 // showing the menubar. All other resizing is done by fltk. |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
999 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1000 void update_toolbar_position () |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1001 { |
23097 | 1002 int old_canvas_h = m_canvas->h (); |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1003 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1004 // keep position fix, change outerposition accordingly |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1005 update_boundingbox (true); |
23097 | 1006 m_canvas->resize (0, menu_dy (), w (), old_canvas_h); |
1007 | |
1008 int toolbar_y = m_canvas->h () + menu_dy () + 1; | |
1009 m_autoscale->position (0, toolbar_y); | |
1010 m_togglegrid->position (m_status_h, toolbar_y); | |
1011 m_panzoom->position (2 * m_status_h, toolbar_y); | |
1012 m_rotate->position (3 * m_status_h, toolbar_y); | |
1013 m_help->position (4 * m_status_h, toolbar_y); | |
1014 m_status->resize (5 * m_status_h, toolbar_y, | |
1015 w () - 5 * m_status_h, m_status_h); | |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1016 init_sizes (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1017 redraw (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1018 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1019 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1020 Matrix outerposition2position (const Matrix& outerpos) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1021 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1022 Matrix pos = outerpos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1023 pos(1) += menu_dy (); |
23097 | 1024 pos(3) -= menu_dy () + m_status_h + 2; |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1025 return pos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1026 } |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1027 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1028 Matrix position2outerposition (const Matrix& pos) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1029 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1030 Matrix outerpos = pos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1031 outerpos(1) -= menu_dy (); |
23097 | 1032 outerpos(3) += menu_dy () + m_status_h + 2; |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1033 return outerpos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1034 } |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1035 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1036 // Called from figure::properties::ID_POSITION if internal = true |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1037 // or ID_OUTERPOSITION if false. |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1038 // (someone has requested a position change with set (h, "position", [...]) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1039 // or set (h, "outerposition", [...]) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1040 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1041 void update_boundingbox (bool internal) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1042 { |
23097 | 1043 Matrix bb = m_fp.get_boundingbox (internal); |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1044 if (internal) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1045 bb = position2outerposition (bb); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1046 resize (bb(0), bb(1), bb(2), bb(3)); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1047 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1048 |
7869 | 1049 void mark_modified (void) |
1050 { | |
23097 | 1051 m_canvas->redraw (); |
7840
2c8f693c32fd
convert_position not static anymore
Shai Ayal <shaiay@sourceforge.net>
parents:
7839
diff
changeset
|
1052 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1053 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1054 void set_name (void) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1055 { |
23097 | 1056 m_window_label = m_fp.get_title (); |
1057 label (m_window_label.c_str ()); | |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1058 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1059 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1060 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
1061 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1062 // window name -- this must exists for the duration of the window's |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1063 // life |
23097 | 1064 std::string m_window_label; |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1065 |
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1066 // Figure properties. |
23097 | 1067 figure::properties& m_fp; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1068 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1069 // Status area height. |
23097 | 1070 static const int m_status_h = 20; |
7869 | 1071 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1072 // Menu height |
23097 | 1073 static const int m_menu_h = 25; |
1074 | |
1075 fltk_uimenu* m_uimenu; | |
1076 | |
1077 OpenGL_fltk* m_canvas; | |
1078 | |
1079 Fl_Button* m_autoscale; | |
1080 Fl_Button* m_togglegrid; | |
1081 Fl_Button* m_panzoom; | |
1082 Fl_Button* m_rotate; | |
1083 Fl_Button* m_help; | |
1084 Fl_Output* m_status; | |
1085 | |
1086 Fl_Box* m_resize_dummy; | |
1087 | |
1088 graphics_object m_ax_obj; | |
1089 | |
1090 int m_pos_x; | |
1091 int m_pos_y; | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1092 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1093 // Window callback. |
7869 | 1094 static void window_close (Fl_Widget*, void* data) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1095 { |
7869 | 1096 octave_value_list args; |
1097 args(0) = static_cast<plot_window*> (data)->number (); | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
1098 octave::feval ("close", args); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1099 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1100 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1101 // Button callbacks. |
7869 | 1102 static void button_callback (Fl_Widget* ww, void* data) |
1103 { | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1104 static_cast<plot_window*> (data)->button_press (ww, data); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1105 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1106 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1107 void button_press (Fl_Widget* widg, void*) |
7869 | 1108 { |
23097 | 1109 if (widg == m_autoscale) |
7869 | 1110 axis_auto (); |
23097 | 1111 else if (widg == m_togglegrid) |
7869 | 1112 toggle_grid (); |
23097 | 1113 else if (widg == m_panzoom) |
1114 m_fp.set___mouse_mode__ ("pan"); | |
1115 else if (widg == m_rotate) | |
1116 m_fp.set___mouse_mode__ ("rotate"); | |
1117 else if (widg == m_help) | |
9060
de7cef39f505
fltk_backend.cc: don't pass arbitrary string as format
John W. Eaton <jwe@octave.org>
parents:
8333
diff
changeset
|
1118 fl_message ("%s", help_text); |
7869 | 1119 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1120 |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1121 void set_on_ax_obj (const std::string& name, const std::string& value) |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1122 { |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1123 // ax_obj is the last clicked axes object |
23097 | 1124 if (m_ax_obj && m_ax_obj.isa ("axes") |
1125 && m_ax_obj.get_properties ().get_tag () != "legend" | |
1126 && m_ax_obj.get_properties ().get_tag () != "colorbar") | |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1127 { |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1128 axes::properties& ap = |
23097 | 1129 dynamic_cast<axes::properties&>(m_ax_obj.get_properties ()); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1130 ap.set (name, value); |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1131 } |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1132 else // no axes object clicked so far, take currentaxes |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1133 { |
23097 | 1134 graphics_handle gh = m_fp.get_currentaxes (); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1135 if (gh.ok ()) |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1136 { |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1137 graphics_object go = gh_manager::get_object (gh); |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1138 axes::properties& ap = |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1139 dynamic_cast<axes::properties&>(go.get_properties ()); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1140 ap.set (name, value); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1141 } |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1142 } |
7869 | 1143 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1144 |
7869 | 1145 void axis_auto (void) |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
1146 { |
7869 | 1147 octave_value_list args; |
23097 | 1148 if (m_fp.get_currentaxes ().ok ()) |
18968
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1149 { |
23097 | 1150 args(0) = m_fp.get_currentaxes ().as_octave_value (); |
18968
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1151 args(1) = "auto"; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
1152 octave::feval ("axis", args); |
18968
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1153 mark_modified (); |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1154 } |
7852
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
1155 } |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
1156 |
7869 | 1157 void toggle_grid (void) |
1158 { | |
9974
118158f10628
fix fltk backend window buttons
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9973
diff
changeset
|
1159 octave_value_list args; |
23097 | 1160 if (m_fp.get_currentaxes ().ok ()) |
1161 args(0) = m_fp.get_currentaxes ().as_octave_value (); | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1162 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
1163 octave::feval ("grid", args); |
7856
cf672485be43
Add toggle grid button & handle the 'a' & 'g' keys for auto axis and toggle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7852
diff
changeset
|
1164 mark_modified (); |
cf672485be43
Add toggle grid button & handle the 'a' & 'g' keys for auto axis and toggle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7852
diff
changeset
|
1165 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1166 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1167 void pixel2pos (const graphics_handle& ax, int px, int py, double& xx, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1168 double& yy) const |
7869 | 1169 { |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
1170 pixel2pos (gh_manager::get_object (ax), px, py, xx, yy); |
9640 | 1171 } |
7869 | 1172 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1173 void pixel2pos (graphics_object ax, int px, int py, double& xx, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1174 double& yy) const |
9640 | 1175 { |
7869 | 1176 if (ax && ax.isa ("axes")) |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1177 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1178 axes::properties& ap = |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1179 dynamic_cast<axes::properties&> (ax.get_properties ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1180 ColumnVector pp = ap.pixel2coord (px, py); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1181 xx = pp(0); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1182 yy = pp(1); |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1183 } |
7869 | 1184 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1185 |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
1186 graphics_handle pixel2axes_or_ca (int px, int py) |
7869 | 1187 { |
23097 | 1188 Matrix kids = m_fp.get_children (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20181
diff
changeset
|
1189 int len = kids.numel (); |
9442
2d73b19c5507
improve behavior of builtin
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
1190 |
9455 | 1191 for (int k = 0; k < len; k++) |
9443 | 1192 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1193 graphics_handle hnd = gh_manager::lookup (kids(k)); |
9455 | 1194 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1195 if (hnd.ok ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1196 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1197 graphics_object kid = gh_manager::get_object (hnd); |
9455 | 1198 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1199 if (kid.valid_object () && kid.isa ("axes")) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1200 { |
19296
8ba8f3d22189
__init_fltk__.cc: Allow selection of axes from whole plot area
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19152
diff
changeset
|
1201 Matrix bb = kid.get_properties ().get_boundingbox (false); |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1202 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1203 if (bb(0) <= px && px < (bb(0)+bb(2)) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1204 && bb(1) <= py && py < (bb(1)+bb(3))) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1205 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1206 return hnd; |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1207 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1208 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1209 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1210 } |
23097 | 1211 return m_fp.get_currentaxes (); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1212 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1213 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1214 void pixel2status (const graphics_handle& ax, int px0, int py0, |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1215 int px1 = -1, int py1 = -1) |
9640 | 1216 { |
1217 pixel2status (gh_manager::get_object (ax), px0, py0, px1, py1); | |
1218 } | |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
1219 |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
1220 void pixel2status (graphics_object ax, int px0, int py0, |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1221 int px1 = -1, int py1 = -1) |
7869 | 1222 { |
1223 double x0, y0, x1, y1; | |
21723
bae585228161
use namespace for numeric_limits
John W. Eaton <jwe@octave.org>
parents:
21721
diff
changeset
|
1224 x0 = y0 = x1 = y1 = octave::numeric_limits<double>::NaN (); |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1225 std::stringstream cbuf; |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1226 cbuf.precision (4); |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1227 cbuf.width (6); |
9640 | 1228 pixel2pos (ax, px0, py0, x0, y0); |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1229 cbuf << "[" << x0 << ", " << y0 << "]"; |
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1230 if (px1 >= 0) |
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1231 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1232 pixel2pos (ax, px1, py1, x1, y1); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1233 cbuf << " -> ["<< x1 << ", " << y1 << "]"; |
7842
1357bcae6e29
added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7841
diff
changeset
|
1234 } |
7840
2c8f693c32fd
convert_position not static anymore
Shai Ayal <shaiay@sourceforge.net>
parents:
7839
diff
changeset
|
1235 |
23097 | 1236 m_status->value (cbuf.str ().c_str ()); |
7869 | 1237 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1238 |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1239 void view2status (graphics_object ax) |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1240 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1241 if (ax && ax.isa ("axes")) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1242 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1243 axes::properties& ap = |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1244 dynamic_cast<axes::properties&> (ax.get_properties ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1245 std::stringstream cbuf; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1246 cbuf.precision (4); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1247 cbuf.width (6); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1248 Matrix v (1,2,0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1249 v = ap.get ("view").matrix_value (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1250 cbuf << "[azimuth: " << v(0) << ", elevation: " << v(1) << "]"; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1251 |
23097 | 1252 m_status->value (cbuf.str ().c_str ()); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1253 } |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1254 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1255 |
10517 | 1256 void set_currentpoint (int px, int py) |
1257 { | |
23097 | 1258 if (! m_fp.is_beingdeleted ()) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1259 { |
23097 | 1260 Matrix pos = m_fp.map_from_boundingbox (px, py); |
1261 m_fp.set_currentpoint (pos); | |
1262 graphics_object robj = gh_manager::get_object (m_fp.get_parent ()); | |
17144
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1263 root_figure::properties& rp = |
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1264 dynamic_cast<root_figure::properties&> (robj.get_properties ()); |
23097 | 1265 rp.set_currentfigure (m_fp.get___myhandle__ ().value ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1266 } |
10517 | 1267 } |
1268 | |
1269 void set_axes_currentpoint (graphics_object ax, int px, int py) | |
1270 { | |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1271 if (ax.valid_object () && ax.isa ("axes")) |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1272 { |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1273 axes::properties& ap = |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1274 dynamic_cast<axes::properties&> (ax.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1275 |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1276 Matrix x_zlim = ap.get_transform_zlim (); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1277 Matrix pos (2, 3, 0.0); |
10517 | 1278 |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1279 // front point (nearest to the viewer) |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1280 ColumnVector tmp = ap.get_transform ().untransform (px, py, x_zlim(0)); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1281 pos(0,0) = tmp(0); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1282 pos(0,1) = tmp(1); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1283 pos(0,2) = tmp(2); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1284 |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1285 // back point (furthest from the viewer) |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1286 tmp = ap.get_transform ().untransform (px, py, x_zlim(1)); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1287 pos(1,0) = tmp(0); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1288 pos(1,1) = tmp(1); |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1289 pos(1,2) = tmp(2); |
10517 | 1290 |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1291 ap.set_currentpoint (pos); |
21643
9191c24fb329
Fix autoscale affecting legend axes objects (bug #47765).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20181
diff
changeset
|
1292 if (ap.get_tag () != "legend" && ap.get_tag () != "colorbar") |
23097 | 1293 m_fp.set_currentaxes (ap.get___myhandle__ ().value ()); |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1294 } |
10517 | 1295 } |
1296 | |
17213
4407606d0939
FLTK toolkit: Simplify conditionals for uimenu presence.
Ben Abbott <bpabbott@mac.com>
parents:
17201
diff
changeset
|
1297 int menu_dy () |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1298 { |
23097 | 1299 if (m_uimenu->is_visible ()) |
1300 return m_menu_h; | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1301 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1302 return 0; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1303 } |
17213
4407606d0939
FLTK toolkit: Simplify conditionals for uimenu presence.
Ben Abbott <bpabbott@mac.com>
parents:
17201
diff
changeset
|
1304 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1305 octave_scalar_map format_key_event (int e_key, const char* e_text, int e_state) |
10517 | 1306 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1307 octave_scalar_map evt; |
10517 | 1308 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1309 evt.assign ("Character", octave_value (e_text)); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1310 evt.assign ("Modifier", octave_value (modifier2cell (e_state))); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1311 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1312 std::string key_str; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1313 std::ostringstream tmp_str; |
10517 | 1314 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1315 if (e_key == FL_Escape) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1316 key_str = "escape"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1317 else if (e_key == FL_Tab) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1318 key_str = "tab"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1319 else if (e_key == FL_Caps_Lock) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1320 key_str = "capslock"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1321 else if (e_key == FL_Shift_L || e_key == FL_Shift_R) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1322 key_str = "shift"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1323 else if (e_key == FL_Control_L || e_key == FL_Control_R) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1324 key_str = "control"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1325 else if (e_key == FL_Meta_L || e_key == FL_Meta_R) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1326 key_str = "windows"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1327 else if (e_key == FL_Alt_L || e_key == FL_Alt_R) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1328 key_str = "alt"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1329 else if (e_key == 32) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1330 key_str = "space"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1331 else if (e_key == FL_Enter) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1332 key_str = "return"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1333 else if (e_key == FL_BackSpace) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1334 key_str = "backspace"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1335 else if (e_key == FL_Print) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1336 key_str = "printscreen"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1337 else if (e_key == FL_Pause) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1338 key_str = "pause"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1339 else if (e_key == FL_Home) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1340 key_str = "home"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1341 else if (e_key == FL_End) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1342 key_str = "end"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1343 else if (e_key == FL_Insert) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1344 key_str = "insert"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1345 else if (e_key == FL_Page_Up) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1346 key_str = "pageup"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1347 else if (e_key == FL_Delete) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1348 key_str = "delete"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1349 else if (e_key == FL_Page_Down) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1350 key_str = "pagedown"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1351 else if (e_key == FL_Left) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1352 key_str = "leftarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1353 else if (e_key == FL_Up) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1354 key_str = "uparrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1355 else if (e_key == FL_Right) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1356 key_str = "rightarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1357 else if (e_key == FL_Down) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1358 key_str = "downarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1359 else if (e_key == FL_Num_Lock) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1360 key_str = "numlock"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1361 else if (e_key == 0xffaf) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1362 key_str = "divide"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1363 else if (e_key == 0xffaa) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1364 key_str = "multiply"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1365 else if (e_key == 0xffad) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1366 key_str = "subtract"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1367 else if (e_key == 0xffab) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1368 key_str = "add"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1369 else if (e_key == 0xff8d) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1370 key_str = "return"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1371 else if (e_key == 0xffac) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1372 key_str = "separator"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1373 else if (e_key >= 0xffb0 && e_key <= 0xffb9) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1374 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1375 tmp_str << "numpad" << (e_key - 0xffb0); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1376 key_str = tmp_str.str (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1377 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1378 else if (e_key >= (FL_F + 1) && e_key <= (FL_F + 12)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1379 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1380 tmp_str << "f" << (e_key - FL_F); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1381 key_str = tmp_str.str (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1382 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1383 else if (e_key == ',') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1384 key_str = "comma"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1385 else if (e_key == '.') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1386 key_str = "period"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1387 else if (e_key == '-') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1388 key_str = "hyphen"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1389 else if (e_key == '^' || e_key == '+' || e_key == '#' |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1390 || e_key == '<' || e_key == 0xfe03 /*AltGr*/) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1391 key_str = "0"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1392 else if (isalnum (e_key)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1393 key_str = std::tolower (e_key); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1394 else if (isprint (e_text[0])) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1395 key_str = "0"; |
10517 | 1396 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1397 evt.assign ("Key", octave_value (key_str)); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1398 return evt; |
10517 | 1399 } |
1400 | |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1401 Cell modifier2cell (int e_state) |
10517 | 1402 { |
1403 string_vector mod; | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1404 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1405 if (e_state & FL_SHIFT) |
10517 | 1406 mod.append (std::string ("shift")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1407 if (e_state & FL_CTRL) |
10517 | 1408 mod.append (std::string ("control")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1409 if (e_state & FL_ALT) |
10517 | 1410 mod.append (std::string ("alt")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1411 if (e_state & FL_COMMAND) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1412 mod.append (std::string ("command")); |
10517 | 1413 return Cell (mod); |
1414 } | |
1415 | |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1416 void resize (int xx, int yy, int ww, int hh) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1417 { |
10555 | 1418 Fl_Window::resize (xx, yy, ww, hh); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1419 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1420 Matrix bb (1, 4); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1421 bb(0) = xx; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1422 bb(1) = yy; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1423 bb(2) = ww; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1424 bb(3) = hh; |
14357
e7c74f56cd03
fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents:
14314
diff
changeset
|
1425 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1426 // update outerposition |
23097 | 1427 m_fp.set_boundingbox (bb, false, false); |
17131
ea19ea629a09
Proper placement of the menubar, the toolbar and plot canvas.
Ben Abbott <bpabbott@mac.com>
parents:
17079
diff
changeset
|
1428 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1429 // update position |
23097 | 1430 m_fp.set_boundingbox (outerposition2position (bb), true, false); |
7839
71eb1793f0db
fltk_backend can now handle figure.position changes
Shai Ayal <shaiay@sourceforge.net>
parents:
7834
diff
changeset
|
1431 } |
7869 | 1432 |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1433 bool pan_enabled (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1434 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1435 // Getting pan mode property: |
23097 | 1436 octave_value ov_pm = m_fp.get___pan_mode__ (); |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1437 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1438 octave_scalar_map pm = ov_pm.scalar_map_value (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1439 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1440 return pm.contents ("Enable").string_value () == "on"; |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1441 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1442 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1443 std::string pan_mode (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1444 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1445 // Getting pan mode property: |
23097 | 1446 octave_value ov_pm = m_fp.get___pan_mode__ (); |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1447 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1448 octave_scalar_map pm = ov_pm.scalar_map_value (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1449 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1450 return pm.contents ("Motion").string_value (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1451 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1452 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1453 bool rotate_enabled (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1454 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1455 // Getting rotate mode property: |
23097 | 1456 octave_value ov_rm = m_fp.get___rotate_mode__ (); |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1457 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1458 octave_scalar_map rm = ov_rm.scalar_map_value (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1459 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1460 return rm.contents ("Enable").string_value () == "on"; |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1461 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1462 |
7869 | 1463 int handle (int event) |
1464 { | |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1465 if (event == FL_FOCUS) |
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1466 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1467 |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1468 graphics_handle gh; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1469 |
23097 | 1470 if (! m_fp.is_beingdeleted ()) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1471 { |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1472 //std::cout << "plot_window::handle event = " << fl_eventnames[event] << std::endl; |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1473 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1474 // FLTK resends keyboard events with flipped case if all |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1475 // widgets rejects the event. |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1476 // See Event Propagation http://www.fltk.org/doc-1.3/events.html |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1477 static bool key_resent_detected = false; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1478 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1479 switch (event) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1480 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1481 case FL_SHORTCUT: |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1482 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1483 // check if it a resent event with switched case |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1484 static int last_event_key = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1485 static char last_event_text = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1486 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1487 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1488 char e_text = Fl::event_text ()[0]; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1489 key_resent_detected = (e_key == last_event_key |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1490 && std::tolower (last_event_text) == std::tolower (e_text) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1491 && ((islower (last_event_text) && isupper (e_text)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1492 || (isupper (last_event_text) && islower (e_text)))); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1493 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1494 last_event_key = e_key; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1495 last_event_text = e_text; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1496 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1497 break; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1498 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1499 case FL_KEYDOWN: |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1500 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1501 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1502 const char *e_text = Fl::event_text (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1503 int e_state = Fl::event_state (); |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1504 octave_scalar_map evt = format_key_event (e_key, e_text, e_state); |
10517 | 1505 |
23097 | 1506 m_fp.set_currentcharacter (std::string (e_text)); |
1507 | |
1508 if (! m_fp.get_keypressfcn ().is_empty () | |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1509 && (evt.contents ("Key").length () > 0)) |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1510 { |
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1511 // Update CurrentPoint before callback |
23097 | 1512 if (Fl::event_inside (m_canvas)) |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1513 { |
23097 | 1514 m_pos_x = Fl::event_x (); |
1515 m_pos_y = Fl::event_y () - menu_dy (); | |
1516 | |
1517 set_currentpoint (m_pos_x, m_pos_y); | |
1518 | |
1519 gh = pixel2axes_or_ca (m_pos_x, m_pos_y); | |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1520 |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1521 if (gh.ok ()) |
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1522 { |
23097 | 1523 m_ax_obj = gh_manager::get_object (gh); |
1524 set_axes_currentpoint (m_ax_obj, m_pos_x, m_pos_y); | |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1525 } |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
1526 } |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1527 |
23097 | 1528 m_fp.execute_keypressfcn (evt); |
20118
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1529 } |
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1530 |
144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
Rik <rik@octave.org>
parents:
20108
diff
changeset
|
1531 // Handle special keys used in toolbar |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1532 switch (e_key) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1533 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1534 case 'a': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1535 case 'A': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1536 axis_auto (); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1537 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1538 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1539 case 'g': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1540 case 'G': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1541 toggle_grid (); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1542 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1543 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1544 case 'p': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1545 case 'P': |
23097 | 1546 m_fp.set___mouse_mode__ ("pan"); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1547 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1548 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1549 case 'r': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1550 case 'R': |
23097 | 1551 m_fp.set___mouse_mode__ ("rotate"); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1552 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1553 } |
10517 | 1554 } |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1555 break; |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1556 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1557 case FL_KEYUP: |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1558 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1559 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1560 int e_state = Fl::event_state (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1561 octave_scalar_map evt; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1562 if (key_resent_detected && Fl::event_length () == 1) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1563 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1564 // FLTK flipped the case of Fl::event_text because no |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1565 // widget wanted the FL_KEYDOWN event. |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1566 char tmp_e_text[2]; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1567 tmp_e_text[0] = Fl::event_text ()[0]; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1568 tmp_e_text[1] = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1569 // Undo the case flip |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1570 if (std::islower (tmp_e_text[0])) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1571 tmp_e_text[0] = std::toupper (tmp_e_text[0]); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1572 else |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1573 tmp_e_text[0] = std::tolower (tmp_e_text[0]); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1574 evt = format_key_event (e_key, tmp_e_text, e_state); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1575 } |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1576 else |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1577 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1578 const char *e_text = Fl::event_text (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1579 evt = format_key_event (e_key, e_text, e_state); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1580 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1581 |
23097 | 1582 if (! m_fp.get_keyreleasefcn ().is_empty () |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1583 && (evt.contents ("Key").length () > 0)) |
23097 | 1584 m_fp.execute_keyreleasefcn (evt); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1585 return 1; |
10517 | 1586 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1587 break; |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1588 } |
7856
cf672485be43
Add toggle grid button & handle the 'a' & 'g' keys for auto axis and toggle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7852
diff
changeset
|
1589 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1590 // Events we only handle if they are in the canvas area. |
23097 | 1591 if (Fl::event_inside (m_canvas)) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1592 switch (event) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1593 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1594 case FL_MOVE: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1595 pixel2status (pixel2axes_or_ca (Fl::event_x (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1596 Fl::event_y () - menu_dy ()), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1597 Fl::event_x (), Fl::event_y () - menu_dy ()); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1598 return 1; |
7869 | 1599 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1600 case FL_PUSH: |
23097 | 1601 m_pos_x = Fl::event_x (); |
1602 m_pos_y = Fl::event_y () - menu_dy (); | |
1603 | |
1604 set_currentpoint (m_pos_x, m_pos_y); | |
19021
9609f345823e
Implement figure property SelectionType for FLTK
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19020
diff
changeset
|
1605 |
19998
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1606 if (Fl::event_clicks ()) |
23097 | 1607 m_fp.set_selectiontype ("open"); |
19998
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1608 else if (Fl::event_button () == FL_MIDDLE_MOUSE |
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1609 || (Fl::event_button () == FL_LEFT_MOUSE |
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1610 && Fl::event_shift ())) |
23097 | 1611 m_fp.set_selectiontype ("extend"); |
19998
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1612 else if (Fl::event_button () == FL_RIGHT_MOUSE |
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1613 || (Fl::event_button () == FL_LEFT_MOUSE |
91e2212b060d
Fix FLTK SelectionType for Middle Button and double clicks (bug #44669).
Rik <rik@octave.org>
parents:
19976
diff
changeset
|
1614 && Fl::event_ctrl ())) |
23097 | 1615 m_fp.set_selectiontype ("alt"); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1616 else |
23097 | 1617 m_fp.set_selectiontype ("normal"); |
1618 | |
1619 gh = pixel2axes_or_ca (m_pos_x, m_pos_y); | |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1620 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1621 if (gh.ok ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1622 { |
23097 | 1623 m_ax_obj = gh_manager::get_object (gh); |
1624 set_axes_currentpoint (m_ax_obj, m_pos_x, m_pos_y); | |
19946
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1625 } |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1626 |
19946
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1627 // Ensure windowbuttondownfcn is called after currentpoint |
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1628 // is updated but before calling buttondownfcn. |
23097 | 1629 if (! m_fp.get_windowbuttondownfcn ().is_empty ()) |
1630 m_fp.execute_windowbuttondownfcn (Fl::event_button ()); | |
19946
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1631 |
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1632 if (gh.ok ()) |
4910b70d7328
Ensure correct coordinates are available in windowbuttondownfcn callback
Mike Miller <mtmiller@octave.org>
parents:
19891
diff
changeset
|
1633 { |
23097 | 1634 int ndim = calc_dimensions (m_ax_obj); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1635 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1636 if (ndim == 3) |
23097 | 1637 m_rotate->activate (); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1638 else // ndim == 2 |
23097 | 1639 m_rotate->deactivate (); |
1640 | |
1641 m_fp.set_currentobject (m_ax_obj.get_handle ().value ()); | |
1642 | |
1643 base_properties& props = m_ax_obj.get_properties (); | |
20119
f46f6d906654
Avoid unnecessarily calling graphics callbacks in FLTK.
Rik <rik@octave.org>
parents:
20118
diff
changeset
|
1644 if (! props.get_buttondownfcn ().is_empty ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1645 props.execute_buttondownfcn (Fl::event_button ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1646 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1647 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1648 } |
23097 | 1649 else if (! m_fp.get_buttondownfcn ().is_empty ()) |
1650 m_fp.execute_buttondownfcn (Fl::event_button ()); | |
9455 | 1651 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1652 break; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1653 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1654 case FL_DRAG: |
23097 | 1655 if (! m_fp.get_windowbuttonmotionfcn ().is_empty ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1656 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1657 set_currentpoint (Fl::event_x (), Fl::event_y () - menu_dy ()); |
23097 | 1658 m_fp.execute_windowbuttonmotionfcn (); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1659 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1660 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1661 if (Fl::event_button () == 1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1662 { |
23097 | 1663 if (m_ax_obj && m_ax_obj.isa ("axes")) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1664 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1665 axes::properties& ap = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1666 dynamic_cast<axes::properties&> |
23097 | 1667 (m_ax_obj.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1668 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1669 // Don't pan or rotate legend |
21641
6459479840ba
Restore rotate capability for FLTK toolkit (bug #47698).
Rik <rik@octave.org>
parents:
21575
diff
changeset
|
1670 if (ap.get_tag () != "legend") |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1671 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1672 if (rotate_enabled ()) |
23097 | 1673 view2status (m_ax_obj); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1674 else |
23097 | 1675 pixel2status (m_ax_obj, m_pos_x, m_pos_y, |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1676 Fl::event_x (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1677 Fl::event_y () - menu_dy ()); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1678 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1679 double x0, y0, x1, y1; |
23097 | 1680 Matrix pos = m_fp.get_boundingbox (true); |
1681 pixel2pos (m_ax_obj, m_pos_x, m_pos_y, x0, y0); | |
1682 pixel2pos (m_ax_obj, Fl::event_x (), | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1683 Fl::event_y () - menu_dy (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1684 x1, y1); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1685 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1686 if (pan_enabled ()) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
1687 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
1688 std::string mode = pan_mode (); |
19891
fa290c42197e
Implement x- and y-only panning for FLTK (bug #44408).
Rik <rik@octave.org>
parents:
19872
diff
changeset
|
1689 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
1690 ap.translate_view (mode, x0, x1, y0, y1); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22370
diff
changeset
|
1691 } |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1692 else if (rotate_enabled ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1693 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1694 double daz, del; |
23097 | 1695 daz = (Fl::event_x () - m_pos_x) / pos(2) * 360; |
1696 del = (Fl::event_y () - menu_dy () - m_pos_y) | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1697 / pos(3) * 360; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1698 ap.rotate_view (del, daz); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1699 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1700 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1701 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1702 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1703 // move the position of the legend |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1704 Matrix pos = ap.get_position ().matrix_value (); |
23097 | 1705 pos(0) += double (Fl::event_x () - m_pos_x) |
1706 / m_canvas->w (); | |
1707 pos(1) -= double (Fl::event_y () - menu_dy () - m_pos_y) | |
1708 / m_canvas->h (); | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1709 ap.set_position (pos); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1710 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1711 |
23097 | 1712 m_pos_x = Fl::event_x (); |
1713 m_pos_y = Fl::event_y () - menu_dy (); | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1714 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1715 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1716 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1717 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1718 else if (Fl::event_button () == 3) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1719 { |
23097 | 1720 pixel2status (m_ax_obj, m_pos_x, m_pos_y, |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1721 Fl::event_x (), Fl::event_y () - menu_dy ()); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1722 Matrix zoom_box (1,4,0); |
23097 | 1723 zoom_box(0) = m_pos_x; |
1724 zoom_box(1) = m_pos_y; | |
1725 zoom_box(2) = Fl::event_x (); | |
1726 zoom_box(3) = Fl::event_y () - menu_dy (); | |
1727 m_canvas->set_zoom_box (zoom_box); | |
1728 m_canvas->zoom (true); | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1729 mark_modified (); |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1730 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1731 } |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1732 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1733 break; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1734 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1735 case FL_MOUSEWHEEL: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1736 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1737 graphics_object ax = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1738 gh_manager::get_object (pixel2axes_or_ca (Fl::event_x (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1739 Fl::event_y () |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1740 - menu_dy ())); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1741 if (ax && ax.isa ("axes")) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1742 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1743 axes::properties& ap = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1744 dynamic_cast<axes::properties&> (ax.get_properties ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1745 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1746 // Control how fast to zoom when using scroll wheel. |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1747 double wheel_zoom_speed = ap.get_mousewheelzoom (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1748 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1749 // Determine if we're zooming in or out. |
19867
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1750 const double factor = (Fl::event_dy () < 0 |
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1751 ? 1 / (1.0 - wheel_zoom_speed) |
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1752 : 1.0 - wheel_zoom_speed); |
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1753 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1754 // Get the point we're zooming about. |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1755 double x1, y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1756 pixel2pos (ax, Fl::event_x (), Fl::event_y () - menu_dy (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1757 x1, y1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1758 |
19867
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1759 // FIXME: should we only zoom about point for 2D plots? |
6ba3d0f7c6e8
improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1760 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1761 ap.zoom_about_point ("both", x1, y1, factor, false); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1762 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1763 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1764 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1765 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1766 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1767 case FL_RELEASE: |
23097 | 1768 if (! m_fp.get_windowbuttonupfcn ().is_empty ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1769 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1770 set_currentpoint (Fl::event_x (), Fl::event_y () - menu_dy ()); |
23097 | 1771 m_fp.execute_windowbuttonupfcn (); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1772 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1773 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1774 if ((Fl::event_button () == 1) && Fl::event_clicks ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1775 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1776 // Double click |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1777 set_on_ax_obj ("xlimmode", "auto"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1778 set_on_ax_obj ("ylimmode", "auto"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1779 set_on_ax_obj ("zlimmode", "auto"); |
20061
402e6678673b
Redraw FLTK figure after double-click "zoom out".
Rik <rik@octave.org>
parents:
20060
diff
changeset
|
1780 mark_modified (); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1781 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1782 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1783 if (Fl::event_button () == 3) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1784 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1785 // End of drag -- zoom. |
23097 | 1786 if (m_canvas->zoom ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1787 { |
23097 | 1788 m_canvas->zoom (false); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1789 double x0,y0,x1,y1; |
23097 | 1790 if (m_ax_obj && m_ax_obj.isa ("axes")) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1791 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1792 axes::properties& ap = dynamic_cast<axes::properties&> |
23097 | 1793 (m_ax_obj.get_properties ()); |
1794 pixel2pos (m_ax_obj, m_pos_x, m_pos_y, x0, y0); | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1795 int pos_x1 = Fl::event_x (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1796 int pos_y1 = Fl::event_y () - menu_dy (); |
23097 | 1797 pixel2pos (m_ax_obj, pos_x1, pos_y1, x1, y1); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1798 Matrix xl (1,2,0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1799 Matrix yl (1,2,0); |
23097 | 1800 int dx = abs (m_pos_x - pos_x1); |
1801 int dy = abs (m_pos_y - pos_y1); | |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1802 // Smallest zoom box must be 4 pixels square |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1803 if ((dx > 4) && (dy > 4)) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1804 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1805 if (x0 < x1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1806 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1807 xl(0) = x0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1808 xl(1) = x1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1809 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1810 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1811 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1812 xl(0) = x1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1813 xl(1) = x0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1814 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1815 if (y0 < y1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1816 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1817 yl(0) = y0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1818 yl(1) = y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1819 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1820 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1821 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1822 yl(0) = y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1823 yl(1) = y0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1824 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1825 ap.zoom ("both", xl, yl); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1826 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1827 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1828 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1829 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1830 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1831 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1832 break; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1833 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1834 } |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1835 //std::cout << "plot_window::handle wasn't interested in event " << fl_eventnames[event] << std::endl; |
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1836 return Fl_Window::handle (event); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1837 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1838 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1839 |
7869 | 1840 class figure_manager |
1841 { | |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1842 private: |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1843 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1844 figure_manager (void) = default; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1845 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1846 public: |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1847 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1848 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1849 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1850 figure_manager (const figure_manager&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1851 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1852 figure_manager& operator = (const figure_manager&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1853 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1854 ~figure_manager (void) |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1855 { |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1856 close_all (); |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1857 } |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1858 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1859 static bool instance_ok (void) |
7869 | 1860 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1861 bool retval = true; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1862 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1863 if (! instance) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1864 instance = new figure_manager (); |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1865 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1866 if (! instance) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
1867 error ("unable to create figure_manager object!"); |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1868 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1869 return retval; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1870 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1871 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1872 static void close_all (void) |
7869 | 1873 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1874 if (instance_ok ()) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1875 instance->do_close_all (); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1876 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1877 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1878 static void new_window (figure::properties& fp) |
7869 | 1879 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1880 if (instance_ok ()) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1881 instance->do_new_window (fp); |
7869 | 1882 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1883 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1884 static void delete_window (int idx) |
7869 | 1885 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1886 if (instance_ok ()) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1887 instance->do_delete_window (idx); |
7869 | 1888 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1889 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1890 static void delete_window (const std::string& idx_str) |
7869 | 1891 { |
1892 delete_window (str2idx (idx_str)); | |
1893 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1894 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1895 static void renumber_figure (const std::string& idx_str, double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1896 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1897 if (instance_ok ()) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1898 instance->do_renumber_figure (str2idx (idx_str), new_number); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1899 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1900 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1901 static void toggle_window_visibility (int idx, bool is_visible) |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1902 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1903 if (instance_ok ()) |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1904 instance->do_toggle_window_visibility (idx, is_visible); |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1905 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1906 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1907 static void toggle_window_visibility (const std::string& idx_str, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1908 bool is_visible) |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1909 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1910 toggle_window_visibility (str2idx (idx_str), is_visible); |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1911 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1912 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1913 static void mark_modified (int idx) |
7869 | 1914 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1915 if (instance_ok ()) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1916 instance->do_mark_modified (idx); |
7869 | 1917 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1918 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1919 static void mark_modified (const graphics_handle& gh) |
7869 | 1920 { |
1921 mark_modified (hnd2idx (gh)); | |
1922 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1923 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1924 static void set_name (int idx) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1925 { |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1926 if (instance_ok ()) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1927 instance->do_set_name (idx); |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1928 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1929 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1930 static void set_name (const std::string& idx_str) |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1931 { |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1932 set_name (str2idx (idx_str)); |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1933 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1934 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1935 static Matrix get_size (int idx) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1936 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1937 return instance_ok () ? instance->do_get_size (idx) : Matrix (); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1938 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1939 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1940 static Matrix get_size (const graphics_handle& gh) |
7869 | 1941 { |
1942 return get_size (hnd2idx (gh)); | |
1943 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1944 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1945 static void print (const graphics_handle& gh, const std::string& cmd, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1946 const std::string& term) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1947 { |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1948 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1949 instance->do_print (hnd2idx (gh), cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1950 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1951 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1952 static void uimenu_update (const graphics_handle& figh, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1953 const graphics_handle& uimenuh, int id) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1954 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1955 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1956 instance->do_uimenu_update (hnd2idx (figh), uimenuh, id); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1957 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1958 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1959 static void update_canvas (const graphics_handle& gh, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1960 const graphics_handle& ca) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1961 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1962 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1963 instance->do_update_canvas (hnd2idx (gh), ca); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1964 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1965 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1966 static void update_boundingbox (const std::string& fig_idx_str, |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1967 bool internal) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1968 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1969 if (instance_ok ()) |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1970 instance->do_update_boundingbox (str2idx (fig_idx_str), internal); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1971 } |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1972 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1973 static void toggle_menubar_visibility (const std::string& fig_idx_str, |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1974 bool menubar_is_figure) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1975 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1976 if (instance_ok ()) |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1977 instance->do_toggle_menubar_visibility (str2idx (fig_idx_str), |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1978 menubar_is_figure); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1979 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1980 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1981 private: |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1982 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1983 static figure_manager *instance; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1984 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1985 // Singelton -- hide all of the above. |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1986 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1987 static int curr_index; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1988 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1989 typedef std::map<int, plot_window*> window_map; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1990 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1991 typedef window_map::iterator wm_iterator;; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
1992 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1993 window_map windows; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1994 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1995 static std::string fltk_idx_header; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1996 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1997 void do_close_all (void) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1998 { |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
1999 wm_iterator win; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2000 for (win = windows.begin (); win != windows.end (); win++) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2001 delete win->second; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2002 windows.clear (); |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2003 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2004 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2005 void do_new_window (figure::properties& fp) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2006 { |
13798
718f78b01de1
allow initial position to be set for fltk windows
John W. Eaton <jwe@octave.org>
parents:
13721
diff
changeset
|
2007 int idx = figprops2idx (fp); |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2008 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2009 if (idx >= 0 && windows.find (idx) == windows.end ()) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2010 { |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2011 Matrix pos = fp.get_outerposition ().matrix_value (); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2012 bool internal = false; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2013 // check if figure::properties::outerposition is default -1.0 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2014 if (pos(2) != -1.0 && pos(3) != -1.0) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2015 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2016 pos = fp.get_boundingbox (internal); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2017 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2018 else |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2019 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2020 // use position |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2021 internal = true; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2022 pos = fp.get_boundingbox (internal); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2023 } |
13798
718f78b01de1
allow initial position to be set for fltk windows
John W. Eaton <jwe@octave.org>
parents:
13721
diff
changeset
|
2024 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2025 idx2figprops (curr_index, fp); |
13798
718f78b01de1
allow initial position to be set for fltk windows
John W. Eaton <jwe@octave.org>
parents:
13721
diff
changeset
|
2026 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
2027 windows[curr_index++] = new plot_window (pos(0), pos(1), pos(2), pos(3), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
2028 fp, internal); |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2029 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2030 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2031 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2032 void do_delete_window (int idx) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2033 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2034 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2035 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2036 if (win != windows.end ()) |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2037 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2038 delete win->second; |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2039 windows.erase (win); |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2040 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2041 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2042 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2043 void do_renumber_figure (int idx, double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2044 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2045 wm_iterator win = windows.find (idx); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2046 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2047 if (win != windows.end ()) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2048 win->second->renumber (new_number); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2049 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2050 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2051 void do_toggle_window_visibility (int idx, bool is_visible) |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2052 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2053 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2054 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2055 if (win != windows.end ()) |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2056 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2057 if (is_visible) |
19453
728873ccd637
Show canvas if figure was created with visible off (bug #41895)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19296
diff
changeset
|
2058 { |
728873ccd637
Show canvas if figure was created with visible off (bug #41895)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19296
diff
changeset
|
2059 win->second->show (); |
728873ccd637
Show canvas if figure was created with visible off (bug #41895)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19296
diff
changeset
|
2060 win->second->show_canvas (); |
728873ccd637
Show canvas if figure was created with visible off (bug #41895)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19296
diff
changeset
|
2061 } |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2062 else |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2063 win->second->hide (); |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2064 |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2065 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2066 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2067 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2068 void do_toggle_menubar_visibility (int fig_idx, bool menubar_is_figure) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2069 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2070 wm_iterator win = windows.find (fig_idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2071 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2072 if (win != windows.end ()) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2073 { |
11585 | 2074 if (menubar_is_figure) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2075 win->second->show_menubar (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2076 else |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2077 win->second->hide_menubar (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2078 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2079 win->second->redraw (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2080 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2081 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2082 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2083 void do_mark_modified (int idx) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2084 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2085 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2086 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2087 if (win != windows.end ()) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2088 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2089 win->second->mark_modified (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2090 } |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2091 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2092 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
2093 void do_set_name (int idx) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
2094 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2095 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2096 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2097 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2098 win->second->set_name (); |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
2099 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
2100 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2101 Matrix do_get_size (int idx) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2102 { |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2103 Matrix sz (1, 2, 0.0); |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2104 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2105 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2106 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2107 if (win != windows.end ()) |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2108 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2109 sz(0) = win->second->w (); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2110 sz(1) = win->second->h (); |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2111 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2112 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2113 return sz; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2114 } |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2115 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
2116 void do_print (int idx, const std::string& cmd, const std::string& term) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2117 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2118 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2119 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2120 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2121 win->second->print (cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2122 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2123 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2124 void do_uimenu_update (int idx, const graphics_handle& gh, int id) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2125 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2126 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2127 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2128 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2129 win->second->uimenu_update (gh, id); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2130 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2131 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2132 void do_update_canvas (int idx, const graphics_handle& ca) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2133 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2134 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2135 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2136 if (win != windows.end ()) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2137 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2138 if (ca.ok ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2139 win->second->show_canvas (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2140 else |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2141 win->second->hide_canvas (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2142 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2143 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2144 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2145 void do_update_boundingbox (int idx, bool internal) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2146 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2147 wm_iterator win = windows.find (idx); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2148 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2149 if (win != windows.end ()) |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2150 win->second->update_boundingbox (internal); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2151 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2152 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2153 static int str2idx (const caseless_str& clstr) |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2154 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2155 int ind; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2156 if (clstr.find (fltk_idx_header,0) == 0) |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2157 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2158 std::istringstream istr (clstr.substr (fltk_idx_header.size ())); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2159 if (istr >> ind) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2160 return ind; |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2161 } |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
2162 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2163 error ("figure_manager: could not recognize fltk index"); |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2164 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2165 |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2166 void idx2figprops (int idx, figure::properties& fp) |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2167 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2168 std::ostringstream ind_str; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2169 ind_str << fltk_idx_header << idx; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2170 fp.set___plot_stream__ (ind_str.str ()); |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2171 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2172 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2173 static int figprops2idx (const figure::properties& fp) |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2174 { |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2175 if (fp.get___graphics_toolkit__ () == FLTK_GRAPHICS_TOOLKIT_NAME) |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2176 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2177 octave_value ps = fp.get___plot_stream__ (); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2178 if (ps.is_string ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2179 return str2idx (ps.string_value ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2180 else |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2181 return 0; |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2182 } |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
2183 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2184 error ("figure_manager: figure is not fltk"); |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2185 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2186 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2187 static int hnd2idx (double h) |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2188 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2189 graphics_object fobj = gh_manager::get_object (h); |
7869 | 2190 if (fobj && fobj.isa ("figure")) |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2191 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2192 figure::properties& fp = |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2193 dynamic_cast<figure::properties&> (fobj.get_properties ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2194 return figprops2idx (fp); |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2195 } |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
2196 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2197 error ("figure_manager: H (= %g) is not a figure", h); |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2198 } |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2199 |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2200 static int hnd2idx (const graphics_handle& fh) |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2201 { |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2202 return hnd2idx (fh.value ()); |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2203 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2204 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2205 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2206 figure_manager *figure_manager::instance = 0; |
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2207 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2208 std::string figure_manager::fltk_idx_header="fltk index="; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2209 int figure_manager::curr_index = 1; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2210 |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2211 static bool toolkit_loaded = false; |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
2212 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2213 class fltk_graphics_toolkit : public base_graphics_toolkit |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2214 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2215 public: |
23097 | 2216 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2217 fltk_graphics_toolkit (void) |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2218 : base_graphics_toolkit (FLTK_GRAPHICS_TOOLKIT_NAME), |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2219 input_event_hook_fcn_id () |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2220 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2221 Fl::visual (FL_RGB); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2222 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2223 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22865
diff
changeset
|
2224 ~fltk_graphics_toolkit (void) = default; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2225 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2226 bool is_valid (void) const { return true; } |
7869 | 2227 |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
12968
diff
changeset
|
2228 bool initialize (const graphics_object& go) |
17079
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2229 { |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2230 if (go.isa ("figure") |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2231 || go.isa ("uimenu")) |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2232 { |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2233 if (go.isa ("uimenu")) |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2234 update (go, uimenu::properties::ID_LABEL); |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2235 |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2236 return true; |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2237 } |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2238 |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2239 return false; |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2240 } |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
12968
diff
changeset
|
2241 |
10973
a8235d26b57a
improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents:
10972
diff
changeset
|
2242 void finalize (const graphics_object& go) |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2243 { |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2244 if (go.isa ("figure")) |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2245 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2246 octave_value ov = go.get (caseless_str ("__plot_stream__")); |
10972
14d16530ad59
fltk_backend::object_destroyed: don't call delete_window if __plot_stream__ is empty
John W. Eaton <jwe@octave.org>
parents:
10955
diff
changeset
|
2247 |
14d16530ad59
fltk_backend::object_destroyed: don't call delete_window if __plot_stream__ is empty
John W. Eaton <jwe@octave.org>
parents:
10955
diff
changeset
|
2248 if (! ov.is_empty ()) |
14d16530ad59
fltk_backend::object_destroyed: don't call delete_window if __plot_stream__ is empty
John W. Eaton <jwe@octave.org>
parents:
10955
diff
changeset
|
2249 figure_manager::delete_window (ov.string_value ()); |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2250 } |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2251 } |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2252 |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
2253 void uimenu_set___fltk_label__ (graphics_object uimenu_obj) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2254 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2255 if (uimenu_obj.valid_object ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2256 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2257 uimenu::properties& uimenup = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2258 dynamic_cast<uimenu::properties&> (uimenu_obj.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2259 std::string fltk_label = uimenup.get_label (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2260 graphics_object go = gh_manager::get_object (uimenu_obj.get_parent ()); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2261 if (go.isa ("uimenu")) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2262 fltk_label = dynamic_cast<const uimenu::properties&> |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
2263 (go.get_properties ()).get___fltk_label__ () |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2264 + "/" |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2265 + fltk_label; |
20108
de1377a638d7
Let annotation work with fltk again
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20061
diff
changeset
|
2266 else if (go.isa ("figure") || go.isa ("uicontextmenu")) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2267 ; |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2268 else |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20428
diff
changeset
|
2269 error ("invalid parent object\n"); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2270 |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
2271 uimenup.set___fltk_label__ (fltk_label); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2272 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2273 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2274 |
10973
a8235d26b57a
improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents:
10972
diff
changeset
|
2275 void update (const graphics_object& go, int id) |
7869 | 2276 { |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2277 if (go.isa ("figure")) |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2278 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2279 octave_value ov = go.get (caseless_str ("__plot_stream__")); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2280 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2281 if (! ov.is_empty ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2282 { |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2283 const figure::properties& fp = |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2284 dynamic_cast<const figure::properties&> (go.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2285 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2286 switch (id) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2287 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2288 case base_properties::ID_VISIBLE: |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2289 figure_manager::toggle_window_visibility (ov.string_value (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2290 fp.is_visible ()); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2291 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2292 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2293 case figure::properties::ID_MENUBAR: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2294 figure_manager::toggle_menubar_visibility |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2295 (ov.string_value (), fp.menubar_is ("figure")); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2296 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2297 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2298 case figure::properties::ID_CURRENTAXES: |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2299 figure_manager::update_canvas (go.get_handle (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2300 fp.get_currentaxes ()); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2301 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2302 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2303 case figure::properties::ID_NAME: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2304 case figure::properties::ID_NUMBERTITLE: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2305 figure_manager::set_name (ov.string_value ()); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2306 break; |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2307 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2308 case figure::properties::ID_INTEGERHANDLE: |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2309 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2310 std::string tmp = ov.string_value (); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2311 graphics_handle gh = fp.get___myhandle__ (); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2312 figure_manager::renumber_figure (tmp, gh.value ()); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2313 figure_manager::set_name (tmp); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2314 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2315 break; |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
2316 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2317 case figure::properties::ID_POSITION: |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2318 figure_manager::update_boundingbox (ov.string_value (), true); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2319 break; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2320 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2321 case figure::properties::ID_OUTERPOSITION: |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2322 figure_manager::update_boundingbox (ov.string_value (), false); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2323 break; |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2324 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2325 } |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2326 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2327 else if (go.isa ("uimenu")) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2328 { |
11239
5fa7667f90e5
Add prefix ID_ to property ids to avoid name clash on windows
Kai Habel <kai.habel@gmx.de>
parents:
11224
diff
changeset
|
2329 if (id == uimenu::properties::ID_LABEL) |
22622
4191f8b5070c
Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
2330 uimenu_set___fltk_label__ (go); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2331 |
14854
5ae9f0f77635
maint: Use Octave coding conventions for coddling parenthis is DLD-FUNCTIONS directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2332 graphics_object fig = go.get_ancestor ("figure"); |
5ae9f0f77635
maint: Use Octave coding conventions for coddling parenthis is DLD-FUNCTIONS directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2333 figure_manager::uimenu_update (fig.get_handle (), go.get_handle (), id); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2334 } |
7869 | 2335 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2336 |
8077 | 2337 void redraw_figure (const graphics_object& go) const |
7869 | 2338 { |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2339 // We scan all figures and add those which use FLTK. |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2340 graphics_object obj = gh_manager::get_object (0); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2341 if (obj && obj.isa ("root")) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2342 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2343 base_properties& props = obj.get_properties (); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2344 Matrix children = props.get_all_children (); |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
2345 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2346 for (octave_idx_type n = 0; n < children.numel (); n++) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2347 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2348 graphics_object fobj = gh_manager::get_object (children (n)); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2349 if (fobj && fobj.isa ("figure")) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2350 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2351 figure::properties& fp = |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2352 dynamic_cast<figure::properties&> (fobj.get_properties ()); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2353 if (fp.get___graphics_toolkit__ () |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2354 == FLTK_GRAPHICS_TOOLKIT_NAME) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2355 figure_manager::new_window (fp); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2356 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2357 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2358 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2359 |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2360 figure_manager::mark_modified (go.get_handle ()); |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2361 Fl::check (); |
7869 | 2362 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2363 |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2364 void print_figure (const graphics_object& go, |
10857
2224236440c0
add more terminal types to gl2ps-renderer
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10809
diff
changeset
|
2365 const std::string& term, |
21699
21fdab18f857
Remove reference to drawnow 'mono' throughout scripts and code, update args test
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
21644
diff
changeset
|
2366 const std::string& file_cmd, |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2367 const std::string& /*debug_file*/) const |
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2368 { |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
2369 figure_manager::print (go.get_handle (), file_cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2370 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2371 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2372 Matrix get_canvas_size (const graphics_handle& fh) const |
7869 | 2373 { |
8267
f2f1d07a7f0f
fltk_backend.cc (class figure_manager): implement in way consistent with other singleton classes in Octave
John W. Eaton <jwe@octave.org>
parents:
8263
diff
changeset
|
2374 return figure_manager::get_size (fh); |
7869 | 2375 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2376 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2377 /* |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2378 double get_screen_resolution (void) const |
7869 | 2379 { |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
2380 // FLTK doesn't give this info. |
7869 | 2381 return 72.0; |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2382 |
21562
6c2fd62db1f7
maint: Eliminate accidental double spaces in code.
Rik <rik@octave.org>
parents:
21374
diff
changeset
|
2383 // FIXME: FLTK >= 1.3.0 could do this with Fl::screen_dpi (h, v, n) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2384 // but do we need it? |
7869 | 2385 } |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2386 */ |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2387 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2388 Matrix get_screen_size (void) const |
7869 | 2389 { |
2390 Matrix sz (1, 2, 0.0); | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2391 sz(0) = Fl::w (); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2392 sz(1) = Fl::h (); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2393 return sz; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2394 } |
14014
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2395 |
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2396 void close (void) |
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2397 { |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2398 if (toolkit_loaded) |
14014
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2399 { |
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2400 munlock ("__init_fltk__"); |
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2401 |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2402 octave_value_list args = input_event_hook_fcn_id; |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2403 args.append (false); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2404 Fremove_input_event_hook (args, 0); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2405 input_event_hook_fcn_id = octave_value_list (); |
14014
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2406 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2407 figure_manager::close_all (); |
14014
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2408 } |
907d03def9d5
explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents:
14002
diff
changeset
|
2409 } |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2410 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2411 void set_input_event_hook_id (const octave_value_list& id) |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2412 { |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2413 input_event_hook_fcn_id = id; |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2414 } |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2415 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2416 private: |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2417 octave_value_list input_event_hook_fcn_id; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2418 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2419 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2420 #endif |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2421 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2422 DEFUN_DLD (__fltk_check__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2423 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2424 @deftypefn {} {} __fltk_check__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2425 Undocumented internal function. Calls Fl::check () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2426 @end deftypefn */) |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2427 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
2428 #if defined (HAVE_FLTK) |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2429 Fl::check (); |
20060
76b1168342c0
Redraw FLTK figure after zoom operations on linked axes (bug #44719).
Rik <rik@octave.org>
parents:
20053
diff
changeset
|
2430 |
76b1168342c0
Redraw FLTK figure after zoom operations on linked axes (bug #44719).
Rik <rik@octave.org>
parents:
20053
diff
changeset
|
2431 if (Vdrawnow_requested) |
76b1168342c0
Redraw FLTK figure after zoom operations on linked axes (bug #44719).
Rik <rik@octave.org>
parents:
20053
diff
changeset
|
2432 Fdrawnow (); |
20957
9db35d2042be
maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents:
20955
diff
changeset
|
2433 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
2434 return octave_value_list (); |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2435 #else |
21109
bd1752782e56
Use err_disabled_feature, warn_disabled_feature throughout code base.
Rik <rik@octave.org>
parents:
21021
diff
changeset
|
2436 err_disabled_feature ("__fltk_check__", "OpenGL and FLTK"); |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2437 #endif |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2438 } |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2439 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2440 // Initialize the fltk graphics toolkit. |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
2441 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2442 DEFUN_DLD (__init_fltk__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2443 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2444 @deftypefn {} {} __init_fltk__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2445 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2446 @end deftypefn */) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2447 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
2448 #if defined (HAVE_FLTK) |
17881
7aadb87f599a
Display warning and don't init FLTK toolkit if no DISPLAY available (bug #40423).
Rik <rik@octave.org>
parents:
17861
diff
changeset
|
2449 if (! display_info::display_available ()) |
7aadb87f599a
Display warning and don't init FLTK toolkit if no DISPLAY available (bug #40423).
Rik <rik@octave.org>
parents:
17861
diff
changeset
|
2450 error ("__init_fltk__: no graphics DISPLAY available"); |
7aadb87f599a
Display warning and don't init FLTK toolkit if no DISPLAY available (bug #40423).
Rik <rik@octave.org>
parents:
17861
diff
changeset
|
2451 else if (! toolkit_loaded) |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
2452 { |
9216
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
2453 mlock (); |
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
2454 |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2455 fltk_graphics_toolkit *fltk = new fltk_graphics_toolkit (); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2456 graphics_toolkit tk (fltk); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2457 gtk_manager::load_toolkit (tk); |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2458 toolkit_loaded = true; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2459 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2460 octave_value fcn (new octave_builtin (F__fltk_check__)); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2461 octave_value fcn_handle (new octave_fcn_handle (fcn, "@__fltk_check__")); |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2462 octave_value_list id = Fadd_input_event_hook (fcn_handle, 1); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2463 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2464 fltk->set_input_event_hook_id (id); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
2465 } |
20957
9db35d2042be
maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents:
20955
diff
changeset
|
2466 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22869
diff
changeset
|
2467 return octave_value_list (); |
21109
bd1752782e56
Use err_disabled_feature, warn_disabled_feature throughout code base.
Rik <rik@octave.org>
parents:
21021
diff
changeset
|
2468 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2469 #else |
21109
bd1752782e56
Use err_disabled_feature, warn_disabled_feature throughout code base.
Rik <rik@octave.org>
parents:
21021
diff
changeset
|
2470 err_disabled_feature ("__init_fltk__", "OpenGL and FLTK"); |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2471 #endif |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2472 } |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2473 |
21575
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
2474 /* |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
2475 ## No test needed for internal helper function. |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
2476 %!assert (1) |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
2477 */ |