Mercurial > octave-antonio
annotate libinterp/dldfcn/__init_fltk__.cc @ 19861:19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Try to wrap long lines to < 80 characters.
Use GNU style and don't indent first brace of function definition.
"case" statement is aligned flush left with brace of switch stmt.
Remove trailing '\' line continuation from the end of #define macros.
Use 2 spaces for indent.
* files-dock-widget.cc, history-dock-widget.cc, main-window.cc, octave-cmd.cc,
octave-dock-widget.cc, octave-gui.cc, resource-manager.cc, settings-dialog.cc,
shortcut-manager.cc, welcome-wizard.cc, workspace-view.cc, cellfun.cc, data.cc,
debug.cc, debug.h, dirfns.cc, error.h, file-io.cc, gl-render.cc, gl-render.h,
gl2ps-renderer.h, graphics.cc, graphics.in.h, help.cc, input.cc, load-path.cc,
load-path.h, lookup.cc, lu.cc, oct-stream.cc, octave-default-image.h,
ordschur.cc, pr-output.cc, qz.cc, strfns.cc, symtab.cc, symtab.h, sysdep.cc,
variables.cc, zfstream.h, __fltk_uigetfile__.cc, __init_fltk__.cc,
__magick_read__.cc, __osmesa_print__.cc, audiodevinfo.cc, ov-classdef.cc,
ov-classdef.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-java.cc,
ov-range.cc, ov-re-mat.cc, ov-usr-fcn.h, ov.cc, op-int.h, options-usage.h,
pt-eval.cc, Array-C.cc, Array-fC.cc, Array.cc, Array.h, PermMatrix.cc,
Sparse.cc, chMatrix.h, dSparse.cc, dim-vector.h, bsxfun-decl.h, bsxfun-defs.cc,
oct-norm.cc, Sparse-op-defs.h, oct-inttypes.cc, oct-inttypes.h, main.in.cc,
mkoctfile.in.cc: Cleanup C++ code to follow Octave coding conventions.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 25 Feb 2015 11:55:49 -0800 |
parents | a5206dfbaa13 |
children | 6ba3d0f7c6e8 |
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 |
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19663
diff
changeset
|
3 Copyright (C) 2007-2015 Shai Ayal |
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19663
diff
changeset
|
4 Copyright (C) 2014-2015 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 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
9 under the terms of the GNU General Public License as published by the |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
10 Free Software Foundation; either version 3 of the License, or (at your |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
11 option) any later version. |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
12 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
13 Octave is distributed in the hope that it will be useful, but WITHOUT |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
16 for more details. |
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 |
17842
7533f4482006
use gnuplot as default graphics toolkit if display is unavailable (bug #40423)
John W. Eaton <jwe@octave.org>
parents:
17797
diff
changeset
|
33 // PKG_ADD: if (__have_fltk__ () && 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 |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
35 #ifdef HAVE_CONFIG_H |
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7869
diff
changeset
|
36 #include <config.h> |
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 |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
39 #include "builtin-defun-decls.h" |
14111
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
40 #include "defun-dld.h" |
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
41 #include "error.h" |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
42 #include "ov-fcn-handle.h" |
14111
c5222658dc3c
doc: Build documentation for functions even when they are unavailable
Rik <octave@nomad.inbox5.com>
parents:
14021
diff
changeset
|
43 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
44 #ifdef HAVE_FLTK |
7954 | 45 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
46 #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
|
47 #include <X11/Xlib.h> |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
48 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
49 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
50 #include <map> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
51 #include <set> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
52 #include <sstream> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
53 #include <iostream> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
54 |
13721
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
55 #ifdef WIN32 |
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
56 #define WIN32_LEAN_AND_MEAN |
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
57 #endif |
ca90a6d59ab6
Prevent auto-inclusion of winsock.h in WIN32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
58 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
59 #include <FL/Fl.H> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
60 #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
|
61 #include <FL/Fl_Button.H> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
62 #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
|
63 #include <FL/Fl_File_Chooser.H> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
64 #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
|
65 #include <FL/names.h> |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
66 #include <FL/Fl_Menu_Bar.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
67 #include <FL/Fl_Menu_Button.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
68 #include <FL/Fl_Output.H> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
69 #include <FL/Fl_Window.H> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
70 #include <FL/fl_ask.H> |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
71 #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
|
72 #include <FL/gl.h> |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
73 |
12205
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
74 // 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
|
75 // 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
|
76 // 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
|
77 // 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
|
78 #undef Complex |
be90f9e4548e
#undef Complex after including FLTK headers
John W. Eaton <jwe@octave.org>
parents:
12183
diff
changeset
|
79 |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
80 #include "cmd-edit.h" |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
81 #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
|
82 #include "oct-env.h" |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
83 |
17881
7aadb87f599a
Display warning and don't init FLTK toolkit if no DISPLAY available (bug #40423).
Rik <rik@octave.org>
parents:
17861
diff
changeset
|
84 #include "display.h" |
11590
4ced6b90fffb
style fixes for warning and error messages in source files
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
85 #include "file-ops.h" |
19657
0cdda69dc2b4
Fix compilation error when building with FLTK but without gl2ps
Mike Miller <mtmiller@ieee.org>
parents:
19639
diff
changeset
|
86 #include "gl-render.h" |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
87 #include "gl2ps-renderer.h" |
7954 | 88 #include "graphics.h" |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
89 #include "parse.h" |
9991
1300d9ced492
F__init_fltk__: add __remove_fltk__ to atexit function list
John W. Eaton <jwe@octave.org>
parents:
9974
diff
changeset
|
90 #include "toplev.h" |
9216
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
91 #include "variables.h" |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
92 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
93 #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
|
94 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
95 const char* help_text = "\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
96 Keyboard Shortcuts\n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
97 a - autoscale\n\ |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
98 p - pan/zoom\n\ |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
99 r - rotate\n\ |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
100 g - toggle grid\n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
101 \n\ |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
102 Mouse\n\ |
9455 | 103 left drag - pan\n\ |
104 mouse wheel - zoom\n\ | |
105 right drag - rectangle zoom\n\ | |
106 left double click - autoscale\n\ | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
107 "; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
108 |
7869 | 109 class OpenGL_fltk : public Fl_Gl_Window |
110 { | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
111 public: |
7869 | 112 OpenGL_fltk (int xx, int yy, int ww, int hh, double num) |
10555 | 113 : Fl_Gl_Window (xx, yy, ww, hh, 0), number (num), renderer (), |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
114 in_zoom (false), zoom_box () |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
115 { |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
116 // 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
|
117 mode (FL_DEPTH | FL_DOUBLE | FL_MULTISAMPLE); |
7869 | 118 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
119 |
7869 | 120 ~OpenGL_fltk (void) { } |
121 | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
122 void zoom (bool z) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
123 { |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
124 in_zoom = z; |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
125 if (! in_zoom) |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
126 hide_overlay (); |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
127 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
128 |
7869 | 129 bool zoom (void) { return in_zoom; } |
130 void set_zoom_box (const Matrix& zb) { zoom_box = zb; } | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
131 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
132 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
|
133 { |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
134 //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
|
135 |
61cc00ebac60
move opengl printing code from __init_fltk__.cc to gl2ps-renderer.cc
John W. Eaton <jwe@octave.org>
parents:
19456
diff
changeset
|
136 gl2ps_print (gh_manager::get_object (number), cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
137 } |
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
|
138 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
139 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
|
140 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
141 Fl_Gl_Window::resize (xx, yy, ww, hh); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
142 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
143 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
144 bool renumber (double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
145 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
146 bool retval = false; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
147 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
148 if (number != new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
149 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
150 number = new_number; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
151 retval = true; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
152 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
153 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
154 return retval; |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
155 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
156 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
157 private: |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
158 double number; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
159 opengl_renderer renderer; |
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
|
160 bool in_zoom; |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
161 // (x1,y1,x2,y2) |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
162 Matrix zoom_box; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
163 |
7869 | 164 void draw (void) |
165 { | |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
166 if (! valid ()) |
7869 | 167 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
168 glMatrixMode (GL_PROJECTION); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
169 glLoadIdentity (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
170 glViewport (0, 0, w (), h ()); |
7869 | 171 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
172 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
173 renderer.draw (gh_manager::get_object (number)); |
12323
c8da31f12c1d
avoid using new to create temporary gl2ps_renderer object
John W. Eaton <jwe@octave.org>
parents:
12226
diff
changeset
|
174 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
175 if (zoom ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
176 overlay (); |
7869 | 177 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
178 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
179 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
|
180 { |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
181 glVertex2d (zoom_box(0), h () - zoom_box(1)); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
182 glVertex2d (zoom_box(0), h () - zoom_box(3)); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
183 glVertex2d (zoom_box(2), h () - zoom_box(3)); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
184 glVertex2d (zoom_box(2), h () - zoom_box(1)); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
185 glVertex2d (zoom_box(0), h () - zoom_box(1)); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
186 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
187 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
188 void overlay (void) |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
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 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
|
191 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
192 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
|
193 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
|
194 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
195 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
|
196 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
|
197 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
|
198 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
199 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
|
200 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
|
201 |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
202 glBegin (GL_POLYGON); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
203 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
|
204 zoom_box_vertex (); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
205 glEnd (); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
206 |
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
|
207 glBegin (GL_LINE_STRIP); |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
208 glLineWidth (1.5); |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
209 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
|
210 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
|
211 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
|
212 |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
213 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
|
214 glPopMatrix (); |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
215 } |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
216 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
217 int handle (int event) |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
218 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
219 switch (event) |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
220 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
221 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
|
222 cursor (FL_CURSOR_CROSS); |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
223 return 1; |
7869 | 224 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
225 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
|
226 cursor (FL_CURSOR_DEFAULT); |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
227 return 1; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
228 } |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
229 return Fl_Gl_Window::handle (event); |
7869 | 230 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
231 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
232 |
14854
5ae9f0f77635
maint: Use Octave coding conventions for coddling parenthis is DLD-FUNCTIONS directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
233 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
|
234 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
235 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
|
236 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
237 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
238 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
239 class fltk_uimenu |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
240 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
241 public: |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
242 fltk_uimenu (int xx, int yy, int ww, int hh) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
243 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
244 menubar = new Fl_Menu_Bar (xx, yy, ww, hh); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
245 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
246 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
247 int items_to_show (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
248 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
249 //returns the number of visible menu items |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
250 int len = menubar->size (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
251 int n = 0; |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
252 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
|
253 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
254 const Fl_Menu_Item *m = static_cast<const Fl_Menu_Item*> (& |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
255 (menubar->menu ()[t])); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
256 if (m->label () && m->visible ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
257 n++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
258 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
259 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
260 return n; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
261 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
262 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
263 void show (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
264 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
265 menubar->show (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
266 menubar->redraw (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
267 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
268 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
269 void hide (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
270 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
271 menubar->hide (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
272 menubar->redraw (); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
273 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
274 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
275 bool is_visible (void) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
276 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
277 return menubar->visible (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
278 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
279 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
280 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
|
281 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
282 // 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
|
283 // int GetIndexByName(...), see: |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
284 // 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
|
285 // 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
|
286 // Kai Habel (14.10.2010) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
287 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
288 std::string menupath; |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
289 for (int t = 0; t < menubar->size (); t++) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
290 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
291 Fl_Menu_Item *m = const_cast<Fl_Menu_Item*> (&(menubar->menu ()[t])); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
292 if (m->submenu ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
293 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
294 // item has submenu |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
295 if (!menupath.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
296 menupath += "/"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
297 menupath += m->label (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
298 |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
299 if (menupath.compare (findname) == 0) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
300 return (t); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
301 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
302 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
303 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
304 // 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
|
305 if (! m->label ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
306 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
307 std::size_t idx = menupath.find_last_of ("/"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
308 if (idx != std::string::npos) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
309 menupath.erase (idx); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
310 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
311 menupath.clear (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
312 continue; |
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 // Menu item? |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
315 std::string itempath = menupath; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
316 if (!itempath.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
317 itempath += "/"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
318 itempath += m->label (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
319 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
320 if (itempath.compare (findname) == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
321 return (t); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
322 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
323 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
324 return (-1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
325 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
326 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
327 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
|
328 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
329 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
|
330 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
|
331 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
332 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
333 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
334 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
|
335 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
336 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
|
337 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
|
338 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
339 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
340 |
11170
a2437f70fe6c
Remove template to allow compilation for MacOS
Kai Habel <kai.habel@gmx.de>
parents:
11155
diff
changeset
|
341 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
|
342 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
343 octave_idx_type k = 0; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
344 |
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
345 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
346 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
|
347 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
348 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
|
349 { |
11207 | 350 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
|
351 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
352 if (kidgo.valid_object () && kidgo.isa ("uimenu")) |
11207 | 353 { |
354 uimenu_childs(k) = uimenu_childs(ii); | |
355 pos(k++) = | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
356 dynamic_cast<uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
357 (kidgo.get_properties ()).get_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
358 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
359 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
360 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
361 uimenu_childs.resize (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
362 pos.resize (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
363 Matrix retval = Matrix (k, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
364 // 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
|
365 // Can we avoid the for loop? |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
366 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
|
367 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
|
368 retval(ii) = uimenu_childs (sidx(ii)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
369 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
370 return retval; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
371 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
372 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
373 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
|
374 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
375 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
376 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
|
377 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
378 if (idx >= 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
379 menubar->remove (idx); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
380 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
381 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
382 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
|
383 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
384 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
385 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
386 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
387 Fl_Menu_Item* item = const_cast<Fl_Menu_Item*> (menubar->find_item ( |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
388 fltk_label.c_str ())); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
389 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
390 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
391 std::string acc = uimenup.get_accelerator (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
392 if (acc.length () > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
393 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
394 int key = FL_CTRL + acc[0]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
395 item->shortcut (key); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
396 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
397 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
398 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
399 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
400 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
401 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
|
402 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
403 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
404 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
405 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
406 Fl_Menu_Item* item = const_cast<Fl_Menu_Item*> (menubar->find_item ( |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
407 fltk_label.c_str ())); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
408 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
409 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
410 if (!uimenup.get_callback ().is_empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
411 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
|
412 static_cast<void*> (&uimenup)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
413 else |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
414 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
|
415 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
416 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
417 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
418 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
419 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
|
420 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
421 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
422 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
423 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
424 Fl_Menu_Item* item = const_cast<Fl_Menu_Item*> (menubar->find_item ( |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
425 fltk_label.c_str ())); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
426 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
427 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
428 if (uimenup.is_enable ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
429 item->activate (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
430 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
431 item->deactivate (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
432 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
433 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
434 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
435 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
436 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
|
437 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
438 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
439 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
440 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
441 Fl_Menu_Item* item = const_cast<Fl_Menu_Item*> (menubar->find_item ( |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
442 fltk_label.c_str ())); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
443 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
444 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
445 Matrix rgb = uimenup.get_foregroundcolor_rgb (); |
12539
ccd0572e5e93
use gnulib:: functions as needed
John W. Eaton <jwe@octave.org>
parents:
12507
diff
changeset
|
446 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
447 uchar r = static_cast<uchar> (gnulib::floor (rgb (0) * 255)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
448 uchar g = static_cast<uchar> (gnulib::floor (rgb (1) * 255)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
449 uchar b = static_cast<uchar> (gnulib::floor (rgb (2) * 255)); |
12539
ccd0572e5e93
use gnulib:: functions as needed
John W. Eaton <jwe@octave.org>
parents:
12507
diff
changeset
|
450 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
451 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
|
452 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
453 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
454 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
455 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
456 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
|
457 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
458 // Matlab places the separator before the current |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
459 // menu entry, while fltk places it after. So we need to find |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
460 // the previous item in this menu/submenu. (Kai) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
461 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
462 if (!fltk_label.empty ()) |
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 int itemflags = 0, idx; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
465 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
|
466 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
467 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
|
468 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
469 Fl_Menu_Item* item |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
470 = const_cast<Fl_Menu_Item*> (&menubar->menu () [idx]); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
471 itemflags = item->flags; |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
472 if (item->label ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
473 break; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
474 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
475 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
476 if (idx >= 0 && idx < menubar->size ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
477 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
478 if (uimenup.is_separator ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
479 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
480 if (idx >= 0 && !(itemflags & FL_SUBMENU)) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
481 menubar->mode (idx, itemflags | FL_MENU_DIVIDER); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
482 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
483 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
484 menubar->mode (idx, itemflags & (~FL_MENU_DIVIDER)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
485 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
486 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
487 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
488 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
489 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
|
490 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
491 std::string fltk_label = uimenup.get_fltk_label (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
492 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
493 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
494 Fl_Menu_Item* item |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
495 = const_cast<Fl_Menu_Item*> (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
|
496 if (item) |
17787
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 if (uimenup.is_visible ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
499 item->show (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
500 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
501 item->hide (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
502 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
503 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
504 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
505 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
506 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
|
507 { |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
508 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
509 std::string fltk_label = uimenup.get_fltk_label (); |
11207 | 510 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
511 if (!fltk_label.empty ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
512 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
513 bool item_added = false; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
514 do |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
515 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
516 const Fl_Menu_Item* item |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
517 = 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
|
518 |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
519 if (item) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
520 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
521 //avoid duplicate menulabels |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
522 std::size_t idx1 = fltk_label.find_last_of ("("); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
523 std::size_t idx2 = fltk_label.find_last_of (")"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
524 int len = idx2 - idx1; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
525 int val = 1; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
526 if (len > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
527 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
528 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
|
529 fltk_label.erase (idx1, len + 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
530 val = atoi (valstr.c_str ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
531 if (val > 0 && val < 99) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
532 val++; |
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 std::ostringstream valstream; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
535 valstream << val; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
536 fltk_label += "(" + valstream.str () + ")"; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
537 } |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
538 else |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
539 { |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
540 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
|
541 int len = uimenu_ch.numel (); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
542 int flags = 0; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
543 if (len > 0) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
544 flags = FL_SUBMENU; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
545 if (len == 0 && uimenup.is_checked ()) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
546 flags += FL_MENU_TOGGLE + FL_MENU_VALUE; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
547 menubar->add (fltk_label.c_str (), 0, 0, 0, flags); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
548 item_added = true; |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17881
diff
changeset
|
549 } |
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 while (!item_added); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
552 uimenup.set_fltk_label (fltk_label); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
553 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
554 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
555 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
556 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
|
557 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
558 Matrix kids = find_uimenu_children (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
559 int len = kids.length (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
560 std::string fltk_label = uimenup.get_fltk_label (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
561 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
562 add_entry (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
563 update_foregroundcolor (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
564 update_callback (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
565 update_accelerator (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
566 update_enable (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
567 update_visible (uimenup); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
568 update_seperator (uimenup); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
569 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
570 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
|
571 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
572 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
|
573 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
574 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
575 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
|
576 (kgo.get_properties ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
577 add_to_menu (kprop); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
578 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
579 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
580 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
581 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
582 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
|
583 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
584 Matrix kids = find_uimenu_children (figp); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
585 int len = kids.length (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
586 menubar->clear (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
587 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
|
588 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
589 graphics_object kgo = gh_manager::get_object (kids (len - (ii + 1))); |
11207 | 590 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
591 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
592 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
593 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
|
594 (kgo.get_properties ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
595 add_to_menu (kprop); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
596 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
597 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
598 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
599 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
600 template <class T_prop> |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
601 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
|
602 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
603 Matrix kids; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
604 std::string type = prop.get_type (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
605 kids = find_uimenu_children (prop); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
606 int len = kids.length (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
607 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
608 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
|
609 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
610 graphics_object kgo = gh_manager::get_object (kids (len - (ii + 1))); |
11207 | 611 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
612 if (kgo.valid_object ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
613 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
614 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
|
615 (kgo.get_properties ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
616 remove_from_menu (kprop); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
617 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
618 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
619 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
620 if (type.compare ("uimenu") == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
621 delete_entry (dynamic_cast<uimenu::properties&> (prop)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
622 else if (type.compare ("figure") == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
623 menubar->clear (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
624 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
625 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
626 ~fltk_uimenu (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
627 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
628 delete menubar; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
629 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
630 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
631 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
632 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
633 // No copying! |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
634 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
635 fltk_uimenu (const fltk_uimenu&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
636 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
637 fltk_uimenu operator = (const fltk_uimenu&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
638 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
639 Fl_Menu_Bar* menubar; |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
640 }; |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
641 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
642 #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
|
643 static int |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
644 xerror_handler (Display *, XErrorEvent *) |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
645 { |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
646 return 0; |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
647 } |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
648 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
649 |
7869 | 650 class plot_window : public Fl_Window |
651 { | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
652 friend class fltk_uimenu; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
653 public: |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
654 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
|
655 bool internal) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
656 : Fl_Window (xx, yy, ww, hh + menu_h + status_h + 2, "octave"), |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
657 window_label (), fp (xfp), canvas (0), |
17131
ea19ea629a09
Proper placement of the menubar, the toolbar and plot canvas.
Ben Abbott <bpabbott@mac.com>
parents:
17079
diff
changeset
|
658 autoscale (0), togglegrid (0), panzoom (0), rotate (0), help (0), |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
659 status (0), resize_dummy (0), ax_obj (), pos_x (0), pos_y (0) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
660 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
661 callback (window_close, static_cast<void*> (this)); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
662 |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
663 // The size of the resize_dummy box also determines the minimum window size |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
664 resize_dummy = new Fl_Box (5 * status_h + 1, menu_h + 1, |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
665 ww - 5 * status_h - 1, hh); |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
666 // 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
|
667 // for how resizable works |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
668 resizable (resize_dummy); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
669 |
14447
c97416a0f657
Allow window managers to group FLTK plot windows (bug #35199)
Colin Macdonald <macdonald@maths.ox.ac.uk>
parents:
14418
diff
changeset
|
670 // 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
|
671 // 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
|
672 // 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
|
673 // 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
|
674 // 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
|
675 // 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
|
676 //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
|
677 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
678 uimenu = new fltk_uimenu (0, 0, ww, menu_h); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
679 canvas = new OpenGL_fltk (0, menu_h, ww, hh, number ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
680 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
681 // 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
|
682 // "panzoom", "rotate", "help", and "status". |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
683 // Only "status" should be resized. |
12621
c99d6785a27e
instantiate canvas before menubar
Kai Habel <kai.habel@gmx.de>
parents:
12565
diff
changeset
|
684 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
685 int toolbar_y = menu_h + hh + 1; |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
686 status = new Fl_Output (5 * status_h + 1, toolbar_y, |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
687 ww - 5 * status_h - 1, status_h, ""); |
17131
ea19ea629a09
Proper placement of the menubar, the toolbar and plot canvas.
Ben Abbott <bpabbott@mac.com>
parents:
17079
diff
changeset
|
688 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
689 status->textcolor (FL_BLACK); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
690 status->color (FL_GRAY); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
691 status->textfont (FL_COURIER); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
692 status->textsize (10); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
693 status->box (FL_ENGRAVED_BOX); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
694 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
695 autoscale = new Fl_Button (0, toolbar_y, status_h, status_h, "A"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
696 autoscale->callback (button_callback, static_cast<void*> (this)); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
697 autoscale->tooltip ("Autoscale"); |
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
|
698 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
699 togglegrid = new Fl_Button (status_h, toolbar_y, status_h, status_h, "G"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
700 togglegrid->callback (button_callback, static_cast<void*> (this)); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
701 togglegrid->tooltip ("Toggle Grid"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
702 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
703 panzoom = new Fl_Button (2* status_h, toolbar_y, status_h, status_h, "P"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
704 panzoom->callback (button_callback, static_cast<void*> (this)); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
705 panzoom->tooltip ("Mouse Pan/Zoom"); |
10917
888c75785221
Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents:
10865
diff
changeset
|
706 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
707 rotate = new Fl_Button (3 * status_h, toolbar_y, status_h, status_h, "R"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
708 rotate->callback (button_callback, static_cast<void*> (this)); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
709 rotate->tooltip ("Mouse Rotate"); |
10917
888c75785221
Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents:
10865
diff
changeset
|
710 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
711 help = new Fl_Button (4 * status_h, toolbar_y, status_h, status_h, "?"); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
712 help->callback (button_callback, static_cast<void*> (this)); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
713 help->tooltip ("Help"); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
714 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
715 end (); |
7869 | 716 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
717 set_name (); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
718 uimenu->add_to_menu (fp); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
719 if (fp.menubar_is ("none") || !uimenu->items_to_show ()) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
720 hide_menubar (); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
721 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
722 update_boundingbox (internal); |
12507
41d183070c04
revert changes from 2011-02-26
Konstantinos Poulios <logari81@googlemail.com>
parents:
12484
diff
changeset
|
723 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
724 if (fp.is_visible ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
725 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
726 // 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
|
727 // 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
|
728 // 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
|
729 // |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
730 // 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
|
731 // 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
|
732 xclass ("Octave"); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
733 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
734 show (); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
735 |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
736 #if defined (HAVE_X_WINDOWS) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
737 std::string show_gui_msgs |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
738 = octave_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
|
739 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
740 // Installing our handler suppresses the messages. |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
741 if (show_gui_msgs.empty ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
742 XSetErrorHandler (xerror_handler); |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
743 #endif |
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18293
diff
changeset
|
744 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
745 if (fp.get_currentaxes ().ok ()) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
746 show_canvas (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
747 else |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
748 hide_canvas (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
749 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
750 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
751 |
7869 | 752 ~plot_window (void) |
753 { | |
754 this->hide (); | |
19020
d74cdfc5d5c3
Fix problem that FLTK figure stays visible after "close"
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19013
diff
changeset
|
755 Fl::check (); |
7869 | 756 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
757 |
7869 | 758 double number (void) { return fp.get___myhandle__ ().value (); } |
759 | |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
760 void renumber (double new_number) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
761 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
762 if (canvas) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
763 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
764 if (canvas->renumber (new_number)) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
765 mark_modified (); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
766 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
767 else |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
768 error ("unable to renumber figure"); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
769 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
770 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
771 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
|
772 { |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
773 canvas->print (cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
774 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
775 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
776 void show_menubar (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
777 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
778 uimenu->show (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
779 update_toolbar_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
780 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
781 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
782 void hide_menubar (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
783 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
784 uimenu->hide (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
785 update_toolbar_position (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
786 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
787 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
788 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
|
789 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
790 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
|
791 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
792 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
|
793 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
794 uimenu::properties& uimenup = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
795 dynamic_cast<uimenu::properties&> (uimenu_obj.get_properties ()); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
796 std::string fltk_label = uimenup.get_fltk_label (); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
797 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
|
798 figure::properties& figp = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
799 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
|
800 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
801 switch (id) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
802 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
803 case base_properties::ID_BEINGDELETED: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
804 uimenu->remove_from_menu (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
805 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
806 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
807 case base_properties::ID_VISIBLE: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
808 uimenu->update_visible (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
809 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
810 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
811 case uimenu::properties::ID_ACCELERATOR: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
812 uimenu->update_accelerator (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
813 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
814 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
815 case uimenu::properties::ID_CALLBACK: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
816 uimenu->update_callback (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
817 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
818 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
819 case uimenu::properties::ID_CHECKED: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
820 uimenu->add_to_menu (figp);//rebuilding entire menu |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
821 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
822 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
823 case uimenu::properties::ID_ENABLE: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
824 uimenu->update_enable (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
825 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
826 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
827 case uimenu::properties::ID_FOREGROUNDCOLOR: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
828 uimenu->update_foregroundcolor (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
829 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
830 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
831 case uimenu::properties::ID_LABEL: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
832 uimenu->add_to_menu (figp);//rebuilding entire menu |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
833 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
834 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
835 case uimenu::properties::ID_POSITION: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
836 uimenu->add_to_menu (figp);//rebuilding entire menu |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
837 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
838 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
839 case uimenu::properties::ID_SEPARATOR: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
840 uimenu->update_seperator (uimenup); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
841 break; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
842 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
843 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
844 if (uimenu->items_to_show ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
845 show_menubar (); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
846 else |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
847 hide_menubar (); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
848 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
849 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
850 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
851 void show_canvas (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
852 { |
19454
8dbd55742112
Prevent segfault when video card has insufficient OpenGL support (bug #41747).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18618
diff
changeset
|
853 if (! canvas->can_do ()) |
8dbd55742112
Prevent segfault when video card has insufficient OpenGL support (bug #41747).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18618
diff
changeset
|
854 error ("unable to plot due to insufficient OpenGL support"); |
8dbd55742112
Prevent segfault when video card has insufficient OpenGL support (bug #41747).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18618
diff
changeset
|
855 else if (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
|
856 { |
35ea8b9b2a8e
__init_fltk__.cc: show canvas only, when figure is visible (bug #33321)
Kai Habel <kai.habel@gmx.de>
parents:
12621
diff
changeset
|
857 canvas->show (); |
35ea8b9b2a8e
__init_fltk__.cc: show canvas only, when figure is visible (bug #33321)
Kai Habel <kai.habel@gmx.de>
parents:
12621
diff
changeset
|
858 canvas->make_current (); |
35ea8b9b2a8e
__init_fltk__.cc: show canvas only, when figure is visible (bug #33321)
Kai Habel <kai.habel@gmx.de>
parents:
12621
diff
changeset
|
859 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
860 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
861 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
862 void hide_canvas (void) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
863 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
864 canvas->hide (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
865 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
866 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
867 // 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
|
868 // The only reason for moving the toolbar is hiding and |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
869 // showing the menubar. All other resizing is done by fltk. |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
870 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
871 void update_toolbar_position () |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
872 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
873 int old_canvas_h = canvas->h (); |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
874 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
875 // 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
|
876 update_boundingbox (true); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
877 canvas->resize (0, menu_dy (), w (), old_canvas_h); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
878 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
879 int toolbar_y = canvas->h () + menu_dy () + 1; |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
880 autoscale->position (0, toolbar_y); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
881 togglegrid->position (status_h, toolbar_y); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
882 panzoom->position (2 * status_h, toolbar_y); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
883 rotate->position (3 * status_h, toolbar_y); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
884 help->position (4 * status_h, toolbar_y); |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
885 status->resize (5 * status_h + 1, toolbar_y, |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
886 w () - 5 * status_h - 1, status_h); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
887 |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
888 init_sizes (); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
889 redraw (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
890 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
891 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
892 Matrix outerposition2position (const Matrix& outerpos) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
893 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
894 Matrix pos = outerpos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
895 pos(1) += menu_dy (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
896 pos(3) -= menu_dy () + status_h + 2; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
897 return pos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
898 } |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
899 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
900 Matrix position2outerposition (const Matrix& pos) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
901 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
902 Matrix outerpos = pos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
903 outerpos(1) -= menu_dy (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
904 outerpos(3) += menu_dy () + status_h + 2; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
905 return outerpos; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
906 } |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
907 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
908 // 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
|
909 // or ID_OUTERPOSITION if false. |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
910 // (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
|
911 // or set (h, "outerposition", [...]) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
912 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
913 void update_boundingbox (bool internal) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
914 { |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
915 Matrix bb = fp.get_boundingbox (internal); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
916 if (internal) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
917 bb = position2outerposition (bb); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
918 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
|
919 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
920 |
7869 | 921 void mark_modified (void) |
922 { | |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
923 canvas->redraw (); |
7840
2c8f693c32fd
convert_position not static anymore
Shai Ayal <shaiay@sourceforge.net>
parents:
7839
diff
changeset
|
924 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
925 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
926 void set_name (void) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
927 { |
10009
360de61b2722
corrected redundency in title setting introduced in previous changeset
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10008
diff
changeset
|
928 window_label = fp.get_title (); |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
929 label (window_label.c_str ()); |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
930 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
931 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
932 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
933 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
934 // No copying! |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
935 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
936 plot_window (const plot_window&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
937 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
938 plot_window& operator = (const plot_window&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11590
diff
changeset
|
939 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
940 // 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
|
941 // life |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
942 std::string window_label; |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
943 |
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
944 // Figure properties. |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
945 figure::properties& fp; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
946 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
947 // Status area height. |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
948 static const int status_h = 20; |
7869 | 949 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
950 // Menu height |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
951 static const int menu_h = 25; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
952 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
953 // Window callback. |
7869 | 954 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
|
955 { |
7869 | 956 octave_value_list args; |
957 args(0) = static_cast<plot_window*> (data)->number (); | |
958 feval ("close", args); | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
959 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
960 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
961 // Button callbacks. |
7869 | 962 static void button_callback (Fl_Widget* ww, void* data) |
963 { | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
964 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
|
965 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
966 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
967 void button_press (Fl_Widget* widg, void*) |
7869 | 968 { |
969 if (widg == autoscale) | |
970 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
|
971 else if (widg == togglegrid) |
7869 | 972 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
|
973 else if (widg == panzoom) |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
974 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
|
975 else if (widg == rotate) |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
976 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
|
977 else if (widg == help) |
9060
de7cef39f505
fltk_backend.cc: don't pass arbitrary string as format
John W. Eaton <jwe@octave.org>
parents:
8333
diff
changeset
|
978 fl_message ("%s", help_text); |
7869 | 979 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
980 |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
981 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
|
982 { |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
983 // ax_obj is the last clicked axes object |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
984 if (ax_obj && ax_obj.isa ("axes")) |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
985 { |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
986 axes::properties& ap = |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
987 dynamic_cast<axes::properties&>(ax_obj.get_properties ()); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
988 ap.set (name, value); |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
989 } |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
990 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
|
991 { |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
992 graphics_handle gh = fp.get_currentaxes (); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
993 if (gh.ok ()) |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
994 { |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
995 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
|
996 axes::properties& ap = |
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
997 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
|
998 ap.set (name, value); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
999 } |
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1000 } |
7869 | 1001 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1002 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1003 fltk_uimenu* uimenu; |
7869 | 1004 OpenGL_fltk* canvas; |
1005 Fl_Button* autoscale; | |
1006 Fl_Button* togglegrid; | |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1007 Fl_Button* panzoom; |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1008 Fl_Button* rotate; |
7869 | 1009 Fl_Button* help; |
1010 Fl_Output* status; | |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1011 Fl_Box* resize_dummy; |
14020
caf69ec5b94c
eliminate static data from fltk plot_window member function
John W. Eaton <jwe@octave.org>
parents:
14014
diff
changeset
|
1012 graphics_object ax_obj; |
caf69ec5b94c
eliminate static data from fltk plot_window member function
John W. Eaton <jwe@octave.org>
parents:
14014
diff
changeset
|
1013 int pos_x; |
caf69ec5b94c
eliminate static data from fltk plot_window member function
John W. Eaton <jwe@octave.org>
parents:
14014
diff
changeset
|
1014 int pos_y; |
7869 | 1015 |
18968
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1016 |
7869 | 1017 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
|
1018 { |
7869 | 1019 octave_value_list args; |
18968
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1020 if (fp.get_currentaxes ().ok ()) |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1021 { |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1022 args(0) = fp.get_currentaxes ().as_octave_value (); |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1023 args(1) = "auto"; |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1024 feval ("axis", args); |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1025 mark_modified (); |
0257a936dc4a
Fix FLTK redraw and event issue
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18966
diff
changeset
|
1026 } |
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
|
1027 } |
4dc3e0ff730a
Added zoombox (mouse button 1) & autoscale (button marked A and mouse button 3)
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7842
diff
changeset
|
1028 |
7869 | 1029 void toggle_grid (void) |
1030 { | |
9974
118158f10628
fix fltk backend window buttons
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9973
diff
changeset
|
1031 octave_value_list args; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1032 if (fp.get_currentaxes ().ok ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1033 args(0) = fp.get_currentaxes ().as_octave_value (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1034 |
9974
118158f10628
fix fltk backend window buttons
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9973
diff
changeset
|
1035 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
|
1036 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
|
1037 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1038 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1039 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
|
1040 double& yy) const |
7869 | 1041 { |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
1042 pixel2pos (gh_manager::get_object (ax), px, py, xx, yy); |
9640 | 1043 } |
7869 | 1044 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1045 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
|
1046 double& yy) const |
9640 | 1047 { |
7869 | 1048 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
|
1049 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1050 axes::properties& ap = |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1051 dynamic_cast<axes::properties&> (ax.get_properties ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1052 ColumnVector pp = ap.pixel2coord (px, py); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1053 xx = pp(0); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1054 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
|
1055 } |
7869 | 1056 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1057 |
18678
6113e0c6920b
maint: Clean up extra spaces before/after parentheses.
Rik <rik@octave.org>
parents:
18618
diff
changeset
|
1058 graphics_handle pixel2axes_or_ca (int px, int py) |
7869 | 1059 { |
1060 Matrix kids = fp.get_children (); | |
9455 | 1061 int len = kids.length (); |
9442
2d73b19c5507
improve behavior of builtin
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
1062 |
9455 | 1063 for (int k = 0; k < len; k++) |
9443 | 1064 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1065 graphics_handle hnd = gh_manager::lookup (kids(k)); |
9455 | 1066 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1067 if (hnd.ok ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1068 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1069 graphics_object kid = gh_manager::get_object (hnd); |
9455 | 1070 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1071 if (kid.valid_object () && kid.isa ("axes")) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1072 { |
19296
8ba8f3d22189
__init_fltk__.cc: Allow selection of axes from whole plot area
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19152
diff
changeset
|
1073 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
|
1074 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1075 if (bb(0) <= px && px < (bb(0)+bb(2)) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1076 && bb(1) <= py && py < (bb(1)+bb(3))) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1077 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1078 return hnd; |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1079 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1080 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1081 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1082 } |
9455 | 1083 return fp.get_currentaxes (); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1084 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1085 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1086 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
|
1087 int px1 = -1, int py1 = -1) |
9640 | 1088 { |
1089 pixel2status (gh_manager::get_object (ax), px0, py0, px1, py1); | |
1090 } | |
9802
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
1091 |
9b4a301d88ed
fix for fltk zoom box problems
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
1092 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
|
1093 int px1 = -1, int py1 = -1) |
7869 | 1094 { |
1095 double x0, y0, x1, y1; | |
17945
265f9186e543
Fix uninitialised parameters in pixel2status
PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>
parents:
17900
diff
changeset
|
1096 x0 = y0 = x1 = y1 = octave_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
|
1097 std::stringstream cbuf; |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1098 cbuf.precision (4); |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1099 cbuf.width (6); |
9640 | 1100 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
|
1101 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
|
1102 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
|
1103 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1104 pixel2pos (ax, px1, py1, x1, y1); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1105 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
|
1106 } |
7840
2c8f693c32fd
convert_position not static anymore
Shai Ayal <shaiay@sourceforge.net>
parents:
7839
diff
changeset
|
1107 |
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
|
1108 status->value (cbuf.str ().c_str ()); |
7869 | 1109 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1110 |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1111 void view2status (graphics_object ax) |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1112 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1113 if (ax && ax.isa ("axes")) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1114 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1115 axes::properties& ap = |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1116 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
|
1117 std::stringstream cbuf; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1118 cbuf.precision (4); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1119 cbuf.width (6); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1120 Matrix v (1,2,0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1121 v = ap.get ("view").matrix_value (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1122 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
|
1123 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1124 status->value (cbuf.str ().c_str ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1125 } |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1126 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1127 |
10517 | 1128 void set_currentpoint (int px, int py) |
1129 { | |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1130 if (!fp.is_beingdeleted ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1131 { |
19028
c419e5487d0d
Fix set_currentpoint in FLTK that figures units property is respected.
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19027
diff
changeset
|
1132 Matrix pos = fp.map_from_boundingbox (px, py); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1133 fp.set_currentpoint (pos); |
17144
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1134 graphics_object robj = gh_manager::get_object (fp.get_parent ()); |
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1135 root_figure::properties& rp = |
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1136 dynamic_cast<root_figure::properties&> (robj.get_properties ()); |
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1137 rp.set_currentfigure (fp.get___myhandle__ ().value ()); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1138 } |
10517 | 1139 } |
1140 | |
1141 void set_axes_currentpoint (graphics_object ax, int px, int py) | |
1142 { | |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1143 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
|
1144 { |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1145 axes::properties& ap = |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1146 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
|
1147 |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1148 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
|
1149 Matrix pos (2, 3, 0.0); |
10517 | 1150 |
19027
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1151 // 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
|
1152 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
|
1153 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
|
1154 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
|
1155 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
|
1156 |
0ee9daa71273
Fix axes property "currentpoint" for FLTK, extend documentation
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19021
diff
changeset
|
1157 // 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
|
1158 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
|
1159 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
|
1160 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
|
1161 pos(1,2) = tmp(2); |
10517 | 1162 |
10593
26d51c6e1c4c
fixed fltk_backend bug when clicking on empty figure
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10555
diff
changeset
|
1163 ap.set_currentpoint (pos); |
17144
88616c872933
Set the root property "currentfigure", and figure property "currentaxes".
Ben Abbott <bpabbott@mac.com>
parents:
17143
diff
changeset
|
1164 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
|
1165 } |
10517 | 1166 } |
1167 | |
17213
4407606d0939
FLTK toolkit: Simplify conditionals for uimenu presence.
Ben Abbott <bpabbott@mac.com>
parents:
17201
diff
changeset
|
1168 int menu_dy () |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1169 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1170 if (uimenu->is_visible ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1171 return menu_h; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1172 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1173 return 0; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1174 } |
17213
4407606d0939
FLTK toolkit: Simplify conditionals for uimenu presence.
Ben Abbott <bpabbott@mac.com>
parents:
17201
diff
changeset
|
1175 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1176 octave_scalar_map format_key_event (int e_key, const char* e_text, int e_state) |
10517 | 1177 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1178 octave_scalar_map evt; |
10517 | 1179 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1180 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
|
1181 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
|
1182 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1183 std::string key_str; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1184 std::ostringstream tmp_str; |
10517 | 1185 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1186 if (e_key == FL_Escape) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1187 key_str = "escape"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1188 else if (e_key == FL_Tab) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1189 key_str = "tab"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1190 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
|
1191 key_str = "capslock"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1192 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
|
1193 key_str = "shift"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1194 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
|
1195 key_str = "control"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1196 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
|
1197 key_str = "windows"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1198 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
|
1199 key_str = "alt"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1200 else if (e_key == 32) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1201 key_str = "space"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1202 else if (e_key == FL_Enter) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1203 key_str = "return"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1204 else if (e_key == FL_BackSpace) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1205 key_str = "backspace"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1206 else if (e_key == FL_Print) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1207 key_str = "printscreen"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1208 else if (e_key == FL_Pause) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1209 key_str = "pause"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1210 else if (e_key == FL_Home) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1211 key_str = "home"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1212 else if (e_key == FL_End) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1213 key_str = "end"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1214 else if (e_key == FL_Insert) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1215 key_str = "insert"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1216 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
|
1217 key_str = "pageup"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1218 else if (e_key == FL_Delete) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1219 key_str = "delete"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1220 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
|
1221 key_str = "pagedown"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1222 else if (e_key == FL_Left) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1223 key_str = "leftarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1224 else if (e_key == FL_Up) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1225 key_str = "uparrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1226 else if (e_key == FL_Right) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1227 key_str = "rightarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1228 else if (e_key == FL_Down) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1229 key_str = "downarrow"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1230 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
|
1231 key_str = "numlock"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1232 else if (e_key == 0xffaf) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1233 key_str = "divide"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1234 else if (e_key == 0xffaa) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1235 key_str = "multiply"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1236 else if (e_key == 0xffad) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1237 key_str = "subtract"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1238 else if (e_key == 0xffab) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1239 key_str = "add"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1240 else if (e_key == 0xff8d) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1241 key_str = "return"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1242 else if (e_key == 0xffac) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1243 key_str = "separator"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1244 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
|
1245 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1246 tmp_str << "numpad" << (e_key - 0xffb0); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1247 key_str = tmp_str.str (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1248 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1249 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
|
1250 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1251 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
|
1252 key_str = tmp_str.str (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1253 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1254 else if (e_key == ',') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1255 key_str = "comma"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1256 else if (e_key == '.') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1257 key_str = "period"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1258 else if (e_key == '-') |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1259 key_str = "hyphen"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1260 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
|
1261 || e_key == '<' || e_key == 0xfe03 /*AltGr*/) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1262 key_str = "0"; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1263 else if (isalnum (e_key)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1264 key_str = std::tolower (e_key); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1265 else if (isprint (e_text[0])) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1266 key_str = "0"; |
10517 | 1267 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1268 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
|
1269 return evt; |
10517 | 1270 } |
1271 | |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1272 Cell modifier2cell (int e_state) |
10517 | 1273 { |
1274 string_vector mod; | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1275 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1276 if (e_state & FL_SHIFT) |
10517 | 1277 mod.append (std::string ("shift")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1278 if (e_state & FL_CTRL) |
10517 | 1279 mod.append (std::string ("control")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1280 if (e_state & FL_ALT) |
10517 | 1281 mod.append (std::string ("alt")); |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1282 if (e_state & FL_COMMAND) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1283 mod.append (std::string ("command")); |
10517 | 1284 return Cell (mod); |
1285 } | |
1286 | |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1287 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
|
1288 { |
10555 | 1289 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
|
1290 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1291 Matrix bb (1, 4); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1292 bb(0) = xx; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1293 bb(1) = yy; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1294 bb(2) = ww; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1295 bb(3) = hh; |
14357
e7c74f56cd03
fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents:
14314
diff
changeset
|
1296 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1297 // update outerposition |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1298 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
|
1299 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1300 // update position |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1301 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
|
1302 } |
7869 | 1303 |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1304 bool pan_enabled (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1305 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1306 // Getting pan mode property: |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1307 octave_value ov_pm = fp.get___pan_mode__ (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1308 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1309 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
|
1310 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1311 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
|
1312 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1313 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1314 std::string pan_mode (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1315 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1316 // Getting pan mode property: |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1317 octave_value ov_pm = fp.get___pan_mode__ (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1318 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1319 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
|
1320 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1321 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
|
1322 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1323 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1324 bool rotate_enabled (void) |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1325 { |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1326 // Getting rotate mode property: |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1327 octave_value ov_rm = fp.get___rotate_mode__ (); |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1328 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1329 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
|
1330 |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1331 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
|
1332 } |
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1333 |
7869 | 1334 int handle (int event) |
1335 { | |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1336 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
|
1337 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1338 |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1339 graphics_handle gh; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1340 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1341 if (!fp.is_beingdeleted ()) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1342 { |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1343 //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
|
1344 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1345 // 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
|
1346 // widgets rejects the event. |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1347 // 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
|
1348 static bool key_resent_detected = false; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1349 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1350 switch (event) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1351 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1352 case FL_SHORTCUT: |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1353 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1354 // 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
|
1355 static int last_event_key = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1356 static char last_event_text = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1357 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1358 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1359 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
|
1360 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
|
1361 && 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
|
1362 && ((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
|
1363 || (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
|
1364 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1365 last_event_key = e_key; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1366 last_event_text = e_text; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1367 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1368 break; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1369 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1370 case FL_KEYDOWN: |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1371 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1372 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1373 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
|
1374 int e_state = Fl::event_state (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1375 octave_scalar_map evt = |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1376 format_key_event (e_key, e_text, e_state); |
10517 | 1377 |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1378 fp.set_currentcharacter (std::string (e_text)); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1379 if (fp.get_keypressfcn ().is_defined () |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1380 && (evt.contents ("Key").length () > 0)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1381 fp.execute_keypressfcn (evt); |
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 switch (e_key) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1384 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1385 case 'a': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1386 case 'A': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1387 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
|
1388 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1389 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1390 case 'g': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1391 case 'G': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1392 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
|
1393 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1394 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1395 case 'p': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1396 case 'P': |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1397 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
|
1398 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1399 |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1400 case 'r': |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1401 case 'R': |
19663
dfea01b3425f
more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents:
19657
diff
changeset
|
1402 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
|
1403 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1404 } |
10517 | 1405 } |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1406 break; |
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1407 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1408 case FL_KEYUP: |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1409 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1410 int e_key = Fl::event_key (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1411 int e_state = Fl::event_state (); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1412 octave_scalar_map evt; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1413 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
|
1414 { |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1415 // 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
|
1416 // widget wanted the FL_KEYDOWN event. |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1417 char tmp_e_text[2]; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1418 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
|
1419 tmp_e_text[1] = 0; |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1420 // Undo the case flip |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1421 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
|
1422 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
|
1423 else |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1424 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
|
1425 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
|
1426 } |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1427 else |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1428 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1429 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
|
1430 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
|
1431 } |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1432 |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1433 if (fp.get_keyreleasefcn ().is_defined () |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1434 && (evt.contents ("Key").length () > 0)) |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1435 fp.execute_keyreleasefcn (evt); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
1436 return 1; |
10517 | 1437 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1438 break; |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1439 } |
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
|
1440 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1441 // Events we only handle if they are in the canvas area. |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1442 if (Fl::event_inside (canvas)) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1443 switch (event) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1444 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1445 case FL_MOVE: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1446 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
|
1447 Fl::event_y () - menu_dy ()), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1448 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
|
1449 return 1; |
7869 | 1450 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1451 case FL_PUSH: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1452 pos_x = Fl::event_x (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1453 pos_y = Fl::event_y () - menu_dy (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1454 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1455 set_currentpoint (pos_x, pos_y); |
19021
9609f345823e
Implement figure property SelectionType for FLTK
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19020
diff
changeset
|
1456 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1457 if (Fl::event_button () == FL_LEFT_MOUSE |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1458 && Fl::event_shift ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1459 fp.set_selectiontype ("extend"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1460 else if ((Fl::event_button () == FL_LEFT_MOUSE |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1461 && Fl::event_ctrl ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1462 || Fl::event_button () == FL_RIGHT_MOUSE) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1463 fp.set_selectiontype ("alternate"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1464 else if (Fl::event_clicks ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1465 fp.set_selectiontype ("open"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1466 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1467 fp.set_selectiontype ("normal"); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1468 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1469 if (fp.get_windowbuttondownfcn ().is_defined ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1470 fp.execute_windowbuttondownfcn (Fl::event_button ()); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1471 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1472 gh = pixel2axes_or_ca (pos_x, pos_y); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1473 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1474 if (gh.ok ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1475 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1476 ax_obj = gh_manager::get_object (gh); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1477 set_axes_currentpoint (ax_obj, pos_x, pos_y); |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
1478 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1479 int ndim = calc_dimensions (ax_obj); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1480 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1481 if (ndim == 3) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1482 rotate->activate (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1483 else // ndim == 2 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1484 rotate->deactivate (); |
10792
91342260063e
mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10593
diff
changeset
|
1485 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1486 fp.set_currentobject (ax_obj.get_handle ().value ()); |
19013
60e54be64f37
Fix ginput for FLTK toolkit
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19012
diff
changeset
|
1487 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1488 base_properties& props = ax_obj.get_properties (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1489 if (props.get_buttondownfcn ().is_defined ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1490 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
|
1491 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1492 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1493 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1494 else if (fp.get_buttondownfcn ().is_defined ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1495 fp.execute_buttondownfcn (Fl::event_button ()); |
9455 | 1496 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1497 break; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1498 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1499 case FL_DRAG: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1500 if (fp.get_windowbuttonmotionfcn ().is_defined ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1501 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1502 set_currentpoint (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
|
1503 fp.execute_windowbuttonmotionfcn (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1504 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1505 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1506 if (Fl::event_button () == 1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1507 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1508 if (ax_obj && ax_obj.isa ("axes")) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1509 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1510 axes::properties& ap = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1511 dynamic_cast<axes::properties&> |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1512 (ax_obj.get_properties ()); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1513 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1514 // Don't pan or rotate legend |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1515 if (ap.get_tag ().compare ("legend") < 0) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1516 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1517 if (rotate_enabled ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1518 view2status (ax_obj); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1519 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1520 pixel2status (ax_obj, pos_x, pos_y, |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1521 Fl::event_x (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1522 Fl::event_y () - menu_dy ()); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1523 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1524 double x0, y0, x1, y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1525 Matrix pos = fp.get_boundingbox (true); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1526 pixel2pos (ax_obj, pos_x, pos_y, x0, y0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1527 pixel2pos (ax_obj, Fl::event_x (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1528 Fl::event_y () - menu_dy (), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1529 x1, y1); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1530 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1531 if (pan_enabled ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1532 ap.translate_view ("both", x0, x1, y0, y1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1533 else if (rotate_enabled ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1534 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1535 double daz, del; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1536 daz = (Fl::event_x () - pos_x) / pos(2) * 360; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1537 del = (Fl::event_y () - menu_dy () - pos_y) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1538 / pos(3) * 360; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1539 ap.rotate_view (del, daz); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1540 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1541 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1542 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1543 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1544 // move the position of the legend |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1545 Matrix pos = ap.get_position ().matrix_value (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1546 pos(0) += double (Fl::event_x () - pos_x) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1547 / canvas->w (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1548 pos(1) -= double (Fl::event_y () - menu_dy () - pos_y) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1549 / canvas->h (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1550 ap.set_position (pos); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1551 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1552 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1553 pos_x = Fl::event_x (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1554 pos_y = Fl::event_y () - menu_dy (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1555 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1556 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1557 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1558 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1559 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
|
1560 { |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1561 pixel2status (ax_obj, pos_x, pos_y, |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1562 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
|
1563 Matrix zoom_box (1,4,0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1564 zoom_box (0) = pos_x; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1565 zoom_box (1) = pos_y; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1566 zoom_box (2) = Fl::event_x (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1567 zoom_box (3) = Fl::event_y () - menu_dy (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1568 canvas->set_zoom_box (zoom_box); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1569 canvas->zoom (true); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1570 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
|
1571 return 1; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1572 } |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1573 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1574 break; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1575 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1576 case FL_MOUSEWHEEL: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1577 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1578 graphics_object ax = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1579 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
|
1580 Fl::event_y () |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1581 - menu_dy ())); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1582 if (ax && ax.isa ("axes")) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1583 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1584 axes::properties& ap = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1585 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
|
1586 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1587 // 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
|
1588 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
|
1589 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1590 // Determine if we're zooming in or out. |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1591 const double factor = |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1592 (Fl::event_dy () > 0) ? 1 / (1.0 - wheel_zoom_speed) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1593 : 1.0 - wheel_zoom_speed; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1594 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1595 // 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
|
1596 double x1, y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1597 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
|
1598 x1, y1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1599 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1600 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
|
1601 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1602 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1603 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1604 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1605 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1606 case FL_RELEASE: |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1607 if (fp.get_windowbuttonupfcn ().is_defined ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1608 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1609 set_currentpoint (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
|
1610 fp.execute_windowbuttonupfcn (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1611 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1612 |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1613 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
|
1614 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1615 // Double click |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1616 set_on_ax_obj ("xlimmode", "auto"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1617 set_on_ax_obj ("ylimmode", "auto"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1618 set_on_ax_obj ("zlimmode", "auto"); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1619 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1620 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1621 if (Fl::event_button () == 3) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1622 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1623 // End of drag -- zoom. |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1624 if (canvas->zoom ()) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1625 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1626 canvas->zoom (false); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1627 double x0,y0,x1,y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1628 if (ax_obj && ax_obj.isa ("axes")) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1629 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1630 axes::properties& ap = dynamic_cast<axes::properties&> |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1631 (ax_obj.get_properties ()); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1632 pixel2pos (ax_obj, pos_x, pos_y, x0, y0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1633 int pos_x1 = Fl::event_x (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1634 int pos_y1 = Fl::event_y () - menu_dy (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1635 pixel2pos (ax_obj, pos_x1, pos_y1, x1, y1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1636 Matrix xl (1,2,0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1637 Matrix yl (1,2,0); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1638 int dx = abs (pos_x - pos_x1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1639 int dy = abs (pos_y - pos_y1); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1640 // 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
|
1641 if ((dx > 4) && (dy > 4)) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1642 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1643 if (x0 < x1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1644 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1645 xl(0) = x0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1646 xl(1) = x1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1647 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1648 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1649 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1650 xl(0) = x1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1651 xl(1) = x0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1652 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1653 if (y0 < y1) |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1654 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1655 yl(0) = y0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1656 yl(1) = y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1657 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1658 else |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1659 { |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1660 yl(0) = y1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1661 yl(1) = y0; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1662 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1663 ap.zoom ("both", xl, yl); |
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 mark_modified (); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1666 return 1; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1667 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1668 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1669 } |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1670 break; |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1671 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1672 } |
18966
b2db129c664d
Fix FLTK event handling for shortcuts and mouse cursor change
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18961
diff
changeset
|
1673 //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
|
1674 return Fl_Window::handle (event); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1675 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1676 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1677 |
7869 | 1678 class figure_manager |
1679 { | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1680 public: |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1681 |
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
|
1682 static bool instance_ok (void) |
7869 | 1683 { |
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
|
1684 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
|
1685 |
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
|
1686 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
|
1687 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
|
1688 |
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
|
1689 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
|
1690 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1691 ::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
|
1692 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1693 retval = false; |
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
|
1694 } |
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
|
1695 |
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
|
1696 return retval; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1697 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1698 |
7869 | 1699 ~figure_manager (void) |
1700 { | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1701 close_all (); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1702 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1703 |
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
|
1704 static void close_all (void) |
7869 | 1705 { |
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
|
1706 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
|
1707 instance->do_close_all (); |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1708 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1709 |
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
|
1710 static void new_window (figure::properties& fp) |
7869 | 1711 { |
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
|
1712 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
|
1713 instance->do_new_window (fp); |
7869 | 1714 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1715 |
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
|
1716 static void delete_window (int idx) |
7869 | 1717 { |
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
|
1718 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
|
1719 instance->do_delete_window (idx); |
7869 | 1720 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1721 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1722 static void delete_window (const std::string& idx_str) |
7869 | 1723 { |
1724 delete_window (str2idx (idx_str)); | |
1725 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1726 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1727 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
|
1728 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1729 if (instance_ok ()) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1730 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
|
1731 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1732 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1733 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
|
1734 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1735 if (instance_ok ()) |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1736 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
|
1737 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1738 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1739 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
|
1740 bool is_visible) |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1741 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1742 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
|
1743 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1744 |
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
|
1745 static void mark_modified (int idx) |
7869 | 1746 { |
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
|
1747 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
|
1748 instance->do_mark_modified (idx); |
7869 | 1749 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1750 |
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
|
1751 static void mark_modified (const graphics_handle& gh) |
7869 | 1752 { |
1753 mark_modified (hnd2idx (gh)); | |
1754 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1755 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1756 static void set_name (int idx) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1757 { |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1758 if (instance_ok ()) |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1759 instance->do_set_name (idx); |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1760 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1761 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1762 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
|
1763 { |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1764 set_name (str2idx (idx_str)); |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1765 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1766 |
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
|
1767 static Matrix get_size (int idx) |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1768 { |
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
|
1769 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
|
1770 } |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1771 |
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
|
1772 static Matrix get_size (const graphics_handle& gh) |
7869 | 1773 { |
1774 return get_size (hnd2idx (gh)); | |
1775 } | |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1776 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1777 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
|
1778 const std::string& term) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1779 { |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1780 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1781 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
|
1782 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1783 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1784 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
|
1785 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
|
1786 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1787 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1788 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
|
1789 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1790 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1791 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
|
1792 const graphics_handle& ca) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1793 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1794 if (instance_ok ()) |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1795 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
|
1796 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1797 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1798 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
|
1799 bool internal) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1800 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1801 if (instance_ok ()) |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1802 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
|
1803 } |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1804 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1805 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
|
1806 bool menubar_is_figure) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1807 { |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1808 if (instance_ok ()) |
18985
f84361735a40
maint: Use Octave coding conventions for some recent patches.
Rik <rik@octave.org>
parents:
18968
diff
changeset
|
1809 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
|
1810 menubar_is_figure); |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1811 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1812 |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1813 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
|
1814 |
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
|
1815 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
|
1816 |
7869 | 1817 figure_manager (void) { } |
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
|
1818 |
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
|
1819 // No copying! |
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
|
1820 figure_manager (const 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
|
1821 figure_manager& operator = (const 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
|
1822 |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
1823 // Singelton -- hide all of the above. |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1824 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1825 static int curr_index; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1826 typedef std::map<int, plot_window*> window_map; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1827 typedef window_map::iterator wm_iterator;; |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1828 window_map windows; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1829 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1830 static std::string fltk_idx_header; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
1831 |
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
|
1832 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
|
1833 { |
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
|
1834 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
|
1835 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
|
1836 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
|
1837 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
|
1838 } |
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
|
1839 |
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
|
1840 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
|
1841 { |
13798
718f78b01de1
allow initial position to be set for fltk windows
John W. Eaton <jwe@octave.org>
parents:
13721
diff
changeset
|
1842 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
|
1843 |
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
|
1844 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
|
1845 { |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1846 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
|
1847 bool internal = false; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1848 // 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
|
1849 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
|
1850 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1851 pos = fp.get_boundingbox (internal); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1852 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1853 else |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1854 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1855 // use position |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1856 internal = true; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1857 pos = fp.get_boundingbox (internal); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1858 } |
13798
718f78b01de1
allow initial position to be set for fltk windows
John W. Eaton <jwe@octave.org>
parents:
13721
diff
changeset
|
1859 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1860 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
|
1861 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19758
diff
changeset
|
1862 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
|
1863 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
|
1864 } |
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 |
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
|
1867 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
|
1868 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1869 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1870 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1871 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
|
1872 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1873 delete win->second; |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1874 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
|
1875 } |
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
|
1876 } |
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
|
1877 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1878 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
|
1879 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1880 wm_iterator win = windows.find (idx); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1881 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1882 if (win != windows.end ()) |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1883 win->second->renumber (new_number); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1884 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
1885 |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1886 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
|
1887 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1888 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1889 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1890 if (win != windows.end ()) |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1891 { |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1892 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
|
1893 { |
728873ccd637
Show canvas if figure was created with visible off (bug #41895)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19296
diff
changeset
|
1894 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
|
1895 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
|
1896 } |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1897 else |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1898 win->second->hide (); |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1899 |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1900 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1901 } |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
1902 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1903 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
|
1904 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1905 wm_iterator win = windows.find (fig_idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1906 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1907 if (win != windows.end ()) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1908 { |
11585 | 1909 if (menubar_is_figure) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1910 win->second->show_menubar (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1911 else |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1912 win->second->hide_menubar (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1913 |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1914 win->second->redraw (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1915 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1916 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1917 |
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
|
1918 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
|
1919 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1920 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1921 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1922 if (win != windows.end ()) |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1923 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1924 win->second->mark_modified (); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1925 } |
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
|
1926 } |
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
|
1927 |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1928 void do_set_name (int idx) |
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 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1931 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1932 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1933 win->second->set_name (); |
10008
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1934 } |
b6261d776a82
handle window title correctly in fltk_backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9991
diff
changeset
|
1935 |
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
|
1936 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
|
1937 { |
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
|
1938 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
|
1939 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1940 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1941 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1942 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
|
1943 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1944 sz(0) = win->second->w (); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1945 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
|
1946 } |
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
|
1947 |
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
|
1948 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
|
1949 } |
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
|
1950 |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
1951 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
|
1952 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1953 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1954 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1955 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1956 win->second->print (cmd, term); |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1957 } |
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
1958 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1959 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
|
1960 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1961 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1962 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1963 if (win != windows.end ()) |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1964 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
|
1965 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1966 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1967 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
|
1968 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1969 wm_iterator win = windows.find (idx); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1970 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1971 if (win != windows.end ()) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1972 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1973 if (ca.ok ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1974 win->second->show_canvas (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1975 else |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1976 win->second->hide_canvas (); |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1977 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
1978 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1979 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1980 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
|
1981 { |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1982 wm_iterator win = windows.find (idx); |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1983 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1984 if (win != windows.end ()) |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
1985 win->second->update_boundingbox (internal); |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1986 } |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
1987 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
1988 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
|
1989 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1990 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
|
1991 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
|
1992 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1993 std::istringstream istr (clstr.substr (fltk_idx_header.size ())); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1994 if (istr >> ind) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
1995 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
|
1996 } |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
1997 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
|
1998 return -1; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
1999 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2000 |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2001 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
|
2002 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2003 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
|
2004 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
|
2005 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
|
2006 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2007 |
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 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
|
2009 { |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2010 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
|
2011 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2012 octave_value ps = fp.get___plot_stream__ (); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2013 if (ps.is_string ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2014 return str2idx (ps.string_value ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2015 else |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2016 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
|
2017 } |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2018 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
|
2019 return -1; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2020 } |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2021 |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2022 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
|
2023 { |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2024 graphics_object fobj = gh_manager::get_object (h); |
7869 | 2025 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
|
2026 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2027 figure::properties& fp = |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2028 dynamic_cast<figure::properties&> (fobj.get_properties ()); |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2029 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
|
2030 } |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2031 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
|
2032 return -1; |
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2033 } |
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
|
2034 |
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
|
2035 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
|
2036 { |
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 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
|
2038 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2039 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2040 |
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
|
2041 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
|
2042 |
7841
c643e5c520f5
fltk_backend now indexes using an internal index instead of figure handle
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7840
diff
changeset
|
2043 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
|
2044 int figure_manager::curr_index = 1; |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2045 |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2046 static bool toolkit_loaded = false; |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
2047 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2048 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
|
2049 { |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2050 public: |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2051 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
|
2052 : 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
|
2053 input_event_hook_fcn_id () |
19012
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2054 { |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2055 Fl::visual (FL_RGB); |
7f73293d8423
Revise FLTK keypressfcn and keyreleasefcn callbacks
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19010
diff
changeset
|
2056 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2057 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2058 ~fltk_graphics_toolkit (void) { } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2059 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2060 bool is_valid (void) const { return true; } |
7869 | 2061 |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
12968
diff
changeset
|
2062 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
|
2063 { |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2064 if (go.isa ("figure") |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2065 || go.isa ("uimenu")) |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2066 { |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2067 if (go.isa ("uimenu")) |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2068 update (go, uimenu::properties::ID_LABEL); |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2069 |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2070 return true; |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2071 } |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2072 |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2073 return false; |
7a67ab7c4771
Initialize uimenu objects for the fltk toolkit.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16871
diff
changeset
|
2074 } |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
12968
diff
changeset
|
2075 |
10973
a8235d26b57a
improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents:
10972
diff
changeset
|
2076 void finalize (const graphics_object& go) |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2077 { |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2078 if (go.isa ("figure")) |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2079 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2080 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
|
2081 |
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
|
2082 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
|
2083 figure_manager::delete_window (ov.string_value ()); |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2084 } |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2085 } |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2086 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2087 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
|
2088 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2089 if (uimenu_obj.valid_object ()) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2090 { |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2091 uimenu::properties& uimenup = |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2092 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
|
2093 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
|
2094 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
|
2095 if (go.isa ("uimenu")) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2096 fltk_label = dynamic_cast<const uimenu::properties&> |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2097 (go.get_properties ()).get_fltk_label () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2098 + "/" |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2099 + fltk_label; |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2100 else if (go.isa ("figure")) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2101 ; |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2102 else |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2103 error ("unexpected parent object\n"); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2104 |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2105 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
|
2106 } |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2107 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2108 |
10973
a8235d26b57a
improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents:
10972
diff
changeset
|
2109 void update (const graphics_object& go, int id) |
7869 | 2110 { |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2111 if (go.isa ("figure")) |
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2112 { |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2113 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
|
2114 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2115 if (! ov.is_empty ()) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2116 { |
9973
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2117 const figure::properties& fp = |
cd8f355157b8
Handle figure visibility in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9951
diff
changeset
|
2118 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
|
2119 |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2120 switch (id) |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2121 { |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2122 case base_properties::ID_VISIBLE: |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2123 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
|
2124 fp.is_visible ()); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2125 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2126 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2127 case figure::properties::ID_MENUBAR: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2128 figure_manager::toggle_menubar_visibility |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2129 (ov.string_value (), fp.menubar_is ("figure")); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2130 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2131 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2132 case figure::properties::ID_CURRENTAXES: |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2133 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
|
2134 fp.get_currentaxes ()); |
13815
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2135 break; |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2136 |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2137 case figure::properties::ID_NAME: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2138 case figure::properties::ID_NUMBERTITLE: |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2139 figure_manager::set_name (ov.string_value ()); |
0aba6f90f5f8
maint: __init_fltk__.cc style fixes
John W. Eaton <jwe@octave.org>
parents:
13804
diff
changeset
|
2140 break; |
13816
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2141 |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2142 case figure::properties::ID_INTEGERHANDLE: |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2143 { |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2144 std::string tmp = ov.string_value (); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2145 graphics_handle gh = fp.get___myhandle__ (); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2146 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
|
2147 figure_manager::set_name (tmp); |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2148 } |
7ee18dc46bbb
new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents:
13815
diff
changeset
|
2149 break; |
18961
52e01aa1fe8b
Overhaul FLTK pan, rotate, zoom
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18958
diff
changeset
|
2150 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2151 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
|
2152 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
|
2153 break; |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2154 |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2155 case figure::properties::ID_OUTERPOSITION: |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2156 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
|
2157 break; |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2158 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
10076
diff
changeset
|
2159 } |
8059
75c99d3f97d7
Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents:
7965
diff
changeset
|
2160 } |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2161 else if (go.isa ("uimenu")) |
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2162 { |
11239
5fa7667f90e5
Add prefix ID_ to property ids to avoid name clash on windows
Kai Habel <kai.habel@gmx.de>
parents:
11224
diff
changeset
|
2163 if (id == uimenu::properties::ID_LABEL) |
11155
f0e9befd6a1c
add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents:
11045
diff
changeset
|
2164 uimenu_set_fltk_label (go); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2165 |
14854
5ae9f0f77635
maint: Use Octave coding conventions for coddling parenthis is DLD-FUNCTIONS directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2166 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
|
2167 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
|
2168 } |
7869 | 2169 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2170 |
8077 | 2171 void redraw_figure (const graphics_object& go) const |
7869 | 2172 { |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2173 // 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
|
2174 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
|
2175 if (obj && obj.isa ("root")) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2176 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2177 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
|
2178 Matrix children = props.get_all_children (); |
9652
ecdb275bd41b
make drawnow work for fltk backend
John W. Eaton <jwe@octave.org>
parents:
9640
diff
changeset
|
2179 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2180 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
|
2181 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2182 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
|
2183 if (fobj && fobj.isa ("figure")) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2184 { |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2185 figure::properties& fp = |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2186 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
|
2187 if (fp.get___graphics_toolkit__ () |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2188 == FLTK_GRAPHICS_TOOLKIT_NAME) |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2189 figure_manager::new_window (fp); |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2190 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2191 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2192 } |
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2193 |
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
|
2194 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
|
2195 Fl::check (); |
7869 | 2196 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2197 |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9758
diff
changeset
|
2198 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
|
2199 const std::string& term, |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
2200 const std::string& file_cmd, bool /*mono*/, |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2201 const std::string& /*debug_file*/) const |
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2202 { |
12449
2f0d1e12806d
invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents:
12324
diff
changeset
|
2203 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
|
2204 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2205 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2206 Matrix get_canvas_size (const graphics_handle& fh) const |
7869 | 2207 { |
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
|
2208 return figure_manager::get_size (fh); |
7869 | 2209 } |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2210 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2211 /* |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2212 double get_screen_resolution (void) const |
7869 | 2213 { |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
2214 // FLTK doesn't give this info. |
7869 | 2215 return 72.0; |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2216 |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2217 // FIXME: FLTK >= 1.3.0 could do this with Fl::screen_dpi (h, v, n) |
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2218 // but do we need it? |
7869 | 2219 } |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2220 */ |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2221 |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2222 Matrix get_screen_size (void) const |
7869 | 2223 { |
2224 Matrix sz (1, 2, 0.0); | |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2225 sz(0) = Fl::w (); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2226 sz(1) = Fl::h (); |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2227 return sz; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2228 } |
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
|
2229 |
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
|
2230 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
|
2231 { |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2232 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
|
2233 { |
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
|
2234 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
|
2235 |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2236 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
|
2237 args.append (false); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2238 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
|
2239 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
|
2240 |
18958
c9f960441513
Overhaul FLTK plotting and printing
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18678
diff
changeset
|
2241 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
|
2242 } |
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
|
2243 } |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2244 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2245 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
|
2246 { |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2247 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
|
2248 } |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2249 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2250 private: |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2251 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
|
2252 }; |
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2253 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2254 #endif |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2255 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2256 DEFUN_DLD (__fltk_check__, , , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2257 "-*- texinfo -*-\n\ |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2258 @deftypefn {Loadable Function} {} __fltk_check__ ()\n\ |
19152
0f9c5a15c8fa
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
19028
diff
changeset
|
2259 Undocumented internal function. Calls Fl::check ()\n\ |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2260 @end deftypefn") |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2261 { |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2262 #ifdef HAVE_FLTK |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2263 Fl::check (); |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2264 #else |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2265 error ("__fltk_check__: not available without OpenGL and FLTK libraries"); |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2266 #endif |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2267 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2268 return octave_value (); |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2269 } |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2270 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2271 // Initialize the fltk graphics toolkit. |
9951
d64d15e12e6b
print immediately in fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9802
diff
changeset
|
2272 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2273 DEFUN_DLD (__init_fltk__, , , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2274 "-*- texinfo -*-\n\ |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2275 @deftypefn {Loadable Function} {} __init_fltk__ ()\n\ |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2276 Undocumented internal function.\n\ |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2277 @end deftypefn") |
7834
caab78e7e377
added checks for fltk & freetype in configure script
Shai Ayal <shaiay@sourceforge.net>
parents:
diff
changeset
|
2278 { |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2279 #ifdef 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
|
2280 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
|
2281 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
|
2282 else if (! toolkit_loaded) |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
2283 { |
9216
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
2284 mlock (); |
9d4b84b14bf0
call mlock in __fltk_init__
John W. Eaton <jwe@octave.org>
parents:
9060
diff
changeset
|
2285 |
16348
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2286 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
|
2287 graphics_toolkit tk (fltk); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2288 gtk_manager::load_toolkit (tk); |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
14020
diff
changeset
|
2289 toolkit_loaded = true; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2290 |
19010
c3af040956df
fix FLTK position/outerposition properties, respect units
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18985
diff
changeset
|
2291 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
|
2292 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
|
2293 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
|
2294 |
072b3e6504c4
use function handle for fltk input event hook function
John W. Eaton <jwe@octave.org>
parents:
15507
diff
changeset
|
2295 fltk->set_input_event_hook_id (id); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
8059
diff
changeset
|
2296 } |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2297 #else |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2298 error ("__init_fltk__: not available without OpenGL and FLTK libraries"); |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2299 #endif |
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
|
2300 |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2301 return octave_value (); |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2302 } |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
2303 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2304 DEFUN_DLD (__have_fltk__, , , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2305 "-*- texinfo -*-\n\ |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16785
diff
changeset
|
2306 @deftypefn {Loadable Function} {@var{FLTK_available} =} __have_fltk__ ()\n\ |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2307 Undocumented internal function.\n\ |
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2308 @end deftypefn") |
15503
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2309 { |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2310 octave_value retval; |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2311 |
15507
b9b9795a7cd9
build: Build FLTK-associated DOCSTRINGS even when HAVE_FLTK is 0 (bug #37541).
Rik <rik@octave.org>
parents:
15506
diff
changeset
|
2312 #ifdef HAVE_FLTK |
15503
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2313 retval = true; |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2314 #else |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2315 retval = false; |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2316 #endif |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2317 |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2318 return retval; |
dca1f2bcccf3
don't register fltk toolkit if compiling without FLTK (bug #37541)
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
2319 } |