diff 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
line wrap: on
line diff
--- a/gui/src/octave-adapter/octave-event.h	Sat Jun 02 16:38:36 2012 +0200
+++ b/gui/src/octave-adapter/octave-event.h	Mon Jun 04 01:42:58 2012 +0200
@@ -18,6 +18,9 @@
 #ifndef OCTAVEEVENT_H
 #define OCTAVEEVENT_H
 
+#include <string>
+#include "octave-event-observer.h"
+
 /**
   * \class octave_event
   * \brief Base class for an octave event.
@@ -25,15 +28,58 @@
 class octave_event
 {
   public:
-    octave_event ()
+    enum event_type
     {
+      exit_event,
+      change_directory_event
+    };
 
-    }
+    octave_event (const octave_event_observer& o)
+      : _octave_event_observer (o)
+    { }
 
     virtual ~octave_event ()
-    {
+    { }
+
+    virtual event_type get_event_type () const = 0;
+
+    void accept ()
+    { _octave_event_observer.event_accepted (this); }
+
+    void ignore ()
+    { _octave_event_observer.event_ignored (this); }
+
+  private:
+    const octave_event_observer& _octave_event_observer;
+};
+
+class octave_exit_event : public octave_event
+{
+  public:
+    octave_exit_event (const octave_event_observer& o)
+      : octave_event (o)
+    { }
 
-    }
+    event_type get_event_type () const
+    { return octave_event::exit_event; }
+};
+
+class octave_change_directory_event : public octave_event
+{
+  public:
+    octave_change_directory_event (const octave_event_observer& o,
+                                   std::string directory)
+      : octave_event (o)
+    { _directory = directory; }
+
+    event_type get_event_type () const
+    { return octave_event::change_directory_event; }
+
+    std::string get_directory () const
+    { return _directory; }
+
+  private:
+    std::string _directory;
 };
 
 #endif // OCTAVEEVENT_H