Mercurial > octave
annotate libgui/src/octave-gui.cc @ 22153:bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
* libgui/src/octave-gui.cc:
(set_win_app_id): new function
(gui_application::start_gui_p): add call to set_win_app_id in windows
author | John Donoghue |
---|---|
date | Wed, 20 Jul 2016 16:33:58 -0400 |
parents | c2c668b3051b |
children | ff54e7882863 |
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) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
67 // set app id if we have the SetCurrentProcessExplicitAppUserModelID |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
68 // available (>= Win7) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
69 static void |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
70 set_win_app_id () |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
71 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
72 typedef HRESULT (WINAPI *SETCURRENTAPPID)(PCWSTR AppID); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
73 HMODULE hShell = LoadLibrary ("shell32.dll"); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
74 if (hShell != NULL) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
75 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
76 SETCURRENTAPPID pfnSetCurrentProcessExplicitAppUserModelID = |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
77 reinterpret_cast<SETCURRENTAPPID> (GetProcAddress (hShell, |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
78 "SetCurrentProcessExplicitAppUserModelID")); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
79 |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
80 if (pfnSetCurrentProcessExplicitAppUserModelID) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
81 { |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
82 pfnSetCurrentProcessExplicitAppUserModelID (L"gnu.octave"); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
83 } |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
84 FreeLibrary (hShell); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
85 } |
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 #endif |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
88 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
89 namespace octave |
13501 | 90 { |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
91 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
|
92 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
93 if (m_options.no_window_system ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
94 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
95 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
96 std::string err_msg; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
97 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
|
98 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
99 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
|
100 warning (err_msg.c_str ()); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
101 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
102 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
103 } |
17922
b5bf26a054bd
interrupt interpreter thread in GUI instead of calling "raise (SIGINT)"
John W. Eaton <jwe@octave.org>
parents:
17804
diff
changeset
|
104 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
105 if (! m_options.line_editing ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
106 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
107 if (! (m_options.inhibit_startup_message () |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
108 || m_options.no_gui ())) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
109 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
|
110 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
111 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
112 } |
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 if (m_options.force_gui ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
115 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
116 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
117 if (m_options.no_gui ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
118 return false; |
18569
90dbbafb0502
prevent X11 errors from appearing in GUI command window
John W. Eaton <jwe@octave.org>
parents:
18027
diff
changeset
|
119 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
120 if (m_options.persist ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
121 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
122 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
123 // 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
|
124 // 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
|
125 // 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
|
126 // 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
|
127 // --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
|
128 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
129 if (! octave_isatty_wrapper (fileno (stdin))) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
130 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
131 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
132 // 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
|
133 // 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
|
134 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
135 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
|
136 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
|
137 return false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
138 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
139 return true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
140 } |
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 int gui_application::execute (void) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
143 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
144 octave_thread_manager::block_interrupt_signal (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
145 |
22153
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
146 #if defined (OCTAVE_USE_WINDOWS_API) |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
147 set_win_app_id (); |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
148 #endif |
bbaeaed0c584
set AppUserModelId for application in Windows (bug #47527)
John Donoghue
parents:
22089
diff
changeset
|
149 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
150 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
|
151 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
152 // Installing our handler suppresses the messages. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
153 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
154 if (show_gui_msgs.empty ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
155 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
|
156 |
21374
1487a68a496a
untangle configuration of OpenGL, FLTK, and Qt (bug #47263)
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
157 #if defined (HAVE_QT_GRAPHICS) |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
158 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
|
159 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
160 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
|
161 #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
|
162 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
163 // 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
|
164 // 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
|
165 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
166 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
|
167 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
|
168 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
169 // Set the codec for all strings (before wizard or any GUI object) |
19973 | 170 #if ! defined (Q_OS_WIN32) |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
171 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
|
172 #endif |
857a8f018f53
set up octave_link when running with --no-gui option (bug #44116)
John W. Eaton <jwe@octave.org>
parents:
19868
diff
changeset
|
173 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
174 bool start_gui = start_gui_p (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
175 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
176 // 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
|
177 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
178 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
|
179 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
180 // Before wizard. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
181 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
|
182 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
183 qt_app.installTranslator (&qt_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
184 qt_app.installTranslator (&gui_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
185 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
|
186 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
187 welcome_wizard welcomeWizard; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
188 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
189 if (welcomeWizard.exec () == QDialog::Rejected) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
190 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
|
191 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
192 // Install settings file. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
193 resource_manager::reload_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
194 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
195 else |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
196 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
197 // Get settings file. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
198 resource_manager::reload_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
199 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
200 // After settings. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
201 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
|
202 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
203 qt_app.installTranslator (&qt_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
204 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
|
205 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
206 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
207 qt_app.installTranslator (&qsci_tr); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
208 } |
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 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
211 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
212 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
|
213 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
214 // 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
|
215 // TERM is always set appropriately. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
216 |
21979
d04da18a407a
use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents:
21941
diff
changeset
|
217 #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
|
218 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
|
219 #else |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
220 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
|
221 #endif |
b5d58667d32d
new main program wrapper to handle giving up controlling tty
John W. Eaton <jwe@octave.org>
parents:
17748
diff
changeset
|
222 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
223 shortcut_manager::init_data (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
224 } |
18611
086093fbdc1a
first implementation of a shortcut manager (bug #41217)
Torsten <ttl@justmail.de>
parents:
18575
diff
changeset
|
225 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
226 // 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
|
227 qt_app.setLayoutDirection (Qt::LeftToRight); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
228 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
229 // 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
|
230 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
231 main_window w (0, this); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
232 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
233 if (start_gui) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
234 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
235 w.read_settings (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
236 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
237 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
|
238 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
239 // 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
|
240 // is shown. |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
241 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
242 w.connect_visibility_changed (); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
243 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
244 w.focus_command_window (); |
17930
ffdbb82a0c78
allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents:
17925
diff
changeset
|
245 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
246 gui_running (true); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
247 } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
248 else |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
249 qt_app.setQuitOnLastWindowClosed (false); |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
18618
diff
changeset
|
250 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
251 return qt_app.exec (); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22088
diff
changeset
|
252 } |
13501 | 253 } |