annotate gui/src/FileEditor.cpp @ 14669:7605e7136b50 gui

Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit. * FileEditor: Removed initFileEditor, put that code into the constructor. * WorkspaceModel: Simplified updating the symbol table. * OctaveLink: Add quit_allowed = true to prevent hangup on quit.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Tue, 22 May 2012 11:00:24 +0200
parents c8453a013000
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13504
13e3d60aff2d Replaced Quint with OctaveGUI.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13503
diff changeset
1 /* OctaveGUI - A graphical user interface for Octave
13674
c0e66d6e3dc8 Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13672
diff changeset
2 * Copyright (C) 2011 Jacob Dawid (jacob.dawid@googlemail.com)
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
3 *
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
4 * This program is free software: you can redistribute it and/or modify
14290
faece6b2ab90 Corrected license headers in all files to GPL.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14255
diff changeset
5 * it under the terms of the GNU General Public License as
13674
c0e66d6e3dc8 Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13672
diff changeset
6 * published by the Free Software Foundation, either version 3 of the
c0e66d6e3dc8 Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13672
diff changeset
7 * License, or (at your option) any later version.
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
8 *
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14290
faece6b2ab90 Corrected license headers in all files to GPL.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14255
diff changeset
12 * GNU General Public License for more details.
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
13 *
14290
faece6b2ab90 Corrected license headers in all files to GPL.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14255
diff changeset
14 * You should have received a copy of the GNU General Public License
13674
c0e66d6e3dc8 Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13672
diff changeset
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
16 */
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
17
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
18 #include "FileEditor.h"
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
19 #include <QVBoxLayout>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
20 #include <QApplication>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
21 #include <QFile>
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
22 #include <QFont>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
23 #include <QFileDialog>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
24 #include <QMessageBox>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25 #include <QStyle>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
26 #include <QTextStream>
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
27
14669
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
28 FileEditor::FileEditor (QTerminal *terminalView, LexerOctaveGui *lexer, MainWindow *mainWindow)
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
29 : QWidget ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
30 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
31 construct ();
14669
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
32 m_editor->setLexer (lexer);
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
33 m_terminalView = terminalView; // for sending commands to octave
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
34 m_mainWindow = mainWindow; // get the MainWindow for chekcing state at subwindow close
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
35 show ();
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
37
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
38 FileEditor::~FileEditor ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
39 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
40 }
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
41
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
42 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
43 FileEditor::closeEvent(QCloseEvent *event)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
44 {
14602
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
45 if ( m_mainWindow->closing () )
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
46 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
47 // close wohle application: save file or not if modified
14602
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
48 checkFileModified ("Closing Octave", 0); // no cancel possible
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
49 event->accept ();
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
50 }
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
51 else
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
52 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
53 // ignore close event if file is not saved and user cancels closing this window
14602
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
54 if (checkFileModified ("Close File",QMessageBox::Cancel) == QMessageBox::Cancel)
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
55 {
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
56 event->ignore ();
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
57 }
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
58 else
14602
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
59 {
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
60 event->accept();
c8453a013000 Cleaned up code. Fixed bug that causes the GUI to freeze when launching another editor.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14599
diff changeset
61 }
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
62 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
63 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
64
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
65 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
66 FileEditor::handleMarginClicked(int margin, int line, Qt::KeyboardModifiers state)
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
67 {
13587
eba1ee1f31bb Added Q_UNUSED.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13584
diff changeset
68 Q_UNUSED (state);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
69 if ( margin == 1 ) // marker margin
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
70 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
71 unsigned int mask = m_editor->markersAtLine (line);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
72 if (mask && (1 << MARKER_BOOKMARK))
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
73 m_editor->markerDelete(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
74 else
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
75 m_editor->markerAdd(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
76 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
77 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
78
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
79 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
80 FileEditor::newWindowTitle(bool modified)
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
81 {
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
82 QString title(m_fileName);
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
83 if ( !m_longTitle )
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
84 {
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
85 QFileInfo file(m_fileName);
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
86 title = file.fileName();
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
87 }
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
88 if ( modified )
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
89 {
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
90 setWindowTitle(title.prepend("* "));
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
91 }
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
92 else
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
93 setWindowTitle (title);
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
94 }
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
95
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
96 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
97 FileEditor::handleCopyAvailable(bool enableCopy)
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
98 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
99 m_copyAction->setEnabled(enableCopy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
100 m_cutAction->setEnabled(enableCopy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
101 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
102
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
103
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
104 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
105 FileEditor::openFile ()
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
106 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
107 if (checkFileModified ("Open File",QMessageBox::Cancel)==QMessageBox::Cancel)
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
108 {
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
109 return; // existing file not saved and opening another file canceled by user
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
110 }
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
111 QString openFileName;
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
112 QFileDialog dlg(this);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
113 dlg.setNameFilter(SAVE_FILE_FILTER);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
114 dlg.setAcceptMode(QFileDialog::AcceptOpen);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
115 dlg.setViewMode(QFileDialog::Detail);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
116 if ( dlg.exec() )
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
117 {
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
118 openFileName = dlg.selectedFiles().at(0);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
119 if (openFileName.isEmpty ())
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
120 return;
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
121 loadFile(openFileName);
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
122 }
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
123 }
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
124
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
125 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
126 FileEditor::loadFile (QString fileName)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
127 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
128 QFile file (fileName);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
129 if (!file.open (QFile::ReadOnly))
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
130 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
131 QMessageBox::warning (this, tr ("File Editor"),
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
132 tr ("Cannot read file %1:\n%2.").arg (fileName).
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
133 arg (file.errorString ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
134 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
135 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
136
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
137 QTextStream in (&file);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
138 QApplication::setOverrideCursor (Qt::WaitCursor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
139 m_editor->setText (in.readAll ());
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
140 QApplication::restoreOverrideCursor ();
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
141
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
142 m_fileName = fileName;
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
143 newWindowTitle (false); // window title (no modification)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
144 m_statusBar->showMessage (tr ("File loaded."), 2000);
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
145 m_editor->setModified (false); // loaded file is not modified yet
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
146 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
147
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
148 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
149 FileEditor::newFile ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
150 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
151 if (checkFileModified ("Create New File",QMessageBox::Cancel)==QMessageBox::Cancel)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
152 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
153 return; // existing file not saved and creating new file canceled by user
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
154 }
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
155
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
156 m_fileName = UNNAMED_FILE;
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
157 newWindowTitle (false); // window title (no modification)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
158 m_editor->setText ("");
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
159 m_editor->setModified (false); // new file is not modified yet
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
160 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
161
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
162 int
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
163 FileEditor::checkFileModified (QString msg, int cancelButton)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
164 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
165 int decision = QMessageBox::Yes;
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
166 if (m_editor->isModified ())
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
167 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
168 // file is modified but not saved, aks user what to do
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
169 decision = QMessageBox::warning (this,
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
170 msg,
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
171 tr ("The file %1\n"
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
172 "has been modified. Do you want to save the changes?").
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
173 arg (m_fileName),
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
174 QMessageBox::Save, QMessageBox::Discard, cancelButton );
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
175 if (decision == QMessageBox::Save)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
176 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
177 saveFile ();
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
178 if (m_editor->isModified ())
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
179 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
180 // If the user attempted to save the file, but it's still
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
181 // modified, then probably something went wrong, so return cancel
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
182 // for cancel this operation or try to save files as if cancel not
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
183 // possible
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
184 if ( cancelButton )
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
185 return (QMessageBox::Cancel);
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
186 else
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
187 saveFileAs ();
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
188 }
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
189 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
190 }
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
191 return (decision);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
192 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
193
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
194 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
195 FileEditor::saveFile ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
196 {
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
197 saveFile(m_fileName);
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
198 }
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
199
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
200 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
201 FileEditor::saveFile (QString saveFileName)
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
202 {
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
203 // it is a new file with the name "<unnamed>" -> call saveFielAs
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
204 if (saveFileName==UNNAMED_FILE || saveFileName.isEmpty ())
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
205 {
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
206 saveFileAs();
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
207 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
208 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
209
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
210 // open the file for writing
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
211 QFile file (saveFileName);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
212 if (!file.open (QFile::WriteOnly))
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
213 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
214 QMessageBox::warning (this, tr ("File Editor"),
14669
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
215 tr ("Cannot write file %1:\n%2.").
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
216 arg (saveFileName).arg (file.errorString ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
217 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
218 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
219
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
220 // save the contents into the file
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
221 QTextStream out (&file);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
222 QApplication::setOverrideCursor (Qt::WaitCursor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
223 out << m_editor->text ();
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
224 QApplication::restoreOverrideCursor ();
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
225 m_fileName = saveFileName; // save file name for later use
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
226 newWindowTitle(false); // set the window title to actual file name (not modified)
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
227 m_statusBar->showMessage (tr ("File %1 saved").arg(m_fileName), 2000);
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
228 m_editor->setModified (false); // files is save -> not modified
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
229 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
230
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
231 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
232 FileEditor::saveFileAs ()
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
233 {
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
234 QString saveFileName(m_fileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
235 QFileDialog dlg(this);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
236 if (saveFileName==UNNAMED_FILE || saveFileName.isEmpty ())
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
237 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
238 saveFileName = QDir::homePath();
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
239 dlg.setDirectory(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
240 }
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
241 else
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
242 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
243 dlg.selectFile(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
244 }
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
245 dlg.setNameFilter(SAVE_FILE_FILTER);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
246 dlg.setDefaultSuffix("m");
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
247 dlg.setAcceptMode(QFileDialog::AcceptSave);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
248 dlg.setViewMode(QFileDialog::Detail);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
249 if ( dlg.exec() )
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
250 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
251 saveFileName = dlg.selectedFiles().at(0);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
252 if (saveFileName.isEmpty ())
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
253 return;
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
254 saveFile(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
255 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
256 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
257
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
258 // handle the run command
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
259 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
260 FileEditor::runFile ()
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
261 {
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
262 if (m_editor->isModified ())
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
263 saveFile(m_fileName);
14306
c3b62d211b80 .m-files can be directly run from the editor again. Autocompletion works again.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14290
diff changeset
264 m_terminalView->sendText (QString ("run \'%1\'\n").arg (m_fileName));
c3b62d211b80 .m-files can be directly run from the editor again. Autocompletion works again.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14290
diff changeset
265 m_terminalView->setFocus ();
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
266 }
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
267
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
268
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
269 // (un)comment selected text
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
270 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
271 FileEditor::commentSelectedText ()
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
272 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
273 doCommentSelectedText (true);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
274 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
275 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
276 FileEditor::uncommentSelectedText ()
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
277 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
278 doCommentSelectedText (false);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
279 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
280 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
281 FileEditor::doCommentSelectedText (bool comment)
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
282 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
283 if ( m_editor->hasSelectedText() )
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
284 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
285 int lineFrom, lineTo, colFrom, colTo, i;
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
286 m_editor->getSelection (&lineFrom,&colFrom,&lineTo,&colTo);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
287 if ( colTo == 0 ) // the beginning of last line is not selected
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
288 lineTo--; // stop at line above
13656
1347d498959c Comment/uncomment selected text operation can be undone with a single Undo action
Andriy Shinkarchuck <adriano32.gnu@gmail.com>
parents: 13654
diff changeset
289 m_editor->beginUndoAction ();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
290 for ( i=lineFrom; i<=lineTo; i++ )
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
291 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
292 if ( comment )
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
293 m_editor->insertAt("%",i,0);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
294 else
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
295 {
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
296 QString line(m_editor->text(i));
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
297 if ( line.startsWith("%") )
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
298 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
299 m_editor->setSelection(i,0,i,1);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
300 m_editor->removeSelectedText();
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
301 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
302 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
303 }
13656
1347d498959c Comment/uncomment selected text operation can be undone with a single Undo action
Andriy Shinkarchuck <adriano32.gnu@gmail.com>
parents: 13654
diff changeset
304 m_editor->endUndoAction ();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
305 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
306 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
307
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
308
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
309 // remove bookmarks
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
310 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
311 FileEditor::removeBookmark ()
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
312 {
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
313 m_editor->markerDeleteAll(MARKER_BOOKMARK);
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
314 }
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
315 // toggle bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
316 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
317 FileEditor::toggleBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
318 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
319 int line,cur;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
320 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
321 if ( m_editor->markersAtLine (line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
322 m_editor->markerDelete(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
323 else
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
324 m_editor->markerAdd(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
325 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
326 // goto next bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
327 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
328 FileEditor::nextBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
329 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
330 int line,cur,nextline;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
331 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
332 if ( m_editor->markersAtLine(line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
333 line++; // we have a bookmark here, so start search from next line
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
334 nextline = m_editor->markerFindNext(line,(1 << MARKER_BOOKMARK));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
335 m_editor->setCursorPosition(nextline,0);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
336 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
337 // goto previous bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
338 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
339 FileEditor::prevBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
340 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
341 int line,cur,prevline;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
342 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
343 if ( m_editor->markersAtLine(line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
344 line--; // we have a bookmark here, so start search from prev line
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
345 prevline = m_editor->markerFindPrevious(line,(1 << MARKER_BOOKMARK));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
346 m_editor->setCursorPosition(prevline,0);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
347 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
348
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
349 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
350 FileEditor::setModified (bool modified)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
351 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
352 m_modified = modified;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
353 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
354
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
355 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
356 FileEditor::construct ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
357 {
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
358 QSettings *settings = ResourceManager::instance ()->settings ();
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
359 QStyle *style = QApplication::style ();
13566
d22b9973120f Renamed language files to match convention.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13562
diff changeset
360
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
361 m_menuBar = new QMenuBar (this);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
362 m_toolBar = new QToolBar (this);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
363 m_statusBar = new QStatusBar (this);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
364 m_editor = new QsciScintilla (this);
13503
5ab40ef3d241 Merged diff from Torsten.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13501
diff changeset
365
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
366 // markers
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
367 m_editor->setMarginType (1, QsciScintilla::SymbolMargin);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
368 m_editor->setMarginSensitivity(1,true);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
369 m_editor->markerDefine(QsciScintilla::RightTriangle,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
370 connect(m_editor,SIGNAL(marginClicked(int,int,Qt::KeyboardModifiers)),
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
371 this,SLOT(handleMarginClicked(int,int,Qt::KeyboardModifiers)));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
372
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
373 // line numbers
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
374 m_editor->setMarginsForegroundColor(QColor(96,96,96));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
375 m_editor->setMarginsBackgroundColor(QColor(232,232,220));
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
376 if ( settings->value ("editor/showLineNumbers",true).toBool () )
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
377 {
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
378 QFont marginFont( settings->value ("editor/fontName","Courier").toString () ,
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
379 settings->value ("editor/fontSize",10).toInt () );
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
380 m_editor->setMarginsFont( marginFont );
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
381 QFontMetrics metrics(marginFont);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
382 m_editor->setMarginType (2, QsciScintilla::TextMargin);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
383 m_editor->setMarginWidth(2, metrics.width("99999"));
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
384 m_editor->setMarginLineNumbers(2, true);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
385 }
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
386 // code folding
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
387 m_editor->setMarginType (3, QsciScintilla::SymbolMargin);
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
388 m_editor->setFolding (QsciScintilla::BoxedTreeFoldStyle , 3);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
389 // other features
14307
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
390 if ( settings->value ("editor/highlightCurrentLine",true).toBool () )
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
391 {
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
392 m_editor->setCaretLineVisible(true);
14307
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
393 m_editor->setCaretLineBackgroundColor(QColor(245,245,245));
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
394 }
14307
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
395 m_editor->setBraceMatching (QsciScintilla::StrictBraceMatch);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
396 m_editor->setAutoIndent (true);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
397 m_editor->setIndentationWidth (2);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
398 m_editor->setIndentationsUseTabs (false);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
399 if ( settings->value ("editor/codeCompletion",true).toBool () )
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
400 {
14307
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
401 m_editor->autoCompleteFromAll ();
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
402 m_editor->setAutoCompletionSource(QsciScintilla::AcsAll);
be3e1a14a6de Added an interface settings tab to the settings dialog. Made a few improvements on the editor. Wrote a small welcome text in the welcome wizard. Moved configuration file to ~/.config/octave-gui/settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14306
diff changeset
403 m_editor->setAutoCompletionThreshold (1);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
404 }
13631
9ad313bcee2d Possible fixed Andriys bug with russian symbols.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13587
diff changeset
405 m_editor->setUtf8 (true);
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
406 m_longTitle = settings->value ("editor/longWindowTitle",true).toBool ();
13503
5ab40ef3d241 Merged diff from Torsten.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13501
diff changeset
407
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
408 // The Actions
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
409
13555
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
410 // Theme icons with QStyle icons as fallback
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
411 QAction *newAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
412 QIcon::fromTheme("document-new",style->standardIcon (QStyle::SP_FileIcon)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
413 tr("&New File"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
414 QAction *openAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
415 QIcon::fromTheme("document-open",style->standardIcon (QStyle::SP_DirOpenIcon)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
416 tr("&Open File"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
417 QAction *saveAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
418 QIcon::fromTheme("document-save",style->standardIcon (QStyle::SP_DriveHDIcon)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
419 tr("&Save File"), m_toolBar);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
420 QAction *saveAsAction = new QAction (
13555
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
421 QIcon::fromTheme("document-save-as",style->standardIcon (QStyle::SP_DriveFDIcon)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
422 tr("Save File &As"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
423 QAction *undoAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
424 QIcon::fromTheme("edit-undo",style->standardIcon (QStyle::SP_ArrowLeft)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
425 tr("&Undo"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
426 QAction *redoAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
427 QIcon::fromTheme("edit-redo",style->standardIcon (QStyle::SP_ArrowRight)),
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
428 tr("&Redo"), m_toolBar);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
429 m_copyAction = new QAction (QIcon::fromTheme("edit-copy"),tr("&Copy"),m_toolBar);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
430 m_cutAction = new QAction (QIcon::fromTheme("edit-cut"),tr("Cu&t"),m_toolBar);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
431 QAction *pasteAction = new QAction (QIcon::fromTheme("edit-paste"),tr("&Paste"),m_toolBar);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
432 QAction *nextBookmarkAction = new QAction (tr("&Next Bookmark"),m_toolBar);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
433 QAction *prevBookmarkAction = new QAction (tr("Pre&vious Bookmark"),m_toolBar);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
434 QAction *toggleBookmarkAction = new QAction (tr("Toggle &Bookmark"),m_toolBar);
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
435 QAction *removeBookmarkAction = new QAction (tr("&Remove All Bookmarks"),m_toolBar);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
436 QAction *commentSelectedAction = new QAction (tr("&Comment Selected Text"),m_toolBar);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
437 QAction *uncommentSelectedAction = new QAction (tr("&Uncomment Selected Text"),m_toolBar);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
438 QAction *runAction = new QAction (
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
439 QIcon::fromTheme("media-play",style->standardIcon (QStyle::SP_MediaPlay)),
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
440 tr("&Run File"), m_toolBar);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
441
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
442 // some actions are disabled from the beginning
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
443 m_copyAction->setEnabled(false);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
444 m_cutAction->setEnabled(false);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
445 connect(m_editor,SIGNAL(copyAvailable(bool)),this,SLOT(handleCopyAvailable(bool)));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
446
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
447 // short cuts
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
448 newAction->setShortcut(QKeySequence::New);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
449 openAction->setShortcut(QKeySequence::Open);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
450 saveAction->setShortcut(QKeySequence::Save);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
451 saveAsAction->setShortcut(QKeySequence::SaveAs);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
452 undoAction->setShortcut(QKeySequence::Undo);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
453 redoAction->setShortcut(QKeySequence::Redo);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
454 m_copyAction->setShortcut(QKeySequence::Copy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
455 m_cutAction->setShortcut(QKeySequence::Cut);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
456 pasteAction->setShortcut(QKeySequence::Paste);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
457 runAction->setShortcut(Qt::Key_F5);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
458 nextBookmarkAction->setShortcut(Qt::Key_F2);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
459 prevBookmarkAction->setShortcut(Qt::SHIFT + Qt::Key_F2);
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
460 toggleBookmarkAction->setShortcut(Qt::Key_F7);
13656
1347d498959c Comment/uncomment selected text operation can be undone with a single Undo action
Andriy Shinkarchuck <adriano32.gnu@gmail.com>
parents: 13654
diff changeset
461 commentSelectedAction->setShortcut(Qt::CTRL + Qt::Key_R);
1347d498959c Comment/uncomment selected text operation can be undone with a single Undo action
Andriy Shinkarchuck <adriano32.gnu@gmail.com>
parents: 13654
diff changeset
462 uncommentSelectedAction->setShortcut(Qt::CTRL + Qt::Key_T);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
463
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
464 // toolbar
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
465 m_toolBar->addAction (newAction);
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
466 m_toolBar->addAction (openAction);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
467 m_toolBar->addAction (saveAction);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
468 m_toolBar->addAction (saveAsAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
469 m_toolBar->addSeparator();
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
470 m_toolBar->addAction (undoAction);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
471 m_toolBar->addAction (redoAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
472 m_toolBar->addAction (m_copyAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
473 m_toolBar->addAction (m_cutAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
474 m_toolBar->addAction (pasteAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
475 m_toolBar->addSeparator();
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
476 m_toolBar->addAction (runAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
477
14669
7605e7136b50 Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14602
diff changeset
478 // menu bar
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
479 QMenu *fileMenu = new QMenu(tr("&File"),m_menuBar);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
480 fileMenu->addAction(newAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
481 fileMenu->addAction(openAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
482 fileMenu->addAction(saveAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
483 fileMenu->addAction(saveAsAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
484 fileMenu->addSeparator();
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
485 m_menuBar->addMenu(fileMenu);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
486 QMenu *editMenu = new QMenu(tr("&Edit"),m_menuBar);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
487 editMenu->addAction(undoAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
488 editMenu->addAction(redoAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
489 editMenu->addSeparator();
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
490 editMenu->addAction(m_copyAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
491 editMenu->addAction(m_cutAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
492 editMenu->addAction(pasteAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
493 editMenu->addSeparator();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
494 editMenu->addAction(commentSelectedAction);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
495 editMenu->addAction(uncommentSelectedAction);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
496 editMenu->addSeparator();
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
497 editMenu->addAction(toggleBookmarkAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
498 editMenu->addAction(nextBookmarkAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
499 editMenu->addAction(prevBookmarkAction);
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
500 editMenu->addAction(removeBookmarkAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
501 m_menuBar->addMenu(editMenu);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
502 QMenu *runMenu = new QMenu(tr("&Run"),m_menuBar);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
503 runMenu->addAction(runAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
504 m_menuBar->addMenu(runMenu);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
505
13566
d22b9973120f Renamed language files to match convention.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13562
diff changeset
506
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
507 QVBoxLayout *layout = new QVBoxLayout ();
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
508 layout->addWidget (m_menuBar);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
509 layout->addWidget (m_toolBar);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
510 layout->addWidget (m_editor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
511 layout->addWidget (m_statusBar);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
512 layout->setMargin (2);
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
513 setLayout (layout);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
514
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
515 connect (newAction, SIGNAL (triggered ()), this, SLOT (newFile ()));
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
516 connect (openAction, SIGNAL (triggered ()), this, SLOT (openFile ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
517 connect (undoAction, SIGNAL (triggered ()), m_editor, SLOT (undo ()));
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
518 connect (redoAction, SIGNAL (triggered ()), m_editor, SLOT (redo ()));
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
519 connect (m_copyAction, SIGNAL (triggered ()), m_editor, SLOT (copy ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
520 connect (m_cutAction, SIGNAL (triggered ()), m_editor, SLOT (cut ()));
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
521 connect (pasteAction, SIGNAL (triggered ()), m_editor, SLOT (paste ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
522 connect (saveAction, SIGNAL (triggered ()), this, SLOT (saveFile ()));
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
523 connect (saveAsAction, SIGNAL (triggered ()), this, SLOT (saveFileAs ()));
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
524 connect (runAction, SIGNAL (triggered ()), this, SLOT (runFile ()));
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
525 connect (toggleBookmarkAction, SIGNAL (triggered ()), this, SLOT (toggleBookmark ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
526 connect (nextBookmarkAction, SIGNAL (triggered ()), this, SLOT (nextBookmark ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
527 connect (prevBookmarkAction, SIGNAL (triggered ()), this, SLOT (prevBookmark ()));
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
528 connect (removeBookmarkAction, SIGNAL (triggered ()), this, SLOT (removeBookmark ()));
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
529 connect (commentSelectedAction, SIGNAL (triggered ()), this, SLOT (commentSelectedText ()));
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
530 connect (uncommentSelectedAction, SIGNAL (triggered ()), this, SLOT (uncommentSelectedText ()));
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
531
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
532
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
533 // connect modified signal
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
534 connect (m_editor, SIGNAL (modificationChanged(bool)), this, SLOT (newWindowTitle(bool)) );
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
535
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
536 m_fileName = "";
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
537 newWindowTitle (false);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
538 setWindowIcon(QIcon::fromTheme("accessories-text-editor",style->standardIcon (QStyle::SP_FileIcon)));
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
539 }