26#if defined (HAVE_CONFIG_H)
30#if defined (HAVE_QSCINTILLA)
34#include <QApplication>
47#include <Qsci/qscicommandset.h>
78 this->setTabBar (bar);
80 setTabsClosable (
true);
81 setUsesScrollButtons (
true);
87 return qobject_cast<tab_bar *> (tabBar ());
90 std::list<file_editor_tab *>
93 std::list<file_editor_tab *> retval;
94 for (
int i = 0; i < count (); i++)
107 m_ced = QDir::currentPath ();
129 setAcceptDrops (
true);
130 setFocusPolicy (Qt::StrongFocus);
142 QDockWidget::focusInEvent (e);
150 QAction *open_action = shared_actions.at (
OPEN_ACTION);
154 m_fileMenu->insertAction (open_action, new_fcn_action);
155 m_fileMenu->insertAction (new_fcn_action, new_action);
157 m_tool_bar->insertAction (open_action, new_action);
189 if (sc_run == sc_cont)
277 real_visible = isVisible ();
279 real_visible = visible;
284 if (startup && ! isFloating ())
287 QWidget *parent = parentWidget ();
295 while ((i < tab_list.count ()) && (! in_tab))
297 QTabBar *tab = tab_list.at (i);
301 while ((j < tab->count ()) && (! in_tab))
304 if (tab->tabText (j) == windowTitle ())
308 int top = tab->currentIndex ();
309 if (! (top > -1 && tab->tabText (top) == windowTitle ()))
328 QStringList sessionFileNames
331 QStringList session_encodings
334 QStringList session_index
337 QStringList session_lines
343 bool do_encoding = (session_encodings.count () == sessionFileNames.count ());
344 bool do_index = (session_index.count () == sessionFileNames.count ());
345 bool do_lines = (session_lines.count () == sessionFileNames.count ());
347 for (
int n = 0; n < sessionFileNames.count (); ++n)
349 QFileInfo file = QFileInfo (sessionFileNames.at (n));
350 if (! file.exists ())
354 QString (), QString ()};
356 item.
line = session_lines.at (n).toInt ();
358 item.
index = session_index.at (n).toInt ();
360 item.
encoding = session_encodings.at (n);
365 std::sort (s_data.begin (), s_data.end ());
368 for (
int n = 0; n < s_data.count (); ++n)
404 QHash<QMenu *, QStringList>::const_iterator i =
m_hash_menu_text.constBegin ();
408 i.key ()->setTitle (i.value ().at (! enable));
439 QStringList fetFileNames;
440 QStringList fet_encodings;
441 QStringList fet_index;
442 QStringList fet_lines;
446 for (
auto editor_tab : editor_tab_lst)
448 QString file_name = editor_tab->file_name ();
452 if (! file_name.isEmpty ())
454 fetFileNames.append (file_name);
455 fet_encodings.append (editor_tab->encoding ());
458 fet_index.append (index.setNum (
m_tab_widget->indexOf (editor_tab)));
461 editor_tab->qsci_edit_area ()->getCursorPosition (&l, &c);
462 fet_lines.append (index.setNum (l + 1));
489 for (
auto fe_tab : fe_tab_lst)
495 Qt::UniqueConnection);
500 for (
auto fe_tab : fe_tab_lst)
507 if (fe_tab->check_file_modified (
false) == QMessageBox::Cancel)
513 for (
auto fet : fe_tab_lst)
547 bool vis = isVisible ();
550 for (
auto editor_tab : editor_tab_lst)
551 editor_tab->deleteLater ();
587 for (
int index =
m_tab_widget->count ()-1; index >= 0; index--)
600 for (
int index =
m_tab_widget->count ()-1; index >= 0; index--)
617 QGuiApplication::clipboard ()->setText (editor_tab->
file_name ());
626 action->data ().toStringList ().at (1));
638 QsciScintillaBase::SCI_REDO);
644 QsciScintillaBase::SCI_CUT);
753 QsciScintillaBase::SCI_DELWORDLEFT);
759 QsciScintillaBase::SCI_DELWORDRIGHT);
765 QsciScintillaBase::SCI_DELLINELEFT);
771 QsciScintillaBase::SCI_DELLINERIGHT);
777 QsciScintillaBase::SCI_LINEDELETE);
783 QsciScintillaBase::SCI_LINECOPY);
789 QsciScintillaBase::SCI_LINECUT);
795 QsciScintillaBase::SCI_SELECTIONDUPLICATE);
801 QsciScintillaBase::SCI_LINETRANSPOSE);
823 QsciScintillaBase::SCI_UPPERCASE);
829 QsciScintillaBase::SCI_LOWERCASE);
850 QsciScintilla::EolWindows);
856 QsciScintilla::EolUnix);
862 QsciScintilla::EolMac);
905 int xp =
x () + frameGeometry ().width ();
906 int yp = y () + frameGeometry ().height ();
912 QWidget *parent = parentWidget ();
916 xp = xp + parent->x ();
917 yp = yp + parent->y ();
958 QObject *fileEditorTab = sender ();
992 QObject *fileEditorTab = sender ();
1003 fileEditorTab->deleteLater ();
1022 bool is_octave_file,
1049 const QString& encoding)
1052 while ((index =
m_mru_files.indexOf (file_name)) >= 0)
1065 bool remove_on_success)
1081 =
new QMessageBox (QMessageBox::Critical, tr (
"Octave Editor"),
1082 tr (
"File not saved! A file with the selected name\n%1\n"
1083 "is already open in the editor").
1085 QMessageBox::Ok,
nullptr);
1087 msgBox->setWindowModality (Qt::NonModal);
1088 msgBox->setAttribute (Qt::WA_DeleteOnClose);
1094 QObject *saveFileObject = sender ();
1095 QWidget *saveFileWidget =
nullptr;
1105 if (! saveFileWidget)
1109 =
new QMessageBox (QMessageBox::Critical, tr (
"Octave Editor"),
1110 tr (
"The associated file editor tab has disappeared."),
1111 QMessageBox::Ok,
nullptr);
1113 msgBox->setWindowModality (Qt::NonModal);
1114 msgBox->setAttribute (Qt::WA_DeleteOnClose);
1121 emit
fetab_save_file (saveFileWidget, saveFileName, remove_on_success);
1133 if (! file.isEmpty ())
1151 const QString& file,
1153 const QString& cond)
1166 const QString& new_name)
1173 QString old_name_clean = old_name.trimmed ();
1174 int s = old_name_clean.size ();
1176 if (s > 1 && old_name_clean.at (0) == QChar (
'\"')
1177 && old_name_clean.at (s - 1) == QChar (
'\"'))
1178 old_name_clean = old_name_clean.mid (1, s - 2);
1180 QStringList old_names = old_name_clean.split (
"\" \"");
1183 QFileInfo newf (new_name);
1184 bool new_is_dir = newf.isDir ();
1187 for (
int i = 0; i < old_names.count (); i++)
1190 QFileInfo old (old_names.at (i));
1210 f_data.
line = l + 1;
1222 std::string ndir = new_name.toStdString ();
1223 std::string ofile = old.fileName ().toStdString ();
1253 false,
false,
true,
"",
1261 false,
false,
true,
"",
1276 size_idx = (size_idx > 0) - (size_idx < 0) + 1;
1278 QStyle *st = style ();
1280 m_tool_bar->setIconSize (QSize (icon_size, icon_size));
1283 QTabWidget::TabPosition pos
1294 int rotation = rotated;
1295 if (pos == QTabWidget::West)
1296 rotation = -rotation;
1302 int height = 1.5*QFontMetrics (
m_tab_widget->font ()).height ();
1311 width = chars * QFontMetrics (
m_tab_widget->font ()).averageCharWidth ();
1314 QString width_str (
"width");
1315 QString height_str (
"height");
1316 if ((pos == QTabWidget::West) || (pos == QTabWidget::East))
1318 width_str = QString (
"height");
1319 height_str = QString (
"width");
1323 = QString (
"QTabBar::tab {max-" + height_str +
": %1px;\n"
1324 "max-" + width_str +
": %2px; }")
1325 .arg (height).arg (width);
1327#if defined (Q_OS_MAC)
1332 QString close_button_css_mac (
1333 "QTabBar::close-button"
1334 " { width: 6px; image: url(:/actions/icons/widget-close.png);"
1335 " subcontrol-position: button; }\n"
1336 "QTabBar::close-button:hover"
1337 " { background-color: #cccccc; }");
1339 style_sheet = style_sheet + close_button_css_mac;
1513 QsciScintillaBase::SCI_COPY);
1520 QsciScintillaBase::SCI_PASTE);
1527 QsciScintillaBase::SCI_SELECTALL);
1534 QsciScintillaBase::SCI_UNDO);
1540 const QString& encoding,
1541 int line,
bool debug_pointer,
1542 bool breakpoint_marker,
bool insert,
1543 const QString& cond,
int index)
1551 if (debug_pointer || breakpoint_marker)
1561 if (openFileName.isEmpty ())
1584 if (breakpoint_marker)
1588 if (show_dbg_file && ! ((breakpoint_marker || debug_pointer)
1597 if (! show_dbg_file && (breakpoint_marker || debug_pointer))
1600 if (breakpoint_marker && ! insert)
1605 bool reusing =
false;
1609 fileEditorTab = tab;
1611 fileEditorTab =
nullptr;
1617 if (! fileEditorTab)
1621 QString result = fileEditorTab->
load_file (openFileName);
1630 QFileInfo
file_info = QFileInfo (openFileName);
1642 if (breakpoint_marker)
1649 delete fileEditorTab;
1650 fileEditorTab =
nullptr;
1652 if (QFile::exists (openFileName))
1658 tr (
"Octave Editor"),
1659 tr (
"Could not open file\n%1\nfor read: %2.").
1660 arg (openFileName).arg (result),
1661 QMessageBox::Ok,
this);
1663 msgBox->setWindowModality (Qt::NonModal);
1664 msgBox->setAttribute (Qt::WA_DeleteOnClose);
1670 bool create_file =
true;
1676 tr (
"Octave Editor"),
1677 tr (
"File\n%1\ndoes not exist. "
1678 "Do you want to create it?").arg (openFileName),
1679 QMessageBox::NoButton,
nullptr);
1681 msgBox->addButton (tr (
"Create"), QMessageBox::YesRole);
1682 msgBox->addButton (tr (
"Cancel"), QMessageBox::RejectRole);
1683 msgBox->setDefaultButton (create_button);
1686 QAbstractButton *clicked_button = msgBox->clickedButton ();
1687 if (clicked_button != create_button)
1688 create_file =
false;
1696 QFile file (openFileName);
1697 if (! file.open (QIODevice::WriteOnly))
1701 tr (
"Octave Editor"),
1702 tr (
"Could not open file\n%1\nfor write: %2.").
1703 arg (openFileName).arg (file.errorString ()),
1704 QMessageBox::Ok,
this);
1706 msgBox->setWindowModality (Qt::NonModal);
1707 msgBox->setAttribute (Qt::WA_DeleteOnClose);
1802 for (
auto *a : all_actions)
1803 menu->removeAction (a);
1809 menu->addSeparator ();
1811 menu->addSeparator ();
1816 menu->addSeparator ();
1820 menu->addSeparator ();
1860 if (e->mimeData ()->hasUrls ())
1862 e->acceptProposedAction ();
1868 if (e->mimeData ()->hasUrls ())
1870 for (
const auto& url : e->mimeData ()->urls ())
1886 static_cast<QDockWidget *
> (
w->get_dock_widget_list ().at (0));
1888 for (
int i = 0; i < w_list.count (); i++)
1890 if (w_list.at (i) == console)
1954 tr (
"&Edit Function"),
1965 tr (
"Save File &As..."),
1980 tr (
"Close Other Files"),
2007 tr (
"&Find and Replace..."), SLOT (
request_find (
bool)));
2109 tr (
"Convert Line Endings to &Windows (CRLF)"),
2118 tr (
"Convert Line Endings to Legacy &Mac (CR)"),
2159 tr (
"&Preferences..."),
2164 tr (
"&Styles Preferences..."),
2215 view_menu->addSeparator ();
2222 =
add_action (view_menu, rmgr.
icon (
"zoom-out"), tr (
"Zoom &Out"),
2228 view_menu->addSeparator ();
2231 =
add_action (view_menu, tr (
"&Sort Tabs Alphabetically"),
2232 SLOT (sort_tabs_alph (
void)),
2243 tr (
"Toggle &Breakpoint"),
2248 tr (
"&Next Breakpoint"),
2253 tr (
"Pre&vious Breakpoint"),
2258 tr (
"&Remove All Breakpoints"),
2271 rmgr.
icon (
"system-run"),
2272 tr (
"Save File and Run / Continue"),
2277 tr (
"Run &Selection"),
2287 tr (
"&Help on Keyword"),
2292 tr (
"&Documentation on Keyword"),
2298 =
add_action (
nullptr,
"", SLOT (switch_left_tab (
void)),
2302 =
add_action (
nullptr,
"", SLOT (switch_right_tab (
void)),
2306 =
add_action (
nullptr,
"", SLOT (move_tab_left (
void)),
2310 =
add_action (
nullptr,
"", SLOT (move_tab_right (
void)),
2317 popdown_button->setToolTip (tr (
"Recent Files"));
2319 popdown_button->setPopupMode (QToolButton::InstantPopup);
2320 popdown_button->setArrowType (Qt::DownArrow);
2321 popdown_button->setToolButtonStyle (Qt::ToolButtonTextOnly);
2347 QVBoxLayout *vbox_layout =
new QVBoxLayout ();
2351 vbox_layout->setMargin (0);
2352 vbox_layout->setSpacing (0);
2353 editor_widget->setLayout (vbox_layout);
2354 setWidget (editor_widget);
2360 ctx_men->addSeparator ();
2364 ctx_men->addSeparator ();
2366 add_action (ctx_men, tr (
"Copy Full File &Path"),
2375 connect (
m_tab_widget, &file_editor_tab_widget::tabCloseRequested,
2378 connect (
m_tab_widget, &file_editor_tab_widget::currentChanged,
2382 setWindowIcon (QIcon (
":/actions/icons/logo.png"));
2402 qsci->getCursorPosition (&line, &col);
2403 int l1 = qsci->lineLength (line);
2406 qsci->SendScintilla (QsciScintillaBase::SCI_AUTOCCOMPLETE);
2409 if (qsci->text (line).length () - l1)
2434 connect (
f->qsci_edit_area (),
2435 SIGNAL (SCN_AUTOCCOMPLETED (
const char *,
int,
int,
int)),
2438 connect (
f->qsci_edit_area (), SIGNAL (SCN_AUTOCCANCELLED (
void)),
2468 this, [=] (
const QString& fname,
const QString& encoding) {
request_open_file (fname, encoding); });
2637 for (
int i = 0; i < num_files; ++i)
2639 QString text = QString (
"&%1 %2").
2643 QStringList action_data;
2682 if (line < 0 && ! file_name.isEmpty ())
2697 bool old =
settings->value (preference).toBool ();
2704 const QString& new_name)
2706 QDir old_dir (old_name);
2711 for (
auto editor_tab : editor_tab_lst)
2713 QString file_name = editor_tab->file_name ();
2715 if (file_name.isEmpty ())
2719 QString rel_path_to_file = old_dir.relativeFilePath (file_name);
2720 QString abs_path_to_file = old_dir.absoluteFilePath (file_name);
2730 if ((rel_path_to_file != abs_path_to_file)
2731 && (rel_path_to_file.left (3) != QString (
"../")))
2741 editor_tab->qsci_edit_area ()->getCursorPosition (&l, &c);
2742 f_data.
line = l + 1;
2745 editor_tab->file_has_changed (QString (),
true);
2754 if (! new_name.isEmpty ())
2756 QDir new_dir (new_name);
2757 QString append_to_new_dir;
2758 if (new_dir.exists ())
2765 = old_dir.dirName () +
"/" + rel_path_to_file;
2768 append_to_new_dir = rel_path_to_file;
2771 = new_dir.absoluteFilePath (append_to_new_dir);
2776 f_data.
encoding = editor_tab->encoding ();
2787 if (foc_w && foc_w->inherits (
"octave::octave_qscintilla"))
2795 std::string std_file = file.toStdString ();
2799 for (
auto fe_tab : fe_tab_lst)
2801 QString tab_file = fe_tab->file_name ();
2809 if (
same_file (std_file, tab_file.toStdString ()) || file == tab_file)
2820 return add_action (menu, QIcon (), text, member, receiver);
2824 const QString& text,
const char *member,
2830 if (receiver !=
nullptr)
2834 a = menu->addAction (icon, text, r, member);
2837 a =
new QAction (
this);
2838 connect (a, SIGNAL (triggered ()), r, member);
2842 a->setShortcutContext (Qt::WidgetWithChildrenShortcut);
2851 QString base_name =
name;
2853 base_name.replace (
"&&",
"___octave_amp_replacement___");
2855 base_name.remove (
"&");
2857 base_name.replace (
"___octave_amp_replacement___",
"&&");
tree_evaluator & get_evaluator(void)
Base class for Octave interfaces that use Qt.
shortcut_manager & get_shortcut_manager(void)
resource_manager & get_resource_manager(void)
void interpreter_event(const fcn_callback &fcn)
void set_encoding(const QString &new_encoding)
void goto_line(const QWidget *ID, int line=-1)
void toggle_breakpoint(const QWidget *ID)
void zoom_out(const QWidget *ID)
void delete_debugger_pointer(const QWidget *ID, int line=-1)
void run_file(const QWidget *ID, bool step_into=false)
void save_file_as(const QWidget *ID)
void tab_ready_to_close(void)
void set_current_directory(const QString &dir)
void update_breakpoints()
void zoom_normal(const QWidget *ID)
void set_focus_editor_signal(QWidget *)
void editor_check_conflict_save(const QString &saveFileName, bool remove_on_success)
void interpreter_event(const fcn_callback &fcn)
QString load_file(const QString &fileName)
void next_bookmark(const QWidget *ID)
void previous_breakpoint(const QWidget *ID)
void update_lexer_settings(bool update_apis_only=false)
void convert_eol(const QWidget *ID, QsciScintilla::EolMode)
void save_file(const QWidget *ID)
void toggle_bookmark(const QWidget *ID)
octave_qscintilla * qsci_edit_area(void)
void set_focus(const QWidget *ID)
void unindent_selected_text(const QWidget *ID)
void update_window_title(bool modified)
void do_breakpoint_marker(bool insert, const QWidget *ID, int line=-1, const QString &cond="")
void insert_debugger_pointer(const QWidget *ID, int line=-1)
void move_match_brace(const QWidget *ID, bool select)
void next_breakpoint(const QWidget *ID)
void edit_mfile_request(const QString &, const QString &, const QString &, int)
void previous_bookmark(const QWidget *ID)
void editor_state_changed(bool copy_available, bool is_octave_file, bool is_modified)
void print_file(const QWidget *ID)
void run_file_signal(const QFileInfo &info)
bool conditional_close(void)
void indent_selected_text(const QWidget *ID)
void file_name_changed(const QString &fileName, const QString &toolTip, bool modified)
void smart_indent_line_or_selected_text(const QWidget *ID)
void context_edit(const QWidget *ID)
void uncomment_selected_text(const QWidget *ID)
void tab_remove_request(void)
void context_help(const QWidget *ID, bool)
void remove_bookmark(const QWidget *ID)
void recover_from_exit(void)
void remove_all_breakpoints(const QWidget *ID)
void debug_quit_signal(void)
void context_run(const QWidget *ID)
void scintilla_command(const QWidget *, unsigned int)
void comment_selected_text(const QWidget *ID, bool input_str)
void change_editor_state(const QWidget *ID)
void edit_area_changed(octave_qscintilla *edit_area)
void zoom_in(const QWidget *ID)
void file_has_changed(const QString &path, bool do_close=false)
QString encoding(void) const
void mru_add_file(const QString &file_name, const QString &encoding)
void request_open_file(const QString &, const QString &=QString())
QString file_name(void) const
void new_file(const QString &commands=QString())
void show_auto_completion(const QWidget *ID)
QAction * m_delete_start_word_action
void request_find_previous(bool)
QAction * m_move_tab_left_action
void request_close_other_files(bool)
void fetab_next_bookmark(const QWidget *ID)
void focus_console_after_command_signal(void)
QAction * m_upper_case_action
QAction * m_previous_breakpoint_action
void empty_script(bool startup, bool visible)
bool m_copy_action_enabled
QAction * m_conv_eol_windows_action
QAction * m_sel_to_matching_brace
QAction * m_show_indguide_action
void handle_update_breakpoint_marker_request(bool insert, const QString &file, int line, const QString &cond)
void fetab_zoom_out(const QWidget *ID)
void request_find_next(bool)
void handle_tab_close_request(int index)
QAction * m_switch_right_tab_action
void fetab_previous_bookmark(const QWidget *ID)
void request_styles_preferences(bool)
QAction * m_transpose_line_action
void request_step_into_file()
QAction * m_indent_selection_action
QAction * m_completion_action
void request_mru_open_file(QAction *action)
void fetab_zoom_in(const QWidget *ID)
QAction * m_close_others_action
QAction * m_smart_indent_line_or_selection_action
QPointer< find_dialog > m_find_dialog
void request_open_file(const QString &fileName, const QString &encoding=QString(), int line=-1, bool debug_pointer=false, bool breakpoint_marker=false, bool insert=true, const QString &cond="", int index=-1)
QAction * m_lower_case_action
QAction * m_conv_eol_mac_action
file_editor(QWidget *p, base_qobject &oct_qobj)
void fetab_remove_bookmark(const QWidget *ID)
void request_close_file(bool)
void request_delete_end_line(bool)
void handle_file_remove(const QString &, const QString &)
void request_move_match_brace(bool)
QAction * m_context_doc_action
QList< session_data > m_tmp_closed_files
void toggle_preference(const gui_pref &preference)
void fetab_set_directory(const QString &dir)
QAction * m_preferences_action
file_editor_tab_widget * m_tab_widget
void request_next_breakpoint(bool)
void fetab_context_help(const QWidget *ID, bool)
QAction * m_remove_all_breakpoints_action
void enable_menu_shortcuts(bool)
void edit_area_changed(octave_qscintilla *edit_area)
void edit_mfile_request(const QString &, const QString &, const QString &, int)
void exit_debug_mode_signal(void)
void request_conv_eol_unix(bool)
QAction * m_move_to_matching_brace
QAction * m_unindent_selection_action
void request_open_file_external(const QString &file_name, int line)
QAction * m_selectall_action
void fetab_context_run(const QWidget *ID)
QAction * m_cut_line_action
void request_upper_case(bool)
bool call_custom_editor(const QString &file_name=QString(), int line=-1)
QAction * m_next_breakpoint_action
void handle_exit_debug_mode(void)
QAction * m_show_statusbar_action
QAction * m_edit_function_action
void fetab_delete_debugger_pointer(const QWidget *ID, int line=-1)
void show_hscrollbar(bool)
void request_next_bookmark(bool)
void insert_global_actions(QList< QAction * >)
void fetab_previous_breakpoint(const QWidget *ID)
void closeEvent(QCloseEvent *event)
void request_delete_start_line(bool)
void handle_delete_debugger_pointer_request(const QString &file, int line)
QAction * m_run_selection_action
void fetab_unindent_selected_text(const QWidget *ID)
bool is_editor_console_tabbed(void)
void request_new_file(const QString &commands)
void copy_full_file_path(bool)
void handle_file_renamed(bool load_new=true)
QMenu * add_menu(QMenuBar *p, QString text)
void request_remove_breakpoint(bool)
void set_focus(QWidget *fet)
QAction * m_delete_end_line_action
QAction * m_uncomment_selection_action
QAction * m_find_files_action
QAction * m_duplicate_selection_action
void request_unindent_selected_text(bool)
QAction * m_delete_end_word_action
void execute_command_in_terminal_signal(const QString &)
void request_lower_case(bool)
void request_context_run(bool)
void request_save_file_as(bool)
bool editor_tab_has_focus(void)
void fetab_context_edit(const QWidget *ID)
QAction * m_remove_bookmark_action
QAction * m_copy_line_action
void show_eol_chars(bool)
void handle_insert_debugger_pointer_request(const QString &file, int line)
void active_tab_changed(int index)
void fetab_scintilla_command(const QWidget *ID, unsigned int sci_msg)
QAction * m_find_next_action
QAction * m_conv_eol_unix_action
void edit_status_update(bool, bool)
void update_octave_directory(const QString &dir)
void dropEvent(QDropEvent *event)
void enter_debug_mode_signal(void)
void fetab_do_breakpoint_marker(bool insert, const QWidget *ID, int line=-1, const QString &="")
QAction * m_show_longline_action
void show_long_line(bool)
QAction * m_next_bookmark_action
void request_previous_breakpoint(bool)
void editor_tabs_changed_signal(bool, bool)
QAction * add_action(QMenu *menu, const QString &text, const char *member, QWidget *receiver=nullptr)
bool m_current_tab_modified
void request_toggle_breakpoint(bool)
QAction * m_comment_selection_action
QAction * m_popdown_mru_action
void update_gui_lexer_signal(bool)
void request_delete_end_word(bool)
QAction * m_previous_bookmark_action
void request_conv_eol_windows(bool)
QAction * m_move_tab_right_action
void request_dbcont_signal(void)
void fetab_move_match_brace(const QWidget *ID, bool select)
void request_settings_dialog(const QString &)
void request_conv_eol_mac(bool)
void request_cut_line(bool)
void fetab_smart_indent_line_or_selected_text(const QWidget *ID)
void handle_tab_ready_to_close(void)
void request_save_file(bool)
void request_comment_selected_text(bool)
void fetab_toggle_bookmark(const QWidget *ID)
void run_file_signal(const QFileInfo &)
QAction * m_mru_file_actions[MaxMRUFiles]
void fetab_insert_debugger_pointer(const QWidget *ID, int line=-1)
void create_context_menu(QMenu *)
void add_file_editor_tab(file_editor_tab *f, const QString &fn, int index=-1)
void dragEnterEvent(QDragEnterEvent *event)
void fetab_save_file(const QWidget *ID, const QString &fileName, bool remove_on_success)
QAction * m_switch_left_tab_action
void request_delete_start_word(bool)
void request_run_file(bool)
void debug_quit_signal(void)
QStringList m_mru_files_encodings
void request_close_all_files(bool)
void show_indent_guides(bool)
void request_context_doc(bool)
QAction * m_delete_start_line_action
void handle_mru_add_file(const QString &file_name, const QString &encoding)
void fetab_uncomment_selected_text(const QWidget *ID)
void request_comment_var_selected_text(bool)
void fetab_goto_line(const QWidget *ID, int line=-1)
QAction * m_goto_line_action
void request_completion(bool)
void handle_dir_remove(const QString &old_name, const QString &new_name)
void request_delete_line(bool)
void show_statusbar(bool)
void request_toggle_bookmark(bool)
QAction * m_save_as_action
void file_loaded_signal(void)
void check_conflict_save(const QString &fileName, bool remove_on_success)
void fetab_zoom_normal(const QWidget *ID)
void fetab_settings_changed(const gui_settings *settings)
bool m_undo_action_enabled
void mru_menu_update(void)
void restore_session(gui_settings *settings)
void handle_autoc_cancelled(void)
QAction * m_show_whitespace_action
void handle_edit_file_request(const QString &file)
QAction * m_show_hscrollbar_action
file_editor_tab * make_file_editor_tab(const QString &directory="")
QHash< QMenu *, QStringList > m_hash_menu_text
void request_context_edit(bool)
QAction * m_show_toolbar_action
QAction * m_context_help_action
void fetab_save_file_as(const QWidget *ID)
void focusInEvent(QFocusEvent *e)
void notice_settings(const gui_settings *settings)
void fetab_print_file(const QWidget *ID)
void pasteClipboard(void)
void request_duplicate_selection(bool)
QAction * m_close_all_action
void show_white_space(bool)
void fetab_convert_eol(const QWidget *ID, QsciScintilla::EolMode eol_mode)
QAction * m_zoom_in_action
void request_sel_match_brace(bool)
QAction * m_zoom_out_action
void handle_visibility(bool visible)
void request_smart_indent_line_or_selected_text(void)
QAction * m_zoom_normal_action
void fetab_next_breakpoint(const QWidget *ID)
void request_transpose_line(bool)
QAction * m_find_previous_action
void fetab_run_file(const QWidget *ID, bool step_into=false)
QAction * m_toggle_breakpoint_action
QAction * m_toggle_bookmark_action
void request_context_help(bool)
void handle_editor_state_changed(bool enableCopy, bool is_octave_file, bool is_modified)
void request_copy_line(bool)
void request_remove_bookmark(bool)
file_editor_tab * reset_focus(void)
void show_line_numbers(bool)
QAction * m_delete_line_action
void request_preferences(bool)
QAction * m_show_eol_action
QAction * m_show_linenum_action
void fetab_completion(const QWidget *)
void fetab_change_request(const QWidget *ID)
void fetab_recover_from_exit(void)
void fetab_remove_all_breakpoints(const QWidget *ID)
void fetab_comment_selected_text(const QWidget *ID, bool)
QAction * m_sort_tabs_action
void request_indent_selected_text(bool)
void fetab_set_focus(const QWidget *ID)
void handle_file_name_changed(const QString &fileName, const QString &toolTip, bool modified)
QAction * m_comment_var_selection_action
void request_print_file(bool)
file_editor_tab * find_tab_widget(const QString &openFileName)
QAction * m_styles_preferences_action
void request_previous_bookmark(bool)
void request_uncomment_selected_text(bool)
void handle_tab_remove_request(void)
void handle_enter_debug_mode(void)
QMenu * m_view_editor_menu
void fetab_toggle_breakpoint(const QWidget *ID)
void toplevel_change(bool toplevel)
void fetab_indent_selected_text(const QWidget *ID)
void request_goto_line(bool)
Represents the main window.
void focus_console_after_command_signal(void)
void handle_exit_debug_mode(void)
void status_update(bool, bool)
void handle_enter_debug_mode(void)
void create_context_menu_signal(QMenu *)
void execute_command_in_terminal_signal(const QString &)
gui_settings * get_settings(void) const
QIcon icon(const QString &icon_name, bool fallback=true)
void set_shortcut(QAction *action, const sc_pref &scpref, bool enable=true)
static std::string make_absolute(const std::string &s, const std::string &dot_path=get_current_directory())
void close_current_tab_signal(bool)
void set_rotated(int rotated)
QMenu * get_context_menu(void)
bool in_debug_repl(void) const
const gui_pref ed_tabs_rotated("editor/tabs_rotated", QVariant(false))
const gui_pref ed_show_hscroll_bar("editor/show_hscroll_bar", QVariant(true))
const gui_pref ed_show_toolbar("editor/show_toolbar", QVariant(true))
const gui_pref ed_show_white_space("editor/show_white_space", QVariant(false))
const gui_pref ed_create_new_file("editor/create_new_file", QVariant(false))
const gui_pref ed_mru_file_encodings("editor/mru_file_encodings", QVariant())
const gui_pref ed_session_names("editor/savedSessionTabs", QVariant(QStringList()))
const gui_pref ed_tabs_max_width("editor/tabs_max_width", QVariant(0))
const gui_pref ed_long_line_marker("editor/long_line_marker", QVariant(true))
const gui_pref ed_tab_position("editor/tab_position", QVariant(QTabWidget::North))
const gui_pref ed_show_edit_status_bar("editor/show_edit_status_bar", QVariant(true))
const gui_pref ed_restore_session("editor/restoreSession", QVariant(true))
const gui_pref ed_mru_file_list("editor/mru_file_list", QVariant())
const gui_pref ed_show_dbg_file("editor/show_dbg_file", QVariant(true))
const gui_pref ed_session_ind("editor/saved_session_tab_index", QVariant(QStringList()))
const gui_pref ed_show_line_numbers("editor/showLineNumbers", QVariant(true))
const gui_pref ed_show_eol_chars("editor/show_eol_chars", QVariant(false))
const gui_pref ed_session_lines("editor/saved_session_lines", QVariant(QStringList()))
const gui_pref ed_show_indent_guides("editor/show_indent_guides", QVariant(false))
const gui_pref ed_hiding_closes_files("editor/hiding_closes_files", QVariant(false))
const gui_pref ed_session_enc("editor/saved_session_encodings", QVariant(QStringList()))
const QStyle::PixelMetric global_icon_sizes[3]
const gui_pref global_use_custom_editor("useCustomFileEditor", QVariant(false))
const gui_pref global_icon_size("toolbar_icon_size", QVariant(0))
const sc_pref sc_edit_view_show_long_line(sc_edit_view+":show_long_line", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_close(sc_edit_file_cl, QKeySequence::Close)
const sc_pref sc_edit_edit_completion_list(sc_edit_edit+":completion_list", CTRL+Qt::Key_Space)
const sc_pref sc_edit_debug_next_breakpoint(sc_edit_debug+":next_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_edit_debug_previous_breakpoint(sc_edit_debug+":previous_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_delete_line(sc_edit_edit+":delete_line", CTRL_SHIFT+Qt::Key_L)
const sc_pref sc_edit_edit_move_to_brace(sc_edit_edit+":move_to_brace", CTRL+Qt::Key_M)
const sc_pref sc_edit_edit_toggle_bookmark(sc_edit_edit+":toggle_bookmark", PRE+Qt::Key_F7)
const sc_pref sc_edit_edit_delete_start_line(sc_edit_edit+":delete_start_line", CTRL_SHIFT+Qt::Key_Backspace)
const sc_pref sc_edit_edit_uncomment_selection(sc_edit_edit+":uncomment_selection", CTRL_SHIFT+Qt::Key_R)
const sc_pref sc_edit_edit_cut_line(sc_edit_edit+":cut_line", CTRL_SHIFT+Qt::Key_X)
const sc_pref sc_edit_view_show_hscrollbar(sc_edit_view+":show_hscrollbar", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_remove_bookmark(sc_edit_edit+":remove_bookmark", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_upper_case(sc_edit_edit+":upper_case", CTRL+Qt::Key_U)
const sc_pref sc_edit_file_save(sc_edit_file+":save", QKeySequence::Save)
const sc_pref sc_edit_edit_styles_preferences(sc_edit_edit+":styles_preferences", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_print(sc_edit_file+":print", QKeySequence::Print)
const sc_pref sc_edit_edit_goto_line(sc_edit_edit+":goto_line", CTRL+Qt::Key_L)
const sc_pref sc_edit_edit_smart_indent_line_or_selection(sc_edit_edit+":smart_indent_line_or_selection", QKeySequence::UnknownKey)
const sc_pref sc_main_debug_continue(sc_main_debug+":continue", PRE+Qt::Key_F5)
const sc_pref sc_edit_view_show_statusbar(sc_edit_view+":show_statusbar", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_show_eol_chars(sc_edit_view+":show_eol_chars", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_edit_function(sc_edit_file+":edit_function", CTRL+Qt::Key_E)
const sc_pref sc_edit_edit_comment_selection(sc_edit_edit+":comment_selection", CTRL+Qt::Key_R)
const sc_pref sc_edit_edit_comment_var_selection(sc_edit_edit+":comment_var_selection", CTRL_ALT+Qt::Key_R)
const sc_pref sc_edit_run_run_file(sc_edit_run+":run_file", PRE+Qt::Key_F5)
const sc_pref sc_edit_file_save_as(sc_edit_file+":save_as", QKeySequence::SaveAs)
const sc_pref sc_edit_view_zoom_normal(sc_edit_view_zoom+"_normal", CTRL+Qt::Key_Period)
const sc_pref sc_edit_edit_find_replace(sc_edit_edit_find+"_replace", QKeySequence::Find)
const sc_pref sc_edit_view_show_ind_guides(sc_edit_view+":show_ind_guides", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_close_other(sc_edit_file_cl+"_other", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_copy_line(sc_edit_edit+":copy_line", CTRL_SHIFT+Qt::Key_C)
const sc_pref sc_edit_edit_transpose_line(sc_edit_edit+":transpose_line", CTRL+Qt::Key_T)
const sc_pref sc_edit_edit_find_next(sc_edit_edit_find+"_next", QKeySequence::FindNext)
const sc_pref sc_edit_help_help_keyword(sc_edit_help+":help_keyword", QKeySequence::HelpContents)
const sc_pref sc_edit_edit_duplicate_selection(sc_edit_edit+":duplicate_selection", CTRL+Qt::Key_D)
const sc_pref sc_edit_view_show_toolbar(sc_edit_view+":show_toolbar", QKeySequence::UnknownKey)
const sc_pref sc_edit_help_doc_keyword(sc_edit_help+":doc_keyword", Qt::SHIFT+Qt::Key_F1)
const sc_pref sc_edit_edit_delete_end_line(sc_edit_edit+":delete_end_line", CTRL_SHIFT+Qt::Key_Delete)
const sc_pref sc_edit_tabs_move_tab_right(sc_edit_tabs+":move_tab_right", Qt::AltModifier+Qt::Key_PageDown)
const sc_pref sc_edit_edit_cut(sc_edit_edit+":cut", QKeySequence::Cut)
const sc_pref sc_edit_debug_remove_breakpoints(sc_edit_debug+":remove_breakpoints", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_unindent_selection(sc_edit_edit+":unindent_selection", CTRL_SHIFT+Qt::Key_Tab)
const sc_pref sc_edit_edit_next_bookmark(sc_edit_edit+":next_bookmark", PRE+Qt::Key_F2)
const sc_pref sc_edit_run_run_selection(sc_edit_run+":run_selection", PRE+Qt::Key_F9)
const sc_pref sc_edit_edit_find_previous(sc_edit_edit_find+"_previous", QKeySequence::FindPrevious)
const sc_pref sc_edit_view_show_white_spaces(sc_edit_view+":show_white_spaces", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_close_all(sc_edit_file_cl+"_all", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_select_to_brace(sc_edit_edit+":select_to_brace", CTRL_SHIFT+Qt::Key_M)
const sc_pref sc_edit_debug_toggle_breakpoint(sc_edit_debug+":toggle_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_lower_case(sc_edit_edit+":lower_case", CTRL_ALT+Qt::Key_U)
const sc_pref sc_edit_edit_indent_selection(sc_edit_edit+":indent_selection", CTRL+Qt::Key_Tab)
const sc_pref sc_edit_view_zoom_in(sc_edit_view_zoom+"_in", QKeySequence::ZoomIn)
const sc_pref sc_edit_tabs_move_tab_left(sc_edit_tabs+":move_tab_left", Qt::AltModifier+Qt::Key_PageUp)
const sc_pref sc_edit_edit_delete_end_word(sc_edit_edit+":delete_end_word", QKeySequence::DeleteEndOfWord)
const sc_pref sc_edit_edit_preferences(sc_edit_edit+":preferences", QKeySequence::UnknownKey)
const sc_pref sc_edit_tabs_switch_right_tab(sc_edit_tabs+":switch_right_tab", CTRL+Qt::Key_PageDown)
const sc_pref sc_edit_edit_redo(sc_edit_edit+":redo", QKeySequence::Redo)
const sc_pref sc_edit_edit_conv_eol_unix(sc_edit_edit+":conv_eol_unix", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_sort_tabs(sc_edit_view+":sort_tabs", QKeySequence::UnknownKey)
const sc_pref sc_edit_tabs_switch_left_tab(sc_edit_tabs+":switch_left_tab", CTRL+Qt::Key_PageUp)
const sc_pref sc_edit_view_show_line_numbers(sc_edit_view+":show_line_numbers", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_zoom_out(sc_edit_view_zoom+"_out", QKeySequence::ZoomOut)
const sc_pref sc_edit_edit_conv_eol_mac(sc_edit_edit+":conv_eol_mac", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_conv_eol_winows(sc_edit_edit+":conv_eol_winows", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_previous_bookmark(sc_edit_edit+":previous_bookmark", PRE+Qt::SHIFT+Qt::Key_F2)
const sc_pref sc_edit_edit_delete_start_word(sc_edit_edit+":delete_start_word", QKeySequence::DeleteStartOfWord)
F77_RET_T const F77_DBLE * x
std::complex< double > w(std::complex< double > z, double relerr=0)
QString fromStdString(const std::string &s)
static double f(double k, double l_nu, double c_pm)
bool same_file(const std::string &f, const std::string &g)