Fix session-open after selecting new, template, then back
[ardour.git] / gtk2_ardour / export_report.h
index a509682808ec745e7ba0477da471381a9076f3f6..af91ee2dbe65e2c5436ee1e200a13a91b412255a 100644 (file)
@@ -46,12 +46,12 @@ protected:
 
        virtual void overlay (cairo_t* cr, cairo_rectangle_t* r) {}
 
-       virtual void render (cairo_t* cr, cairo_rectangle_t* r)
+       virtual void render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_t* r)
        {
-               cairo_rectangle (cr, r->x, r->y, r->width, r->height);
-               cairo_clip (cr);
-               background (cr, r);
-               overlay (cr, r);
+               ctx->rectangle (r->x, r->y, r->width, r->height);
+               ctx->clip ();
+               background (ctx->cobj(), r);
+               overlay (ctx->cobj(), r);
        }
 
        Cairo::RefPtr<Cairo::ImageSurface> _surface;
@@ -147,14 +147,12 @@ public:
        {
        }
 
-       void set_logscale (Gtk::ToggleButton *b) {
-               bool en = b->get_active ();
+       void set_logscale (bool en) {
                _logscale = en;
                set_dirty ();
        }
 
-       void set_rectified (Gtk::ToggleButton *b) {
-               bool en = b->get_active ();
+       void set_rectified (bool en) {
                _rectified = en;
                set_dirty ();
        }
@@ -188,9 +186,15 @@ class ExportReport : public ArdourDialog
 public:
        typedef boost::shared_ptr<ARDOUR::ExportStatus> StatusPtr;
        ExportReport (ARDOUR::Session*, StatusPtr);
+       ExportReport (const std::string & title, const ARDOUR::AnalysisResults & ar);
        int run ();
 
+       void on_response (int response_id) {
+               Gtk::Dialog::on_response (response_id);
+       }
+
 private:
+       void init (const ARDOUR::AnalysisResults &, bool);
        void draw_waveform (Cairo::RefPtr<Cairo::ImageSurface>& wave,
                        ARDOUR::ExportAnalysisPtr, uint32_t, int, size_t, int, int, bool, bool);
 
@@ -202,8 +206,9 @@ private:
        void audition_seek (int, float);
        void audition_progress (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
        void on_switch_page (GtkNotebookPage*, guint page_num);
+       void on_logscale_toggled (Gtk::ToggleButton*);
+       void on_rectivied_toggled (Gtk::ToggleButton*);
 
-       StatusPtr        status;
        Gtk::Notebook    pages;
        ARDOUR::Session* _session;
        Gtk::Button*     stop_btn;
@@ -219,6 +224,7 @@ private:
 
        std::map<int, std::list<CimgPlayheadArea*> > timeline;
        std::map<int, AuditionInfo> files;
+       std::list<CimgWaveArea*> waves;
 
        int _audition_num;
        int _page_num;