half-fix logic issue with solo-isolate controls
[ardour.git] / gtk2_ardour / marker.h
index a379f010c96a9c34e3ff941d620db16e39c9be92..e9ff0501edc1fdc28ac908953d284355f8135978 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2001 Paul Davis 
+    Copyright (C) 2001 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #include <glib.h>
 
 #include <libgnomecanvasmm/pixbuf.h>
+#include <sigc++/signal.h>
 
 #include "ardour/ardour.h"
-#include "pbd/destructible.h"
+#include "pbd/signals.h"
 
 #include "canvas.h"
 
@@ -37,15 +38,15 @@ namespace ARDOUR {
 
 class PublicEditor;
 
-class Marker : public PBD::Destructible
+class Marker : public sigc::trackable
 {
   public:
        enum Type {
                Mark,
                Tempo,
                Meter,
-               Start,
-               End,
+               Start, ///< session start
+               End,   ///< session end
                LoopStart,
                LoopEnd,
                PunchIn,
@@ -53,11 +54,13 @@ class Marker : public PBD::Destructible
        };
 
 
-       Marker (PublicEditor& editor, ArdourCanvas::Group& parent, guint32 rgba, const std::string& text, Type, 
+       Marker (PublicEditor& editor, ArdourCanvas::Group& parent, guint32 rgba, const std::string& text, Type,
                nframes_t frame = 0, bool handle_events = true);
 
        virtual ~Marker ();
 
+       static PBD::Signal1<void,Marker*> CatchDeletion;
+
        ArdourCanvas::Item& the_item() const;
 
        void add_line (ArdourCanvas::Group*, double y_origin, double initial_height);
@@ -68,12 +71,12 @@ class Marker : public PBD::Destructible
        void set_position (nframes64_t);
        void set_name (const std::string&);
        void set_color_rgba (uint32_t rgba);
-       
+
        nframes64_t position() const { return frame_position; }
 
        ArdourCanvas::Group * get_parent() { return _parent; }
        void reparent (ArdourCanvas::Group & parent);
-       
+
        void hide ();
        void show ();
 
@@ -97,7 +100,7 @@ class Marker : public PBD::Destructible
        unsigned char shift; /* should be double, but its always small and integral */
        Type          _type;
        int           name_height;
-       
+
        void reposition ();
 };