Mercurial > hg > octave-lyh
annotate gui/src/octave-adapter/octave-link.h @ 15080:4c4f2fb07a50 gui
Added find functionality in editor by to.lil.
* find.png: Added find icon.
* find-dialog.cc: Added find dialog.
* find-dialog.h: Added find dialog.
* file-editor-tab.cc: Integrated find dialog.
* file-editor-tab.h: Added new method for find.
* file-editor.cc: Added new actions, menus and toolbuttons.
* file-editor.h: Added new method/slot for find.
author | Jacob Dawid <jacob.dawid@gmail.com> |
---|---|
date | Thu, 02 Aug 2012 11:08:45 +0200 |
parents | 6889217b9d78 |
children | 9e62d5a3a45e |
rev | line source |
---|---|
13674
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
diff
changeset
|
1 /* OctaveGUI - A graphical user interface for Octave |
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
diff
changeset
|
2 * Copyright (C) 2011 John P. Swensen, Jacob Dawid (jacob.dawid@googlemail.com) |
13501 | 3 * |
13674
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
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:
13683
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:
13595
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:
13595
diff
changeset
|
7 * License, or (at your option) any later version. |
13501 | 8 * |
13674
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
diff
changeset
|
9 * This program is distributed in the hope that it will be useful, |
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
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:
13683
diff
changeset
|
12 * GNU General Public License for more details. |
13501 | 13 * |
14290
faece6b2ab90
Corrected license headers in all files to GPL.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13683
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:
13595
diff
changeset
|
15 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
c0e66d6e3dc8
Updated license headers and moved to AGPLv3.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13595
diff
changeset
|
16 */ |
13501 | 17 |
18 #ifndef OCTAVELINK_H | |
19 #define OCTAVELINK_H | |
20 | |
21 // Octave includes | |
22 #undef PACKAGE_BUGREPORT | |
23 #undef PACKAGE_NAME | |
24 #undef PACKAGE_STRING | |
25 #undef PACKAGE_TARNAME | |
26 #undef PACKAGE_VERSION | |
27 #undef PACKAGE_URL | |
15053
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
28 #include "config.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
29 #include "cmd-edit.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
30 #include "error.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
31 #include "file-io.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
32 #include "input.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
33 #include "lex.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
34 #include "load-path.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
35 #include "octave.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
36 #include "oct-hist.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
37 #include "oct-map.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
38 #include "oct-obj.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
39 #include "ops.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
40 #include "ov.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
41 #include "ov-usr-fcn.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
42 #include "symtab.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
43 #include "pt.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
44 #include "pt-eval.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
45 #include "config.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
46 #include "Range.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
47 #include "toplev.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
48 #include "procstream.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
49 #include "sighandlers.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
50 #include "debug.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
51 #include "sysdep.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
52 #include "ov.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
53 #include "unwind-prot.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
54 #include "utils.h" |
6889217b9d78
Modified GUI sources so they can be build inside the source tree, without installing octave first.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15041
diff
changeset
|
55 #include "variables.h" |
14721
ec76264adca9
Removed last bits of Qt from octave_link.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
56 #include "oct-mutex.h" |
15080
4c4f2fb07a50
Added find functionality in editor by to.lil.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
15053
diff
changeset
|
57 #include "profiler.h" |
13501 | 58 |
59 // Standard includes | |
60 #include <iostream> | |
61 #include <string> | |
62 #include <vector> | |
63 #include <readline/readline.h> | |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
64 #include <queue> |
14754
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
65 #include <time.h> |
13501 | 66 |
14707
674740c44c09
Changed various files to matche file naming conventions.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14703
diff
changeset
|
67 #include "octave-main-thread.h" |
14714
4ff6c21c18c4
Solved crash on close by ignoring close event and instead executing exit in the terminal.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14713
diff
changeset
|
68 #include "octave-event.h" |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
69 #include "octave-event-observer.h" |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
70 #include "octave-event-listener.h" |
13541
b48ac9ad8de0
Highly improved separation of model and view classes.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13522
diff
changeset
|
71 |
13501 | 72 /** |
73 * \class OctaveLink | |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
74 * \brief Provides threadsafe access to octave. |
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
75 * \author Jacob Dawid |
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
76 * This class is a wrapper around octave and provides threadsafety by |
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
77 * buffering access operations to octave and executing them in the readline |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
78 * event hook, which lives in the octave thread. |
13501 | 79 */ |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
80 class octave_link : public octave_event_observer |
13501 | 81 { |
82 public: | |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
83 /** Provides a way to access the unique octave_link object. */ |
14721
ec76264adca9
Removed last bits of Qt from octave_link.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
84 static octave_link * instance () { return &_singleton; } |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
85 |
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
86 /** Starts octave. */ |
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
87 void launch_octave (); |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
88 void register_event_listener (octave_event_listener *oel); |
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
89 |
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
90 void generate_events (); |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
91 void process_events (); |
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
92 void post_event (octave_event *e); |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
93 void event_accepted (octave_event *e); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
94 void event_reject (octave_event *e); |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
95 |
14721
ec76264adca9
Removed last bits of Qt from octave_link.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
96 void about_to_exit (); |
14754
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
97 |
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
98 void entered_readline_hook (); |
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
99 void finished_readline_hook (); |
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
100 |
14804
a565c560e654
Replaced a lot of terminal interaction with events: Clearing, loading and saving workspace, running a file. Default location for saving a new file is now the current working directory. Fixed bad settings with a fresh installation of the GUI by providing a file with default settings and installing it when appropriate.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14754
diff
changeset
|
101 std::string get_last_working_directory (); |
a565c560e654
Replaced a lot of terminal interaction with events: Clearing, loading and saving workspace, running a file. Default location for saving a new file is now the current working directory. Fixed bad settings with a fresh installation of the GUI by providing a file with default settings and installing it when appropriate.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14754
diff
changeset
|
102 |
13501 | 103 private: |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
104 /** Singleton. */ |
14709
f50591409306
Started to rename class names and methods from camel case to underscore-
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14707
diff
changeset
|
105 octave_link (); |
f50591409306
Started to rename class names and methods from camel case to underscore-
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14707
diff
changeset
|
106 ~octave_link (); |
13501 | 107 |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
108 octave_event_listener *_octave_event_listener; |
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
109 |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
110 /** Thread running octave_main. */ |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
111 octave_main_thread *_octave_main_thread; |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
112 |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
113 /** Semaphore to lock access to the event queue. */ |
14721
ec76264adca9
Removed last bits of Qt from octave_link.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
114 octave_mutex *_event_queue_mutex; |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
115 |
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
116 /** Buffer for queueing events until they will be processed. */ |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
117 std::queue <octave_event *> _event_queue; |
14718
3df7ef0080c7
Added event based processing and implement exit and change directory event.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14714
diff
changeset
|
118 |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
119 /** Stores the last known current working directory of octave. */ |
14719
89c64340e9ab
Extended event based communication model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14718
diff
changeset
|
120 std::string _last_working_directory; |
14726
e94a54ee0f46
Added debug events, debug mode detection and fixed compiling error.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14722
diff
changeset
|
121 bool _debugging_mode_active; |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
122 |
14754
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
123 /** Semaphore to lock access to the performance information. */ |
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
124 octave_mutex *_performance_information_mutex; |
626a8ff2fe8c
The GUI now shows performance information in the status bar of the GUI (ie. how much overhead it causes in the octave thread compares to the terminal version).
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14726
diff
changeset
|
125 |
14713
565ddd85565e
Added comments for the octave-adapter module.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
126 /** Unique instance. Singelton! */ |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
127 static octave_link _singleton; |
13501 | 128 }; |
129 #endif // OCTAVELINK_H |