26#if defined (HAVE_CONFIG_H)
32#include <QApplication>
63# include <objc/runtime.h>
64# include <objc/message.h>
76static void disable_app_nap (
void)
78 Class process_info_class;
79 SEL process_info_selector;
80 SEL begin_activity_with_options_selector;
83 id osx_latencycritical_activity;
86 unsigned long long NSActivityUserInitiatedAllowingIdleSystemSleep = 0x00FFFFFFULL;
87 unsigned long long NSActivityLatencyCritical = 0xFF00000000ULL;
90 process_info_class =
reinterpret_cast<Class
> (objc_getClass (
"NSProcessInfo"));
91 if (process_info_class == nil)
94 process_info_selector = sel_getUid (
"processInfo");
95 if (class_getClassMethod (process_info_class, process_info_selector)
99 begin_activity_with_options_selector = sel_getUid (
"beginActivityWithOptions:reason:");
100 if (class_getInstanceMethod (process_info_class,
101 begin_activity_with_options_selector)
105 process_info =
reinterpret_cast<id (*) (
id,
SEL)
> (objc_msgSend)
106 (
reinterpret_cast<id> (process_info_class),
107 process_info_selector);
108 if (process_info == nil)
111 reason_string =
reinterpret_cast<id (*) (
id,
SEL)
> (objc_msgSend)
112 (
reinterpret_cast<id> (objc_getClass (
"NSString")),
113 sel_getUid (
"alloc"));
114 reason_string =
reinterpret_cast<id (*) (
id,
SEL,
const char *)
> (objc_msgSend)
115 (reason_string, sel_getUid (
"initWithUTF8String:"),
116 "App Nap causes pause() malfunction");
121 osx_latencycritical_activity =
122 reinterpret_cast<id (*) (
id,
SEL,
unsigned long long,
id)
> (objc_msgSend)
124 begin_activity_with_options_selector,
125 NSActivityUserInitiatedAllowingIdleSystemSleep
126 | NSActivityLatencyCritical,
146 return QApplication::notify (receiver, ev);
172 m_app_context (app_context),
173 m_argc (m_app_context.sys_argc ()),
174 m_argv (m_app_context.sys_argv ()),
176 m_resource_manager (),
177 m_shortcut_manager (*this),
178 m_qt_tr (new QTranslator ()),
179 m_gui_tr (new QTranslator ()),
180 m_qsci_tr (new QTranslator ()),
181 m_translators_installed (false),
184 m_main_thread (new
QThread ()),
186 m_interpreter_ready (false),
188 m_documentation_widget (),
189 m_file_browser_widget (),
191 m_workspace_widget (),
193 m_variable_editor_widget (),
194 m_main_window (nullptr)
196 std::string show_gui_msgs =
201 if (show_gui_msgs.empty ())
205#if ! defined (Q_OS_WIN32)
206 QTextCodec::setCodecForLocale (QTextCodec::codecForName (
"UTF-8"));
211 QCoreApplication::setApplicationName (
"GNU Octave");
216 qRegisterMetaType<octave_value_list> (
"octave_value_list");
219#if defined (Q_OS_MAC)
232 Qt::QueuedConnection);
426#if defined (Q_OS_MAC)
428 fprintf (stderr,
"\n");
449 QPointer<terminal_dock_widget>
496 QPointer<documentation_dock_widget>
523 QPointer<files_dock_widget>
541 QPointer<history_dock_widget>
576 QPointer<workspace_view>
602 [=] (
const QString& var_name) {
613 std::ostringstream buf;
619 QClipboard *clipboard = QApplication::clipboard ();
625 [=] (
const QString& old_name,
const QString& new_name) {
634 scope.
rename (old_name.toStdString (),
635 new_name.toStdString ());
650 [=] (
const QString& var_name) {
655 std::string
name = var_name.toStdString ();
677 QPointer<file_editor_interface>
693 QPointer<variable_editor>
798 if (! widget->isVisible ())
813 if (! widget->isVisible ())
825 if (! widget->isVisible ())
837 if (! widget->isVisible ())
849 if (! widget->isVisible ())
863 if (! widget->isVisible ())
923 interp.
eval (command.toStdString (), 0);
947 interp.
quit (0,
false,
false);
1019 QClipboard *clipboard = QApplication::clipboard ();
1029 clipboard->setImage (img);
1032 QFile::remove (file);
void interrupt_signal(void)
cmdline_options options(void) const
bool experimental_terminal_widget(void) const
Provides threadsafe access to octave.
bool edit_variable(const std::string &name, const octave_value &val)
OCTINTERP_API void set_workspace(void)
OCTINTERP_API void set_history(void)
octave_value varval(const std::string &name) const
void quit(int exit_status, bool force=false, bool confirm=true)
application * get_app_context(void)
octave_value_list eval(const std::string &try_code, int nargout)
tree_evaluator & get_evaluator(void)
symbol_scope get_current_scope(void) const
event_manager & get_event_manager(void)
void show_file_browser_window(void)
void show_release_notes(void)
void copy_image_to_clipboard(const QString &file, bool remove_file)
QPointer< workspace_view > m_workspace_widget
QPointer< community_news > community_news_widget(int serial=-1)
QPointer< community_news > m_community_news
QPointer< file_editor_interface > m_editor_widget
void show_community_news(int serial)
QPointer< variable_editor > variable_editor_widget(main_window *mw=nullptr)
interpreter_qobject * m_interpreter_qobj
void start_gui(bool gui_app)
void execute_command(const QString &command)
shortcut_manager m_shortcut_manager
qt_application & m_app_context
void interpreter_resume(void)
main_window * m_main_window
QPointer< workspace_view > workspace_widget(main_window *mw=nullptr)
QPointer< files_dock_widget > file_browser_widget(main_window *mw=nullptr)
bool m_translators_installed
void connect_interpreter_events(T *widget)
workspace_model * m_workspace_model
void show_command_history_window(void)
bool experimental_terminal_widget(void) const
QPointer< release_notes > m_release_notes
void start_main_thread(void)
void interpreter_ready(void)
resource_manager m_resource_manager
void interpreter_stop(void)
QPointer< terminal_dock_widget > m_terminal_widget
qt_interpreter_events * qt_link(void)
void handle_variable_editor_update(void)
bool gui_running(void) const
void show_variable_editor_window(const QString &name, const octave_value &value)
void show_workspace_window(void)
QPointer< documentation_dock_widget > m_documentation_widget
void show_terminal_window(void)
QPointer< history_dock_widget > m_history_widget
QPointer< history_dock_widget > history_widget(main_window *mw=nullptr)
QPointer< variable_editor > m_variable_editor_widget
virtual bool confirm_shutdown(void)
base_qobject(qt_application &app_context, bool gui_app=false)
QPointer< documentation_dock_widget > documentation_widget(main_window *mw=nullptr)
QPointer< terminal_dock_widget > terminal_widget(main_window *mw=nullptr)
octave_qapplication * m_qapplication
void interpreter_pause(void)
void show_documentation_window(const QString &file)
QPointer< file_editor_interface > editor_widget(main_window *mw=nullptr)
void interpreter_interrupt(void)
void config_translators(void)
QPointer< files_dock_widget > m_file_browser_widget
void interpreter_event(const fcn_callback &fcn)
QPointer< release_notes > release_notes_widget(void)
void append_history(const QString &hist_entry)
void set_history(const QStringList &hist)
void shutdown_finished(int)
void interpreter_event(const fcn_callback &fcn)
Represents the main window.
void show_release_notes_signal(void)
void handle_octave_ready()
bool confirm_shutdown(void)
void close_gui_signal(void)
void focus_window(const QString &win_name)
void show_community_news_signal(int serial)
This class is a simple wrapper around QApplication so that we can reimplement QApplication::notify.
virtual bool notify(QObject *receiver, QEvent *e) override
Reimplement QApplication::notify.
void interpreter_event(const fcn_callback &fcn)
This class inherits from the pure-virtual base class application and provides an implementation of th...
bool gui_running(void) const
void start_gui_signal(bool gui_app)
void update_prompt_signal(const QString &prompt)
void focus_window_signal(const QString &win_name)
void append_history_signal(const QString &hist_entry)
void register_documentation_signal(const QString &file)
void set_history_signal(const QStringList &hist)
void show_file_browser_signal(void)
void show_release_notes_signal(void)
void copy_image_to_clipboard_signal(const QString &file, bool remove_file)
void edit_variable_signal(const QString &name, const octave_value &val)
void close_gui_signal(void)
void clear_workspace_signal(void)
void show_workspace_signal(void)
void show_terminal_window_signal(void)
void directory_changed_signal(const QString &dir)
void refresh_variable_editor_signal(void)
void show_documentation_signal(const QString &file)
void clear_history_signal(void)
void unregister_documentation_signal(const QString &file)
void show_community_news_signal(int serial)
void set_workspace_signal(bool top_level, bool debug, const symbol_info_list &syminfo)
void interpreter_output_signal(const QString &msg)
void show_command_history_signal(void)
void config_translators(QTranslator *qt_tr, QTranslator *qsci_tr, QTranslator *gui_tr)
void reload_settings(void)
void rename(const std::string &old_name, const std::string &new_name)
static std::string getenv(const std::string &name)
void edit_variable(const QString &name, const octave_value &val)
void command_signal(const QString &cmd)
void clear_workspace(void)
void set_workspace(bool top_level, bool debug, const symbol_info_list &syminfo)
void rename_variable_signal(const QString &, const QString &)
Signal that user wants to rename a variable.
void handle_model_changed(void)
void edit_variable_signal(const QString &)
Signal that user wants to edit a variable.
void copy_variable_value_to_clipboard(const QString &)
Signal that user wnats to copy a variable value to the clipboard.
void print_raw(std::ostream &os, bool pr_as_read_syntax=false) const
bool is_undefined(void) const
static void delete_c_str_vec(const char *const *)
symbol_info_list get_symbol_info(void)
OCTAVE_NAMESPACE_BEGIN typedef std::function< void(void)> fcn_callback
std::function< void(interpreter &)> meth_callback
QString fromStdString(const std::string &s)
static void message_handler(QtMsgType, const QMessageLogContext &, const QString &)