Mercurial > octave
annotate libgui/src/m-editor/find-dialog.cc @ 27455:e92bab9a7f26 stable
fix editors search and replace in selection (bug #56405)
* file-editor-tab.cc (handle_double_click): update call to changed method
octave_qscintilla::show_selection_markers
* find-dialog.cc (find_dialog): parent is class octave_qscintilla,
initialize the new class variables for searching in the selection;
(handle_selection_changed): only disable selection checkbox if no text
is selected, but leave check state as it is, remove the conditial
compilation based on HAVE_QSCI_FINDSELECTION;
(find): remove consitional compilation, initialize line and column for
the search start also for selected text, remember start and end of a
possible selection, remove workaround for wrong selection length update,
only use finFirst also for the case with selection, check if search
hit lies within the selection if necessary and stop search if required,
update slection marker for showing the current selected area, remove this
marker and restore real selection if no more occurrance of search text was
found;
(do_replace): update the length of the selection when replacing text;
(replace): remove workaround for buggy selection length update
* find-dialog.h: include octave_qscintilla, parent and _edit_area are
of type octave_qscintilla, new class variable for storing and
handling search in selection as well as selection begin and end
* octave-qscintilla.cc (show_selection_markers): paraemters are now
start line and column as wells as end line and column
* octave-qscintilla.h: new parameters for show_selection_markers
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Sat, 01 Jun 2019 19:30:56 +0200 |
parents | 8854d65e3bcc |
children | 15752c577f6d 2310164737b3 |
rev | line source |
---|---|
20946 | 1 /* |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
2 |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
3 Find dialog derived from an example from Qt Toolkit (license below (**)) |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
4 |
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
5 Copyright (C) 2012-2019 Torsten <ttl@justmail.de> |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
6 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
7 All rights reserved. |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
8 Contact: Nokia Corporation (qt-info@nokia.com) |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
9 |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
10 This file is part of Octave. |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
11 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
12 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
13 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
14 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
15 (at your option) any later version. |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
16 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
17 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
18 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22411
diff
changeset
|
20 GNU General Public License for more details. |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
21 |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
22 You should have received a copy of the GNU General Public License |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
23 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
24 <https://www.gnu.org/licenses/>. |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
25 |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
26 ** This file is part of the examples of the Qt Toolkit. |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
27 ** |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
28 ** $QT_BEGIN_LICENSE:LGPL$ |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
29 ** Commercial Usage |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
30 ** Licensees holding valid Qt Commercial licenses may use this file in |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
31 ** accordance with the Qt Commercial License Agreement provided with the |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
32 ** Software or, alternatively, in accordance with the terms contained in |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
33 ** a written agreement between you and Nokia. |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
34 ** |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
35 ** GNU Lesser General Public License Usage |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
36 ** Alternatively, this file may be used under the terms of the GNU Lesser |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
37 ** General Public License version 2.1 as published by the Free Software |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
38 ** Foundation and appearing in the file LICENSE.LGPL included in the |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
39 ** packaging of this file. Please review the following information to |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
40 ** ensure the GNU Lesser General Public License version 2.1 requirements |
24893
a3eb0d746042
doc: use canonical https URLs for all external gnu.org references
Mike Miller <mtmiller@octave.org>
parents:
24716
diff
changeset
|
41 ** will be met: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
42 ** |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
43 ** In addition, as a special exception, Nokia gives you certain additional |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
44 ** rights. These rights are described in the Nokia Qt LGPL Exception |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
45 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
46 ** |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
47 ** GNU General Public License Usage |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
48 ** Alternatively, this file may be used under the terms of the GNU |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
49 ** General Public License version 3.0 as published by the Free Software |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
50 ** Foundation and appearing in the file LICENSE.GPL included in the |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
51 ** packaging of this file. Please review the following information to |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
52 ** ensure the GNU General Public License version 3.0 requirements will be |
24893
a3eb0d746042
doc: use canonical https URLs for all external gnu.org references
Mike Miller <mtmiller@octave.org>
parents:
24716
diff
changeset
|
53 ** met: https://www.gnu.org/copyleft/gpl.html. |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
54 ** |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
55 ** If you have questions regarding the use of this file, please contact |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
56 ** Nokia at qt-info@nokia.com. |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
57 ** $QT_END_LICENSE$ |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
58 ** |
20946 | 59 |
60 */ | |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
61 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21706
diff
changeset
|
62 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
63 # include "config.h" |
15286
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
64 #endif |
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
65 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21706
diff
changeset
|
66 #if defined (HAVE_QSCINTILLA) |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15368
diff
changeset
|
67 |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
68 #include <QCheckBox> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
69 #include <QCheckBox> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
70 #include <QDialogButtonBox> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
71 #include <QGridLayout> |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
72 #include <QIcon> |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
73 #include <QLabel> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
74 #include <QLineEdit> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
75 #include <QMessageBox> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
76 #include <QPushButton> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
77 #include <QVBoxLayout> |
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22169
diff
changeset
|
78 |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
79 #include "find-dialog.h" |
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
80 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
81 namespace octave |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
82 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
83 find_dialog::find_dialog (octave_qscintilla *edit_area, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
84 QList<QAction *> find_actions, QWidget *p) |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
85 : QDialog (p), m_in_sel (false), m_sel_beg (-1), m_sel_end (-1) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
86 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
87 setWindowTitle (tr ("Find and Replace")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
88 setWindowIcon (QIcon (":/actions/icons/find.png")); |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
89 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
90 _search_label = new QLabel (tr ("Find &what:")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
91 _search_line_edit = new QLineEdit; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
92 _search_label->setBuddy (_search_line_edit); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
93 _replace_label = new QLabel (tr ("Re&place with:")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
94 _replace_line_edit = new QLineEdit; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
95 _replace_label->setBuddy (_replace_line_edit); |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
96 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
97 _case_check_box = new QCheckBox (tr ("Match &case")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
98 _from_start_check_box = new QCheckBox (tr ("Search from &start")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
99 _wrap_check_box = new QCheckBox (tr ("&Wrap while searching")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
100 _wrap_check_box->setChecked (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
101 _find_next_button = new QPushButton (tr ("&Find Next")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
102 _find_prev_button = new QPushButton (tr ("Find &Previous")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
103 _replace_button = new QPushButton (tr ("&Replace")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
104 _replace_all_button = new QPushButton (tr ("Replace &All")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
105 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
106 _more_button = new QPushButton (tr ("&More...")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
107 _more_button->setCheckable (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
108 _more_button->setAutoDefault (false); |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
109 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
110 _button_box = new QDialogButtonBox (Qt::Vertical); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
111 _button_box->addButton (_find_next_button, QDialogButtonBox::ActionRole); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
112 _button_box->addButton (_find_prev_button, QDialogButtonBox::ActionRole); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
113 _button_box->addButton (_replace_button, QDialogButtonBox::ActionRole); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
114 _button_box->addButton (_replace_all_button, QDialogButtonBox::ActionRole); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
115 _button_box->addButton (_more_button, QDialogButtonBox::ActionRole); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
116 _button_box->addButton (QDialogButtonBox::Close); |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
117 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
118 _extension = new QWidget (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
119 _whole_words_check_box = new QCheckBox (tr ("&Whole words")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
120 _regex_check_box = new QCheckBox (tr ("Regular E&xpressions")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
121 _backward_check_box = new QCheckBox (tr ("Search &backward")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
122 _search_selection_check_box = new QCheckBox (tr ("Search se&lection")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
123 _search_selection_check_box->setCheckable (true); |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
124 if (edit_area) |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
125 _search_selection_check_box->setEnabled (edit_area->hasSelectedText ()); |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
126 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
127 _edit_area = edit_area; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
128 connect (_find_next_button, SIGNAL (clicked ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
129 this, SLOT (find_next ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
130 connect (_find_prev_button, SIGNAL (clicked ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
131 this, SLOT (find_prev ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
132 connect (_more_button, SIGNAL (toggled (bool)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
133 _extension, SLOT (setVisible (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
134 connect (_replace_button, SIGNAL (clicked ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
135 this, SLOT (replace ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
136 connect (_replace_all_button, SIGNAL (clicked ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
137 this, SLOT (replace_all ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
138 connect (_backward_check_box, SIGNAL (stateChanged (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
139 this, SLOT (handle_backward_search_changed (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
140 connect (_button_box, SIGNAL (rejected ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
141 this, SLOT (close ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
142 connect (_search_line_edit, SIGNAL (textChanged (QString)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
143 this, SLOT (handle_search_text_changed (QString))); |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
144 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
145 connect (_edit_area, SIGNAL (copyAvailable (bool)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
146 this, SLOT (handle_selection_changed (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
147 connect (_search_selection_check_box, SIGNAL (stateChanged (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
148 this, SLOT (handle_sel_search_changed (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
149 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
150 QVBoxLayout *extension_layout = new QVBoxLayout (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
151 extension_layout->setMargin (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
152 extension_layout->addWidget (_whole_words_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
153 extension_layout->addWidget (_backward_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
154 extension_layout->addWidget (_search_selection_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
155 _extension->setLayout (extension_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
156 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
157 QGridLayout *top_left_layout = new QGridLayout; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
158 top_left_layout->addWidget (_search_label, 1, 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
159 top_left_layout->addWidget (_search_line_edit, 1, 2); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
160 top_left_layout->addWidget (_replace_label, 2, 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
161 top_left_layout->addWidget (_replace_line_edit, 2, 2); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
162 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
163 QVBoxLayout *left_layout = new QVBoxLayout; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
164 left_layout->addLayout (top_left_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
165 left_layout->insertStretch (1, 5); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
166 left_layout->addWidget (_case_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
167 left_layout->addWidget (_from_start_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
168 left_layout->addWidget (_wrap_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
169 left_layout->addWidget (_regex_check_box); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
170 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
171 QGridLayout *main_layout = new QGridLayout; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
172 main_layout->setSizeConstraint (QLayout::SetFixedSize); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
173 main_layout->addLayout (left_layout, 0, 0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
174 main_layout->addWidget (_button_box, 0, 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
175 main_layout->addWidget (_extension, 1, 0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
176 setLayout (main_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
177 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
178 _extension->hide (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
179 _find_next_button->setDefault (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
180 _find_result_available = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
181 _rep_all = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
182 _rep_active = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
183 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
184 // set the actions |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
185 addActions (find_actions); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
186 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
187 // move dialog to side of the parent if there is room on the desktop to do so. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
188 int xp = p->x () +20; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
189 int yp = p->y () + p->frameGeometry ().height () - sizeHint ().height () -20; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
190 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
191 if (yp < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
192 yp = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
193 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
194 move (xp, yp); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
195 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
196 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
197 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
198 // set text of "search from start" depending on backward search |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
199 void find_dialog::handle_backward_search_changed (int backward) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
200 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
201 if (backward) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
202 _from_start_check_box->setText (tr ("Search from end")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
203 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
204 _from_start_check_box->setText (tr ("Search from start")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
205 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
206 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
207 // search text has changed: reset the search |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
208 void find_dialog::handle_search_text_changed (QString) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
209 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
210 if (_search_selection_check_box->isChecked ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
211 _find_result_available = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
212 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
213 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
214 void find_dialog::handle_sel_search_changed (int selected) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
215 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
216 _from_start_check_box->setEnabled (! selected); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
217 _find_result_available = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
218 } |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
219 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
220 void find_dialog::handle_selection_changed (bool has_selected) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
221 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
222 if (_rep_active) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
223 return; |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
224 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
225 _search_selection_check_box->setEnabled (has_selected); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
226 _find_result_available = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
227 } |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
228 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
229 // initialize search text with selected text if this is in one single line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
230 void find_dialog::init_search_text (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
231 { |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
232 if (_edit_area && _edit_area->hasSelectedText ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
233 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
234 int lbeg, lend, cbeg, cend; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
235 _edit_area->getSelection (&lbeg,&cbeg,&lend,&cend); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
236 if (lbeg == lend) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
237 _search_line_edit->setText (_edit_area->selectedText ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
238 } |
20445
d3f39abe119b
GUI-Find: keep focus on Find What and select all text when dialog opens
Rafael Monteiro <rafaelgomesmonteiro@gmail.com>
parents:
20181
diff
changeset
|
239 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
240 // set focus to "Find what" and select all text |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
241 _search_line_edit->setFocus (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
242 _search_line_edit->selectAll (); |
21706
cce4eb3f6f7c
Prevent find dialog defaulting to "replace all" (bug #47561).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
243 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
244 // Default to "find" next time. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
245 // Otherwise, it defaults to the last action, which may be "replace all". |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
246 _find_next_button->setDefault (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
247 } |
15988
38348a6c3db0
gui: initialize search text in the find dialog with selected text in editor file
Torsten <ttl@justmail.de>
parents:
15873
diff
changeset
|
248 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
249 void find_dialog::find_next (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
250 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
251 find (! _backward_check_box->isChecked ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
252 } |
15988
38348a6c3db0
gui: initialize search text in the find dialog with selected text in editor file
Torsten <ttl@justmail.de>
parents:
15873
diff
changeset
|
253 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
254 void find_dialog::find_prev (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
255 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
256 find (_backward_check_box->isChecked ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
257 } |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
258 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
259 void find_dialog::find (bool forward) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
260 { |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
261 if (! _edit_area) |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
262 return; |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
263 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
264 // line adn col: -1 means search starts at current position |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
265 int line = -1, col = -1; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
266 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
267 bool do_wrap = _wrap_check_box->isChecked (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
268 bool do_forward = forward; |
16511
eee1b78d031f
gui: fix backward search in find dialog
Torsten <ttl@justmail.de>
parents:
15988
diff
changeset
|
269 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
270 // Initialize the selection begin and end if it is the first search |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
271 if (! _find_result_available) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
272 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
273 if (_search_selection_check_box->isChecked () |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
274 && _edit_area->hasSelectedText ()) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
275 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
276 int l1, c1, l2, c2; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
277 _edit_area->getSelection (&l1, &c1, &l2, &c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
278 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
279 // Store the position of the selection |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
280 m_sel_beg = _edit_area->positionFromLineIndex (l1, c1); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
281 m_sel_end = _edit_area->positionFromLineIndex (l2, c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
282 m_in_sel = true; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
283 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
284 else |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
285 m_in_sel = false; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
286 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
287 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
288 // Get the correct line/col for beginning the search |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
289 if (_rep_all) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
290 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
291 // Replace All |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
292 if (_rep_all == 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
293 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
294 // Start at the beginning of file/sel if it is the first try |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
295 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
296 _edit_area->lineIndexFromPosition (m_sel_beg, &line, &col); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
297 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
298 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
299 line = 0; |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
300 col = 0; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
301 } |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
302 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
303 do_wrap = false; // Never wrap when replacing all |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
304 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
305 else |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
306 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
307 // Normal search (not replace all): calculate start position of |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
308 // search (in file or selection) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
309 if (_from_start_check_box->isChecked () |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
310 || (m_in_sel && (! _find_result_available))) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
311 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
312 // From the beginning or the end of file/sel |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
313 if (do_forward) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
314 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
315 // From the beginning |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
316 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
317 _edit_area->lineIndexFromPosition (m_sel_beg, &line, &col); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
318 else |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
319 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
320 line = 0; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
321 col = 0; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
322 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
323 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
324 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
325 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
326 // From the end |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
327 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
328 _edit_area->lineIndexFromPosition (m_sel_end, &line, &col); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
329 else |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
330 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
331 line = _edit_area->lines () - 1; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
332 col = _edit_area->text (line).length () - 1; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
333 if (col == -1) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
334 col = 0; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
335 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
336 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
337 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
338 else if (! do_forward) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
339 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
340 // Start from where the cursor is. Fix QScintilla's cursor |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
341 // positioning |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
342 _edit_area->getCursorPosition (&line,&col); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
343 if (_find_result_available && _edit_area->hasSelectedText ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
344 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
345 int currpos = _edit_area->positionFromLineIndex (line,col); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
346 currpos -= (_search_line_edit->text ().length ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
347 if (currpos < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
348 currpos = 0; |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
349 _edit_area->lineIndexFromPosition (currpos, &line, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
350 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
351 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
352 } |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
353 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
354 // Do the search |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
355 _find_result_available = _edit_area->findFirst ( |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
356 _search_line_edit->text (), |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
357 _regex_check_box->isChecked (), |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
358 _case_check_box->isChecked (), |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
359 _whole_words_check_box->isChecked (), |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
360 do_wrap, |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
361 do_forward, |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
362 line,col, |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
363 true |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
364 #if defined (HAVE_QSCI_VERSION_2_6_0) |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
365 , true |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
366 #endif |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
367 ); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
368 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
369 if (_find_result_available) |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
370 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
371 // Search successful: reset search-from-start box and check for |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
372 // the current selection |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
373 _from_start_check_box->setChecked (0); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
374 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
375 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
376 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
377 _edit_area->getCursorPosition (&line,&col); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
378 int pos = _edit_area->positionFromLineIndex (line, col); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
379 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
380 int l1, c1, l2, c2; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
381 _edit_area->lineIndexFromPosition (m_sel_beg, &l1, &c1); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
382 _edit_area->lineIndexFromPosition (m_sel_end, &l2, &c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
383 _edit_area->show_selection_markers (l1, c1, l2, c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
384 |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
385 // Check if new start position is still wihtin the selection |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
386 _find_result_available = pos >= m_sel_beg && pos <= m_sel_end; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
387 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
388 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
389 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
390 // No more search hits |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
391 if (! _find_result_available) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
392 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
393 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
394 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
395 // Restore real selection and remove marker for selection |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
396 int l1, c1, l2, c2; |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
397 _edit_area->lineIndexFromPosition (m_sel_beg, &l1, &c1); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
398 _edit_area->lineIndexFromPosition (m_sel_end, &l2, &c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
399 _edit_area->setSelection (l1, c1, l2, c2); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
400 _edit_area->clear_selection_markers (); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
401 } |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
402 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
403 // Display message if not replace all |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
404 if (! _rep_all) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
405 no_matches_message (); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
406 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
407 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
408 } |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
409 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
410 void find_dialog::do_replace (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
411 { |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
412 if (_edit_area) |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
413 { |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
414 _rep_active = true; // changes in selection not made by the user |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
415 |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
416 _edit_area->replace (_replace_line_edit->text ()); |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
417 if (m_in_sel) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
418 { |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
419 // Update the length of the selection |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
420 m_sel_end = m_sel_end |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
421 - _search_line_edit->text ().toUtf8 ().size () |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
422 + _replace_line_edit->text ().toUtf8 ().size (); |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
423 } |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
424 |
26454
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
425 _rep_active = false; |
aced09cc1721
fix utilize pointer before verifying in find dialog (bug #55347)
Torsten <mttl@mailbox.org>
parents:
26376
diff
changeset
|
426 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
427 } |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
428 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
429 void find_dialog::replace (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
430 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
431 if (_edit_area) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
432 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27127
diff
changeset
|
433 // Do the replace if we have selected text |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
434 if (_find_result_available && _edit_area->hasSelectedText ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
435 do_replace (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
436 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
437 find_next (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
438 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
439 } |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
440 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
441 void find_dialog::replace_all (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
442 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
443 int line, col; |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
444 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
445 if (_edit_area) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
446 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
447 _edit_area->getCursorPosition (&line,&col); |
15177
d52bac6b9813
find-dialog.{h,cc}: Get rid of DOS newlines
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15105
diff
changeset
|
448 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
449 _rep_all = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
450 find_next (); // find first occurence (forward) |
27127
8854d65e3bcc
undo a complete replace all action in the editor (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26454
diff
changeset
|
451 |
8854d65e3bcc
undo a complete replace all action in the editor (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26454
diff
changeset
|
452 _edit_area->beginUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
453 while (_find_result_available) // while search string is found |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
454 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
455 do_replace (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
456 _rep_all++; // inc counter |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
457 find_next (); // find next |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
458 } |
27127
8854d65e3bcc
undo a complete replace all action in the editor (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26454
diff
changeset
|
459 _edit_area->endUndoAction (); |
18184
5f7f58866922
fix search and replace all in find dialog (bug #41051)
Torsten <ttl@justmail.de>
parents:
17790
diff
changeset
|
460 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
461 QMessageBox msg_box (QMessageBox::Information, tr ("Replace Result"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
462 tr ("%1 items replaced").arg (_rep_all-1), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
463 QMessageBox::Ok, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
464 msg_box.exec (); |
18184
5f7f58866922
fix search and replace all in find dialog (bug #41051)
Torsten <ttl@justmail.de>
parents:
17790
diff
changeset
|
465 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
466 _rep_all = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
467 _find_result_available = false; |
18854
0a66861d8069
implementation of search in selection in gui editor (bbug #41196)
Torsten <ttl@justmail.de>
parents:
18283
diff
changeset
|
468 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
469 if (! _search_selection_check_box->isChecked ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
470 _edit_area->setCursorPosition (line,col); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
471 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
472 } |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15368
diff
changeset
|
473 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
474 void find_dialog::no_matches_message (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
475 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
476 QMessageBox msg_box (QMessageBox::Information, tr ("Find Result"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
477 tr ("No more matches found"), QMessageBox::Ok, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
478 msg_box.exec (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
479 } |
16520
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
480 } |
086b5e81245b
find-dialog: find previous button and initial position next to the editor
Torsten <ttl@justmail.de>
parents:
16516
diff
changeset
|
481 |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15368
diff
changeset
|
482 #endif |