annotate gui/src/FileEditor.cpp @ 14599:97cb9286919c gui

Cleaned up code. * .hgsub: Removed IRC Widget. * gui.pro: Removed dependency on IRC Widget and removed files. * class FileEditorMdiSubWindow: Renamed to FileEditor. File editor windows are now independent windows, thus removed the extra close button. * MainWindow: Removed MDI Area and replaced it with the terminal instead. * BrowserWidget: Removed browser widget. * SettingsDialog: Rearranged settings for the editor, removed tab for shortcuts. * OctaveCallbackThread: Raised update intervals from 0,5s to 1s. * OctaveLink: Replaced signals names for triggering updates on the symbol table. * WorkspaceView: Adjusted connect statements to fit the new signal names.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Mon, 07 May 2012 00:53:54 +0200
parents gui/src/FileEditorMdiSubWindow.cpp@be3e1a14a6de
children c8453a013000
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
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
28 FileEditor::FileEditor (QWidget * parent)
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
29 : QWidget (parent)
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 ();
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
32 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
33
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
34 FileEditor::~FileEditor ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
35 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
36 }
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
37
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
38 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
39 FileEditor::closeEvent(QCloseEvent *event)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
40 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
41 if ( m_mainWindow->isCloseApplication() )
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
42 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
43 // close wohle application: save file or not if modified
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
44 checkFileModified ("Close Octave GUI",0); // no cancel possible
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
45 }
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
46 else
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
47 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
48 // ignore close event if file is not saved and user cancels closing this window
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
49 if (checkFileModified ("Close File",QMessageBox::Cancel)==QMessageBox::Cancel)
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
50 event->ignore();
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
51 else
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
52 event->accept();
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
53 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
54 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
55
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
56 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
57 FileEditor::handleMarginClicked(int margin, int line, Qt::KeyboardModifiers state)
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
58 {
13587
eba1ee1f31bb Added Q_UNUSED.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13584
diff changeset
59 Q_UNUSED (state);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
60 if ( margin == 1 ) // marker margin
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
61 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
62 unsigned int mask = m_editor->markersAtLine (line);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
63 if (mask && (1 << MARKER_BOOKMARK))
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
64 m_editor->markerDelete(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
65 else
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
66 m_editor->markerAdd(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
67 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
68 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
69
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
70 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
71 FileEditor::newWindowTitle(bool modified)
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
72 {
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
73 QString title(m_fileName);
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
74 if ( !m_longTitle )
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
75 {
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
76 QFileInfo file(m_fileName);
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
77 title = file.fileName();
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
78 }
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
79 if ( modified )
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
80 {
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
81 setWindowTitle(title.prepend("* "));
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
82 }
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
83 else
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
84 setWindowTitle (title);
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
85 }
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
86
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
87 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
88 FileEditor::handleCopyAvailable(bool enableCopy)
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
89 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
90 m_copyAction->setEnabled(enableCopy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
91 m_cutAction->setEnabled(enableCopy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
92 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
93
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
94
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
95 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
96 FileEditor::openFile ()
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
97 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
98 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
99 {
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
100 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
101 }
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
102 QString openFileName;
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
103 QFileDialog dlg(this);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
104 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
105 dlg.setAcceptMode(QFileDialog::AcceptOpen);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
106 dlg.setViewMode(QFileDialog::Detail);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
107 if ( dlg.exec() )
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
108 {
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
109 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
110 if (openFileName.isEmpty ())
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
111 return;
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
112 loadFile(openFileName);
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
113 }
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
114 }
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
115
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
116 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
117 FileEditor::loadFile (QString fileName)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
118 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
119 QFile file (fileName);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
120 if (!file.open (QFile::ReadOnly))
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
121 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
122 QMessageBox::warning (this, tr ("File Editor"),
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
123 tr ("Cannot read file %1:\n%2.").arg (fileName).
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
124 arg (file.errorString ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
125 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
126 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
127
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
128 QTextStream in (&file);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
129 QApplication::setOverrideCursor (Qt::WaitCursor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
130 m_editor->setText (in.readAll ());
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
131 QApplication::restoreOverrideCursor ();
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
132
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
133 m_fileName = fileName;
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
134 newWindowTitle (false); // window title (no modification)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
135 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
136 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
137 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
138
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
139 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
140 FileEditor::newFile ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
141 {
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
142 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
143 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
144 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
145 }
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
146
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
147 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
148 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
149 m_editor->setText ("");
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
150 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
151 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
152
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
153 int
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
154 FileEditor::checkFileModified (QString msg, int cancelButton)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
155 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
156 int decision = QMessageBox::Yes;
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
157 if (m_editor->isModified ())
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
158 {
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
159 // 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
160 decision = QMessageBox::warning (this,
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
161 msg,
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
162 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
163 "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
164 arg (m_fileName),
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
165 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
166 if (decision == QMessageBox::Save)
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
167 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
168 saveFile ();
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
169 if (m_editor->isModified ())
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
170 {
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
171 // 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
172 // 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
173 // 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
174 // possible
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
175 if ( cancelButton )
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
176 return (QMessageBox::Cancel);
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
177 else
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
178 saveFileAs ();
13524
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 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
181 }
13524
8c143d6d0330 gui-editor: improved behaviour when closing a modified file
ttl (Torsten) <ttl@justmail.de>
parents: 13506
diff changeset
182 return (decision);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
183 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
184
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
185 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
186 FileEditor::saveFile ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
187 {
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
188 saveFile(m_fileName);
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
189 }
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
190
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
191 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
192 FileEditor::saveFile (QString saveFileName)
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
193 {
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
194 // 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
195 if (saveFileName==UNNAMED_FILE || saveFileName.isEmpty ())
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 saveFileAs();
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
198 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
199 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
200
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
201 // open the file for writing
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
202 QFile file (saveFileName);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
203 if (!file.open (QFile::WriteOnly))
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
204 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
205 QMessageBox::warning (this, tr ("File Editor"),
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
206 tr ("Cannot write file %1:\n%2.").
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
207 arg (saveFileName).arg (file.errorString ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
208 return;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
209 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
210
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
211 // save the contents into the file
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
212 QTextStream out (&file);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
213 QApplication::setOverrideCursor (Qt::WaitCursor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
214 out << m_editor->text ();
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
215 QApplication::restoreOverrideCursor ();
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
216 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
217 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
218 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
219 m_editor->setModified (false); // files is save -> not modified
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
220 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
221
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
222 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
223 FileEditor::saveFileAs ()
13529
8e87f3ba3beb gui-editor: enabled 'Save File As'
ttl <ttl@justmail.de>
parents: 13524
diff changeset
224 {
13649
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
225 QString saveFileName(m_fileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
226 QFileDialog dlg(this);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
227 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
228 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
229 saveFileName = QDir::homePath();
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
230 dlg.setDirectory(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
231 }
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
232 else
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
233 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
234 dlg.selectFile(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
235 }
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
236 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
237 dlg.setDefaultSuffix("m");
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
238 dlg.setAcceptMode(QFileDialog::AcceptSave);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
239 dlg.setViewMode(QFileDialog::Detail);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
240 if ( dlg.exec() )
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
241 {
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
242 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
243 if (saveFileName.isEmpty ())
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
244 return;
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
245 saveFile(saveFileName);
0a19410e88c0 improve save as: auto-add extension .m with check for overwrite
ttl <ttl@justmail.de>
parents: 13648
diff changeset
246 }
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
247 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
248
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
249 // handle the run command
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
250 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
251 FileEditor::runFile ()
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
252 {
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
253 if (m_editor->isModified ())
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
254 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
255 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
256 m_terminalView->setFocus ();
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
257 }
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
258
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
259
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
260 // (un)comment selected text
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
261 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
262 FileEditor::commentSelectedText ()
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
263 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
264 doCommentSelectedText (true);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
265 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
266 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
267 FileEditor::uncommentSelectedText ()
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 doCommentSelectedText (false);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
270 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
271 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
272 FileEditor::doCommentSelectedText (bool comment)
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
273 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
274 if ( m_editor->hasSelectedText() )
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
275 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
276 int lineFrom, lineTo, colFrom, colTo, i;
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
277 m_editor->getSelection (&lineFrom,&colFrom,&lineTo,&colTo);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
278 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
279 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
280 m_editor->beginUndoAction ();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
281 for ( i=lineFrom; i<=lineTo; i++ )
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 ( comment )
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
284 m_editor->insertAt("%",i,0);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
285 else
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
286 {
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
287 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
288 if ( line.startsWith("%") )
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
289 {
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
290 m_editor->setSelection(i,0,i,1);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
291 m_editor->removeSelectedText();
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
292 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
293 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
294 }
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
295 m_editor->endUndoAction ();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
296 }
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
297 }
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
13650
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
300 // 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
301 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
302 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
303 {
b93bfa9486ad editor: bookmarks now toggled by F7 (bug #34066), menu entry for removing all bookmarks
ttl <ttl@justmail.de>
parents: 13649
diff changeset
304 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
305 }
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
306 // toggle bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
307 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
308 FileEditor::toggleBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
309 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
310 int line,cur;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
311 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
312 if ( m_editor->markersAtLine (line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
313 m_editor->markerDelete(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
314 else
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
315 m_editor->markerAdd(line,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
316 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
317 // goto next bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
318 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
319 FileEditor::nextBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
320 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
321 int line,cur,nextline;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
322 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
323 if ( m_editor->markersAtLine(line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
324 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
325 nextline = m_editor->markerFindNext(line,(1 << MARKER_BOOKMARK));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
326 m_editor->setCursorPosition(nextline,0);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
327 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
328 // goto previous bookmark
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
329 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
330 FileEditor::prevBookmark ()
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
331 {
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
332 int line,cur,prevline;
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
333 m_editor->getCursorPosition(&line,&cur);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
334 if ( m_editor->markersAtLine(line) && (1 << MARKER_BOOKMARK) )
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
335 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
336 prevline = m_editor->markerFindPrevious(line,(1 << MARKER_BOOKMARK));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
337 m_editor->setCursorPosition(prevline,0);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
338 }
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
339
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
340 // function for setting the already existing lexer from MainWindow
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
341 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
342 FileEditor::initEditor (QTerminal* terminalView,
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
343 LexerOctaveGui* lexer,
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
344 MainWindow* mainWindow)
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
345 {
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
346 m_editor->setLexer(lexer);
13869
d80086a9880e Initial implementation of a Qt Win32 terminal widget.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13674
diff changeset
347 m_terminalView = terminalView; // for sending commands to octave
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
348 // TODO: make a global commandOctave function?
13657
347dfbea2c8a modified editor files can be saved when main window is closed
ttl <ttl@justmail.de>
parents: 13656
diff changeset
349 m_mainWindow = mainWindow; // get the MainWindow for chekcing state at subwindow close
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
350 }
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
351
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
352 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
353 FileEditor::setModified (bool modified)
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
354 {
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
355 m_modified = modified;
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
356 }
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
357
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
358 void
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
359 FileEditor::construct ()
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
360 {
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
361 QSettings *settings = ResourceManager::instance ()->settings ();
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
362 QStyle *style = QApplication::style ();
13566
d22b9973120f Renamed language files to match convention.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13562
diff changeset
363
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
364 m_menuBar = new QMenuBar (this);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
365 m_toolBar = new QToolBar (this);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
366 m_statusBar = new QStatusBar (this);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
367 m_editor = new QsciScintilla (this);
13503
5ab40ef3d241 Merged diff from Torsten.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13501
diff changeset
368
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
369 // markers
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
370 m_editor->setMarginType (1, QsciScintilla::SymbolMargin);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
371 m_editor->setMarginSensitivity(1,true);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
372 m_editor->markerDefine(QsciScintilla::RightTriangle,MARKER_BOOKMARK);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
373 connect(m_editor,SIGNAL(marginClicked(int,int,Qt::KeyboardModifiers)),
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
374 this,SLOT(handleMarginClicked(int,int,Qt::KeyboardModifiers)));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
375
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
376 // line numbers
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
377 m_editor->setMarginsForegroundColor(QColor(96,96,96));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
378 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
379 if ( settings->value ("editor/showLineNumbers",true).toBool () )
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
380 {
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
381 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
382 settings->value ("editor/fontSize",10).toInt () );
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
383 m_editor->setMarginsFont( marginFont );
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
384 QFontMetrics metrics(marginFont);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
385 m_editor->setMarginType (2, QsciScintilla::TextMargin);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
386 m_editor->setMarginWidth(2, metrics.width("99999"));
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
387 m_editor->setMarginLineNumbers(2, true);
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
388 }
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
389 // code folding
13558
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
390 m_editor->setMarginType (3, QsciScintilla::SymbolMargin);
248b897d9f36 editor: custom lexer, syntax highlighting, auto completion
ttl <ttl@justmail.de>
parents: 13557
diff changeset
391 m_editor->setFolding (QsciScintilla::BoxedTreeFoldStyle , 3);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
392 // 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
393 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
394 {
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
395 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
396 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
397 }
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
398 m_editor->setBraceMatching (QsciScintilla::StrictBraceMatch);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
399 m_editor->setAutoIndent (true);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
400 m_editor->setIndentationWidth (2);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
401 m_editor->setIndentationsUseTabs (false);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
402 if ( settings->value ("editor/codeCompletion",true).toBool () )
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
403 {
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
404 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
405 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
406 m_editor->setAutoCompletionThreshold (1);
13659
d98c6ef06dff included some editor setting into the setting dialog
ttl <ttl@justmail.de>
parents: 13657
diff changeset
407 }
13631
9ad313bcee2d Possible fixed Andriys bug with russian symbols.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13587
diff changeset
408 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
409 m_longTitle = settings->value ("editor/longWindowTitle",true).toBool ();
13503
5ab40ef3d241 Merged diff from Torsten.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13501
diff changeset
410
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
411 // The Actions
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
412
13555
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
413 // Theme icons with QStyle icons as fallback
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
414 QAction *newAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
415 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
416 tr("&New File"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
417 QAction *openAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
418 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
419 tr("&Open File"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
420 QAction *saveAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
421 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
422 tr("&Save File"), m_toolBar);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
423 QAction *saveAsAction = new QAction (
13555
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
424 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
425 tr("Save File &As"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
426 QAction *undoAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
427 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
428 tr("&Undo"), m_toolBar);
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
429 QAction *redoAction = new QAction (
be425f45f9e3 editor: toolbar icons from current icon theme
ttl <ttl@justmail.de>
parents: 13550
diff changeset
430 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
431 tr("&Redo"), m_toolBar);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
432 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
433 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
434 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
435 QAction *nextBookmarkAction = new QAction (tr("&Next Bookmark"),m_toolBar);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
436 QAction *prevBookmarkAction = new QAction (tr("Pre&vious Bookmark"),m_toolBar);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
437 QAction *toggleBookmarkAction = new QAction (tr("Toggle &Bookmark"),m_toolBar);
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
438 QAction *removeBookmarkAction = new QAction (tr("&Remove All Bookmarks"),m_toolBar);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
439 QAction *commentSelectedAction = new QAction (tr("&Comment Selected Text"),m_toolBar);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
440 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
441 QAction *runAction = new QAction (
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
442 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
443 tr("&Run File"), m_toolBar);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
444
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
445 // some actions are disabled from the beginning
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
446 m_copyAction->setEnabled(false);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
447 m_cutAction->setEnabled(false);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
448 connect(m_editor,SIGNAL(copyAvailable(bool)),this,SLOT(handleCopyAvailable(bool)));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
449
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
450 // short cuts
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
451 newAction->setShortcut(QKeySequence::New);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
452 openAction->setShortcut(QKeySequence::Open);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
453 saveAction->setShortcut(QKeySequence::Save);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
454 saveAsAction->setShortcut(QKeySequence::SaveAs);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
455 undoAction->setShortcut(QKeySequence::Undo);
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
456 redoAction->setShortcut(QKeySequence::Redo);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
457 m_copyAction->setShortcut(QKeySequence::Copy);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
458 m_cutAction->setShortcut(QKeySequence::Cut);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
459 pasteAction->setShortcut(QKeySequence::Paste);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
460 runAction->setShortcut(Qt::Key_F5);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
461 nextBookmarkAction->setShortcut(Qt::Key_F2);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
462 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
463 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
464 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
465 uncommentSelectedAction->setShortcut(Qt::CTRL + Qt::Key_T);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
466
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
467 // toolbar
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
468 m_toolBar->addAction (newAction);
13530
8c7390b78911 gui-editor: open new editor window via interface menu
ttl <ttl@justmail.de>
parents: 13529
diff changeset
469 m_toolBar->addAction (openAction);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
470 m_toolBar->addAction (saveAction);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
471 m_toolBar->addAction (saveAsAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
472 m_toolBar->addSeparator();
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
473 m_toolBar->addAction (undoAction);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
474 m_toolBar->addAction (redoAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
475 m_toolBar->addAction (m_copyAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
476 m_toolBar->addAction (m_cutAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
477 m_toolBar->addAction (pasteAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
478 m_toolBar->addSeparator();
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
479 m_toolBar->addAction (runAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
480
13566
d22b9973120f Renamed language files to match convention.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13562
diff changeset
481 // menu bar
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
482 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
483 fileMenu->addAction(newAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
484 fileMenu->addAction(openAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
485 fileMenu->addAction(saveAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
486 fileMenu->addAction(saveAsAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
487 fileMenu->addSeparator();
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
488 m_menuBar->addMenu(fileMenu);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
489 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
490 editMenu->addAction(undoAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
491 editMenu->addAction(redoAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
492 editMenu->addSeparator();
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
493 editMenu->addAction(m_copyAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
494 editMenu->addAction(m_cutAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
495 editMenu->addAction(pasteAction);
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
496 editMenu->addSeparator();
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
497 editMenu->addAction(commentSelectedAction);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
498 editMenu->addAction(uncommentSelectedAction);
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
499 editMenu->addSeparator();
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
500 editMenu->addAction(toggleBookmarkAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
501 editMenu->addAction(nextBookmarkAction);
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
502 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
503 editMenu->addAction(removeBookmarkAction);
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
504 m_menuBar->addMenu(editMenu);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
505 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
506 runMenu->addAction(runAction);
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
507 m_menuBar->addMenu(runMenu);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
508
13566
d22b9973120f Renamed language files to match convention.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13562
diff changeset
509
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
510 QVBoxLayout *layout = new QVBoxLayout ();
13562
a89aa9e05e19 editor: menu bar, run editor file in octave
ttl <ttl@justmail.de>
parents: 13558
diff changeset
511 layout->addWidget (m_menuBar);
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
512 layout->addWidget (m_toolBar);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
513 layout->addWidget (m_editor);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
514 layout->addWidget (m_statusBar);
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
515 layout->setMargin (2);
14599
97cb9286919c Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14307
diff changeset
516 setLayout (layout);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
517
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
518 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
519 connect (openAction, SIGNAL (triggered ()), this, SLOT (openFile ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
520 connect (undoAction, SIGNAL (triggered ()), m_editor, SLOT (undo ()));
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
521 connect (redoAction, SIGNAL (triggered ()), m_editor, SLOT (redo ()));
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
522 connect (m_copyAction, SIGNAL (triggered ()), m_editor, SLOT (copy ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
523 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
524 connect (pasteAction, SIGNAL (triggered ()), m_editor, SLOT (paste ()));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
525 connect (saveAction, SIGNAL (triggered ()), this, SLOT (saveFile ()));
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
526 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
527 connect (runAction, SIGNAL (triggered ()), this, SLOT (runFile ()));
13584
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
528 connect (toggleBookmarkAction, SIGNAL (triggered ()), this, SLOT (toggleBookmark ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
529 connect (nextBookmarkAction, SIGNAL (triggered ()), this, SLOT (nextBookmark ()));
e76a22bfe406 editor: added bookmark feature
ttl <ttl@justmail.de>
parents: 13566
diff changeset
530 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
531 connect (removeBookmarkAction, SIGNAL (triggered ()), this, SLOT (removeBookmark ()));
13654
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
532 connect (commentSelectedAction, SIGNAL (triggered ()), this, SLOT (commentSelectedText ()));
c67f7d390a1a editor: comment/uncomment selected text
ttl <ttl@justmail.de>
parents: 13650
diff changeset
533 connect (uncommentSelectedAction, SIGNAL (triggered ()), this, SLOT (uncommentSelectedText ()));
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
534
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
535
13557
ad18a8e7fb02 editor: change window title if text is modified
ttl <ttl@justmail.de>
parents: 13556
diff changeset
536 // connect modified signal
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
537 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
538
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
539 m_fileName = "";
13672
c9501268a194 filename with or without full path in tabs of the editor
ttl <ttl@justmail.de>
parents: 13659
diff changeset
540 newWindowTitle (false);
13556
0d18b0e168ae editor: shortcuts for toolbar actions, window icon
ttl <ttl@justmail.de>
parents: 13555
diff changeset
541 setWindowIcon(QIcon::fromTheme("accessories-text-editor",style->standardIcon (QStyle::SP_FileIcon)));
13506
c70511cf64ee Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13504
diff changeset
542 show ();
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
543 }