comparison gui/src/octave-adapter/octave-event.h @ 14718:3df7ef0080c7 gui

Added event based processing and implement exit and change directory event. * octave-event-observer.h: Implements observer part for the observer pattern. * main-window.cc: Posting events instead of emulating keypresses. * octave-event.h: Added new event types. * octave-link: Subclassed octave_event_observer and implemented events. * src.pro: Added file for tracking.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Mon, 04 Jun 2012 01:42:58 +0200
parents 4ff6c21c18c4
children 89c64340e9ab
comparison
equal deleted inserted replaced
14716:572a707408b2 14718:3df7ef0080c7
16 */ 16 */
17 17
18 #ifndef OCTAVEEVENT_H 18 #ifndef OCTAVEEVENT_H
19 #define OCTAVEEVENT_H 19 #define OCTAVEEVENT_H
20 20
21 #include <string>
22 #include "octave-event-observer.h"
23
21 /** 24 /**
22 * \class octave_event 25 * \class octave_event
23 * \brief Base class for an octave event. 26 * \brief Base class for an octave event.
24 */ 27 */
25 class octave_event 28 class octave_event
26 { 29 {
27 public: 30 public:
28 octave_event () 31 enum event_type
29 { 32 {
33 exit_event,
34 change_directory_event
35 };
30 36
31 } 37 octave_event (const octave_event_observer& o)
38 : _octave_event_observer (o)
39 { }
32 40
33 virtual ~octave_event () 41 virtual ~octave_event ()
34 { 42 { }
35 43
36 } 44 virtual event_type get_event_type () const = 0;
45
46 void accept ()
47 { _octave_event_observer.event_accepted (this); }
48
49 void ignore ()
50 { _octave_event_observer.event_ignored (this); }
51
52 private:
53 const octave_event_observer& _octave_event_observer;
54 };
55
56 class octave_exit_event : public octave_event
57 {
58 public:
59 octave_exit_event (const octave_event_observer& o)
60 : octave_event (o)
61 { }
62
63 event_type get_event_type () const
64 { return octave_event::exit_event; }
65 };
66
67 class octave_change_directory_event : public octave_event
68 {
69 public:
70 octave_change_directory_event (const octave_event_observer& o,
71 std::string directory)
72 : octave_event (o)
73 { _directory = directory; }
74
75 event_type get_event_type () const
76 { return octave_event::change_directory_event; }
77
78 std::string get_directory () const
79 { return _directory; }
80
81 private:
82 std::string _directory;
37 }; 83 };
38 84
39 #endif // OCTAVEEVENT_H 85 #endif // OCTAVEEVENT_H