Mercurial > octave
annotate libgui/src/octave-gui.cc @ 22157:c5842206aaea
maint: Strip trailing whitespace from source files.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 22 Jul 2016 08:40:20 -0400 |
parents | ff54e7882863 |
children | 20e684ec108e |
rev | line source |
---|---|
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
1 /* |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
2 |
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19686
diff
changeset
|
3 Copyright (C) 2011-2015 Jacob Dawid |
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
4 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
5 This file is part of Octave. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
6 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
10 option) any later version. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
11 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
15 for more details. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
16 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
20 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
21 */ |
13501 | 22 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21482
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
24 # include "config.h" |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
25 #endif |
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
26 |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
27 #include <QApplication> |
17647
7ec70c575ad6
* octave-gui.cc: set the encoding of qt strings to utf8
Torsten <ttl@justmail.de>
parents:
17569
diff
changeset
|
28 #include <QTextCodec> |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
29 #include <QThread> |
13501 | 30 #include <QTranslator> |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
31 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
32 #include <cstdio> |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
33 |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
34 #include <iostream> |
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
35 |
16597
49832f60282e
if available, use ioctl to give up controlling terminal
Ben Abbott <bpabbott@mac.com>
parents:
16486
diff
changeset
|
36 #if defined (HAVE_SYS_IOCTL_H) |
21203
710e700cdd7f
maint: Clean up naming and indentation of #ifdef blocks in libgui
Rik <rik@octave.org>
parents:
20671
diff
changeset
|
37 # include <sys/ioctl.h> |
16597
49832f60282e
if available, use ioctl to give up controlling terminal
Ben Abbott <bpabbott@mac.com>
parents:
16486
diff
changeset
|
38 #endif |
49832f60282e
if available, use ioctl to give up controlling terminal
Ben Abbott <bpabbott@mac.com>
parents:
16486
diff
changeset
|
39 |
15368
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15209
diff
changeset
|
40 #include "lo-utils.h" |
15597
9046ee786fe1
Use octave_env instead of setenv.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
15425
diff
changeset
|
41 #include "oct-env.h" |
17569
9d0992c6df30
arrange to pass signals to the GUI subprocess
John W. Eaton <jwe@octave.org>
parents:
17568
diff
changeset
|
42 #include "oct-syscalls.h" |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
15139
diff
changeset
|
43 |
19868
c7c50030e76c
allow qt graphics toolkit to be used in --no-gui mode (bug #44116)
Stefan Mahr <dac922@gmx.de>
parents:
19861
diff
changeset
|
44 #include "builtin-defun-decls.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
45 #include "display.h" |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
46 #if defined (HAVE_QT_GRAPHICS) |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
47 # include "__init_qt__.h" |
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
48 #endif |
22088
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
49 #include "octave.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
50 #include "unistd-wrappers.h" |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
51 |
22088
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
52 #include "main-window.h" |
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
53 #include "octave-gui.h" |
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
54 #include "resource-manager.h" |
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
55 #include "shortcut-manager.h" |
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
56 #include "thread-manager.h" |
c3823cb0ea02
eliminate unused class definition
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
57 #include "welcome-wizard.h" |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
58 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18569
diff
changeset
|
59 // Disable all Qt messages by default. |
17737
d3bb7f1e3971
prevent the editor's file watcher from signaling fasle alarms (bug #40312)
Torsten <ttl@justmail.de>
parents:
17647
diff
changeset
|
60 |
18618
c644cfa9cb3b
suppress all X11 and Qt error messages by default
John W. Eaton <jwe@octave.org>
parents:
18569
diff
changeset
|
61 static void |
19614
4c3ea57905fd
eliminate unused variable warnings in libgui
John W. Eaton <jwe@octave.org>
parents:
19594
diff
changeset
|
62 message_handler (QtMsgType, const char *) |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17778
diff
changeset
|
63 { |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17778
diff
changeset
|
64 } |
17737
d3bb7f1e3971
prevent the editor's file watcher from signaling fasle alarms (bug #40312)
Torsten <ttl@justmail.de>
parents:
17647
diff
changeset
|
65 |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
66 #if defined (OCTAVE_USE_WINDOWS_API) |
22154 | 67 #include <windows.h> |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
68 // set app id if we have the SetCurrentProcessExplicitAppUserModelID |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
69 // available (>= Win7) |
22157
c5842206aaea
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
22154
diff
changeset
|
70 static void |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
71 set_win_app_id () |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
72 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
73 typedef HRESULT (WINAPI *SETCURRENTAPPID)(PCWSTR AppID); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
74 HMODULE hShell = LoadLibrary ("shell32.dll"); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
75 if (hShell != NULL) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
76 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
77 SETCURRENTAPPID pfnSetCurrentProcessExplicitAppUserModelID = |
22157
c5842206aaea
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
22154
diff
changeset
|
78 reinterpret_cast<SETCURRENTAPPID> (GetProcAddress (hShell, |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
79 "SetCurrentProcessExplicitAppUserModelID")); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
80 |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
81 if (pfnSetCurrentProcessExplicitAppUserModelID) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
82 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
83 pfnSetCurrentProcessExplicitAppUserModelID (L"gnu.octave"); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
84 } |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
85 FreeLibrary (hShell); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
86 } |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
87 } |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
88 #endif |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
89 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
90 namespace octave |
13501 | 91 { |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
92 bool gui_application::start_gui_p (void) const |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
93 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
94 if (m_options.no_window_system ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
95 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
96 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
97 std::string err_msg; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
98 if (! display_info::display_available (err_msg)) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
99 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
100 if (! (m_options.inhibit_startup_message () || err_msg.empty ())) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
101 warning (err_msg.c_str ()); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
102 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
103 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
104 } |
17922
b5bf26a054bd
interrupt interpreter thread in GUI instead of calling "raise (SIGINT)"
John W. Eaton <jwe@octave.org>
parents:
17804
diff
changeset
|
105 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
106 if (! m_options.line_editing ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
107 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
108 if (! (m_options.inhibit_startup_message () |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
109 || m_options.no_gui ())) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
110 warning ("--no-line-editing option given, disabling GUI"); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
111 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
112 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
113 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
114 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
115 if (m_options.force_gui ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
116 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
117 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
118 if (m_options.no_gui ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
119 return false; |
18569
90dbbafb0502
prevent X11 errors from appearing in GUI command window
John W. Eaton <jwe@octave.org>
parents:
18027
diff
changeset
|
120 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
121 if (m_options.persist ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
122 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
123 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
124 // If stdin is not a tty, then assume we are reading commands from a |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
125 // pipe or a redirected file and the GUI should not start. If this |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
126 // is not the case (for example, starting from a desktop "launcher" |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
127 // with no terminal) and you want to start the GUI, you may use the |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
128 // --force-gui option to start the GUI. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
129 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
130 if (! octave_isatty_wrapper (fileno (stdin))) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
131 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
132 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
133 // If we have code to eval or execute from a file, and we are going |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
134 // to exit immediately after executing it, don't start the gui. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
135 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
136 std::string code_to_eval = m_options.code_to_eval (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
137 if (! code_to_eval.empty () || m_have_script_file) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
138 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
139 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
140 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
141 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
142 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
143 int gui_application::execute (void) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
144 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
145 octave_thread_manager::block_interrupt_signal (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
146 |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
147 #if defined (OCTAVE_USE_WINDOWS_API) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
148 set_win_app_id (); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
149 #endif |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
150 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
151 std::string show_gui_msgs = octave::sys::env::getenv ("OCTAVE_SHOW_GUI_MESSAGES"); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
152 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
153 // Installing our handler suppresses the messages. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
154 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
155 if (show_gui_msgs.empty ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
156 qInstallMsgHandler (message_handler); |
14878
a6c44c28dabe
Added patch from jwe that forks the GUI process in order to have less work.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14804
diff
changeset
|
157 |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
158 #if defined (HAVE_QT_GRAPHICS) |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
159 install___init_qt___functions (); |
19868
c7c50030e76c
allow qt graphics toolkit to be used in --no-gui mode (bug #44116)
Stefan Mahr <dac922@gmx.de>
parents:
19861
diff
changeset
|
160 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
161 Fregister_graphics_toolkit (ovl ("qt")); |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
162 #endif |
19868
c7c50030e76c
allow qt graphics toolkit to be used in --no-gui mode (bug #44116)
Stefan Mahr <dac922@gmx.de>
parents:
19861
diff
changeset
|
163 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
164 // If START_GUI is false, we still set up the QApplication so that |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
165 // we can use Qt widgets for plot windows. |
19949
857a8f018f53
set up octave_link when running with --no-gui option (bug #44116)
John W. Eaton <jwe@octave.org>
parents:
19868
diff
changeset
|
166 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
167 QApplication qt_app (m_argc, m_argv); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
168 QTranslator gui_tr, qt_tr, qsci_tr; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
169 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
170 // Set the codec for all strings (before wizard or any GUI object) |
19973 | 171 #if ! defined (Q_OS_WIN32) |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
172 QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("UTF-8")); |
19949
857a8f018f53
set up octave_link when running with --no-gui option (bug #44116)
John W. Eaton <jwe@octave.org>
parents:
19868
diff
changeset
|
173 #endif |
857a8f018f53
set up octave_link when running with --no-gui option (bug #44116)
John W. Eaton <jwe@octave.org>
parents:
19868
diff
changeset
|
174 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
175 bool start_gui = start_gui_p (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
176 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
177 // Show welcome wizard if this is the first run. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
178 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
179 if (resource_manager::is_first_run () && start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
180 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
181 // Before wizard. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
182 resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr); |
20246
6fe746def1aa
Also load settings and translations in --no-gui mode (bugs #44222 and #45199)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19973
diff
changeset
|
183 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
184 qt_app.installTranslator (&qt_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
185 qt_app.installTranslator (&gui_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
186 qt_app.installTranslator (&qsci_tr); |
20246
6fe746def1aa
Also load settings and translations in --no-gui mode (bugs #44222 and #45199)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19973
diff
changeset
|
187 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
188 welcome_wizard welcomeWizard; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
189 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
190 if (welcomeWizard.exec () == QDialog::Rejected) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
191 exit (1); |
20246
6fe746def1aa
Also load settings and translations in --no-gui mode (bugs #44222 and #45199)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19973
diff
changeset
|
192 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
193 // Install settings file. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
194 resource_manager::reload_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
195 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
196 else |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
197 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
198 // Get settings file. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
199 resource_manager::reload_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
200 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
201 // After settings. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
202 resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
203 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
204 qt_app.installTranslator (&qt_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
205 qt_app.installTranslator (&gui_tr); |
20246
6fe746def1aa
Also load settings and translations in --no-gui mode (bugs #44222 and #45199)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19973
diff
changeset
|
206 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
207 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
208 qt_app.installTranslator (&qsci_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
209 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
210 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
211 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
212 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
213 resource_manager::update_network_settings (); |
14878
a6c44c28dabe
Added patch from jwe that forks the GUI process in order to have less work.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14804
diff
changeset
|
214 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
215 // We provide specific terminal capabilities, so ensure that |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
216 // TERM is always set appropriately. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
217 |
21979
d04da18a407a
use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents:
21941
diff
changeset
|
218 #if defined (OCTAVE_USE_WINDOWS_API) |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
219 octave::sys::env::putenv ("TERM", "cygwin"); |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
220 #else |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
221 octave::sys::env::putenv ("TERM", "xterm"); |
17778
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
222 #endif |
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
223 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
224 shortcut_manager::init_data (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
225 } |
18611
086093fbdc1a
first implementation of a shortcut manager (bug #41217)
Torsten <ttl@justmail.de>
parents:
18575
diff
changeset
|
226 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
227 // Force left-to-right alignment (see bug #46204) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
228 qt_app.setLayoutDirection (Qt::LeftToRight); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
229 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
230 // Create and show main window. |
20671
d29614aed16f
Force left-to-right alignment for the whole GUI (bug #46204)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20259
diff
changeset
|
231 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
232 main_window w (0, this); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
233 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
234 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
235 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
236 w.read_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
237 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
238 w.init_terminal_size (); |
20246
6fe746def1aa
Also load settings and translations in --no-gui mode (bugs #44222 and #45199)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19973
diff
changeset
|
239 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
240 // Connect signals for changes in visibility not before w |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
241 // is shown. |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
242 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
243 w.connect_visibility_changed (); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
244 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
245 w.focus_command_window (); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
246 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
247 gui_running (true); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
248 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
249 else |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
250 qt_app.setQuitOnLastWindowClosed (false); |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
18618
diff
changeset
|
251 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
252 return qt_app.exec (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
253 } |
13501 | 254 } |