[med-svn] [aghermann] 43/85: split sf/montage_cb.cc

andrei zavada hmmr-guest at alioth.debian.org
Thu Sep 26 23:46:29 UTC 2013


This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository aghermann.

commit 944228ec3a1f25d349301478d3760c1143911a84
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Sun Sep 15 02:52:47 2013 +0300

    split sf/montage_cb.cc
---
 upstream/src/aghermann/ui/sf/Makefile.am           |    1 +
 .../ui/sf/{montage_cb.cc => montage-menus_cb.cc}   |  509 +-----------
 upstream/src/aghermann/ui/sf/montage_cb.cc         |  862 --------------------
 3 files changed, 3 insertions(+), 1369 deletions(-)

diff --git a/upstream/src/aghermann/ui/sf/Makefile.am b/upstream/src/aghermann/ui/sf/Makefile.am
index 841d52c..7737f4a 100644
--- a/upstream/src/aghermann/ui/sf/Makefile.am
+++ b/upstream/src/aghermann/ui/sf/Makefile.am
@@ -20,6 +20,7 @@ liba_a_SOURCES := \
 	montage-overlays.cc \
 	montage.cc \
 	montage_cb.cc \
+	montage-menus_cb.cc \
 	sf.cc \
 	sf.hh \
 	sf_cb.cc \
diff --git a/upstream/src/aghermann/ui/sf/montage_cb.cc b/upstream/src/aghermann/ui/sf/montage-menus_cb.cc
similarity index 57%
copy from upstream/src/aghermann/ui/sf/montage_cb.cc
copy to upstream/src/aghermann/ui/sf/montage-menus_cb.cc
index dcf8310..579d359 100644
--- a/upstream/src/aghermann/ui/sf/montage_cb.cc
+++ b/upstream/src/aghermann/ui/sf/montage-menus_cb.cc
@@ -1,17 +1,14 @@
 /*
- *       File name:  aghermann/ui/sf/montage_cb.cc
+ *       File name:  aghermann/ui/sf/montage-menus_cb.cc
  *         Project:  Aghermann
  *          Author:  Andrei Zavada <johnhommer at gmail.com>
  * Initial version:  2011-07-02
  *
- *         Purpose:  scoring facility: montage drawing area callbacks
+ *         Purpose:  scoring facility: montage menu callbacks
  *
  *         License:  GPL
  */
 
-#include <sys/time.h>
-#include <cairo/cairo.h>
-
 #include "aghermann/ui/misc.hh"
 #include "aghermann/ui/mw/mw.hh"
 #include "channel.hh"
@@ -31,508 +28,6 @@ using agh::str::homedir2tilda;
 
 extern "C" {
 
-gboolean
-daSFMontage_configure_event_cb(
-        GtkWidget*,
-        GdkEventConfigure *event,
-        const gpointer userdata)
-{
-         if ( event->type == GDK_CONFIGURE ) {
-                 auto& SF = *(SScoringFacility*)userdata;
-                 SF.da_wd = event->width;
-                 // don't care about height: it's our own calculation
-         }
-         return FALSE;
-}
-
-
-
-
-// -------------------- Page
-
-gboolean
-daSFMontage_draw_cb(
-        GtkWidget*,
-        cairo_t *cr,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.draw_montage( cr);
-        return TRUE;
-}
-
-
-namespace {
-void
-radio_item_setter( GtkWidget *i, const gpointer u)
-{
-        const char *label = gtk_menu_item_get_label( (GtkMenuItem*)i);
-        if ( strcmp(label, (const char*)u) == 0 )
-                gtk_check_menu_item_set_active( (GtkCheckMenuItem*)i, TRUE);
-}
-} // namespace
-
-
-gboolean
-daSFMontage_button_press_event_cb(
-        GtkWidget *wid,
-        GdkEventButton *event,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        if ( SF.mode == SScoringFacility::TMode::showing_ics ) {
-                if ( SF.ica_components.size() == 0 )
-                        return TRUE;
-
-                SF.using_ic = SF.ic_near( event->y);
-
-                if ( event->button == 1 &&
-                     (SF.remix_mode == SScoringFacility::TICARemixMode::punch ||
-                      SF.remix_mode == SScoringFacility::TICARemixMode::zero) ) {
-                        SF.ica_map[SF.using_ic].m =
-                                (SF.ica_map[SF.using_ic].m == -1) ? 0 : -1;
-                        gtk_widget_queue_draw( wid);
-                } else if ( SF.remix_mode == SScoringFacility::TICARemixMode::map ) {
-                        const char *mapped =
-                                (SF.ica_map[SF.using_ic].m != -1)
-                                ? SF.channel_by_idx( SF.ica_map[SF.using_ic].m) . name()
-                                : SScoringFacility::ica_unmapped_menu_item_label;
-                        SF.suppress_redraw = true;
-                        gtk_container_foreach(
-                                (GtkContainer*)SF.iiSFICAPage,
-                                radio_item_setter, (gpointer)mapped);
-                        SF.suppress_redraw = false;
-                        gtk_menu_popup( SF.iiSFICAPage,
-                                        NULL, NULL, NULL, NULL, 3, event->time);
-                }
-                return TRUE;
-        }
-
-        if ( SF.mode == SScoringFacility::TMode::showing_remixed ) {
-                if ( SF.ica_components.size() == 0 )
-                        return TRUE;
-
-                SF.using_channel = SF.channel_near( event->y);
-                //SF.using_ic = SF.ic_of( SF.using_channel);
-
-                if ( event->button == 1 ) {
-                        SF.using_channel->apply_reconstituted =
-                                !SF.using_channel->apply_reconstituted;
-                        gtk_widget_queue_draw( wid);
-                }
-                return TRUE;
-        }
-
-        if ( SF.mode == SScoringFacility::TMode::shuffling_channels ) {
-                SF.mode = SScoringFacility::TMode::scoring;
-                return TRUE;
-        }
-
-        auto Ch = SF.using_channel = SF.channel_near( event->y);
-
-        if ( Ch->schannel().type() == sigfile::SChannel::TType::eeg &&
-             (Ch->draw_psd || Ch->draw_mc) && event->y > Ch->zeroy ) {
-                switch ( event->button ) {
-                case 1:
-                        if ( !(event->state & GDK_MODIFIER_MASK) )
-                                SF.set_cur_vpage( (event->x / SF.da_wd) * SF.total_vpages());
-                        // will eventually call set_cur_vpage(), which will do redraw
-                    break;
-                case 2:
-                        Ch->draw_psd_bands = !Ch->draw_psd_bands;
-                        gtk_widget_queue_draw( wid);
-                    break;
-                case 3:
-                        Ch->update_power_menu_items();
-                        gtk_menu_popup(
-                                SF.iiSFPower,
-                                NULL, NULL, NULL, NULL, 3, event->time);
-                    break;
-                }
-
-        } else if ( Ch->schannel().type() == sigfile::SChannel::TType::emg &&
-                    Ch->draw_emg && event->y > Ch->zeroy ) {
-                switch ( event->button ) {
-                case 1:
-                        SF.set_cur_vpage( (event->x / SF.da_wd) * SF.total_vpages());
-                    break;
-                default:
-                    break;
-                }
-
-        } else {
-                double cpos = SF.time_at_click( event->x);
-                bool in_selection =
-                        agh::alg::overlap(
-                                Ch->selection_start_time, Ch->selection_end_time,
-                                cpos, cpos);
-
-                switch ( event->button ) {
-                case 2:
-                        Ch->signal_display_scale =
-                                agh::alg::calibrate_display_scale(
-                                        Ch->draw_filtered_signal ? Ch->signal_filtered : Ch->signal_original,
-                                        SF.vpagesize() * Ch->samplerate() * min (Ch->crecording.total_pages(), (size_t)10),
-                                        SF.interchannel_gap / 2);
-                        if ( event->state & GDK_CONTROL_MASK )
-                                for ( auto& H : SF.channels )
-                                        H.signal_display_scale = Ch->signal_display_scale;
-
-                        gtk_widget_queue_draw( wid);
-                    break;
-
-                case 3:
-                        if ( (event->state & GDK_MOD1_MASK && SF.n_hidden > 0) ||
-                             !(SF.n_hidden < (int)SF.channels.size()) )
-                                gtk_menu_popup( SF.iiSFPageHidden,
-                                                NULL, NULL, NULL, NULL, 3, event->time);
-                        else {
-                                Ch->update_channel_menu_items( event->x);
-                                Ch->update_power_menu_items();
-                                gtk_menu_popup(
-                                        in_selection ? SF.iiSFPageSelection : SF.iiSFPage,
-                                        NULL, NULL, NULL, NULL, 3, event->time);
-                        }
-                    break;
-
-                case 1:
-                        if ( event->state & GDK_MOD1_MASK ) {
-                                if ( in_selection ) {
-                                        SF.moving_selection_handle_offset =
-                                                cpos - Ch->selection_start_time;
-                                        SF.mode = SScoringFacility::TMode::moving_selection;
-                                } else {
-                                        SF.event_y_when_shuffling = event->y;
-                                        SF.zeroy_before_shuffling = Ch->zeroy;
-                                        SF.mode = SScoringFacility::TMode::shuffling_channels;
-                                }
-                        } else {
-                                SF.mode = SScoringFacility::TMode::marking;
-                                Ch->marquee_mstart = Ch->marquee_mend = event->x;
-                        }
-                        gtk_widget_queue_draw( wid);
-                    break;
-                }
-        }
-        return TRUE;
-}
-
-
-
-namespace {
-inline double
-timeval_elapsed( const struct timeval &x, const struct timeval &y)
-{
-        return y.tv_sec - x.tv_sec
-                + 1e-6 * (y.tv_usec - x.tv_usec);
-}
-}
-
-gboolean
-daSFMontage_motion_notify_event_cb(
-        GtkWidget *wid,
-        GdkEventMotion *event,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.mode == SScoringFacility::TMode::showing_ics )
-                return TRUE;
-
-        static struct timeval last_page_flip = {0, 0};
-        if ( last_page_flip.tv_sec == 0 )
-                gettimeofday( &last_page_flip, NULL);
-
-        switch ( SF.mode ) {
-
-        case SScoringFacility::TMode::shuffling_channels:
-        {
-                SF.using_channel->zeroy = SF.zeroy_before_shuffling + (event->y - SF.event_y_when_shuffling);
-                gtk_widget_queue_draw( wid);
-        }
-        break;
-
-        case SScoringFacility::TMode::marking:
-        {
-                if ( SF.channel_near( event->y) != SF.using_channel ) // user has dragged too much vertically
-                        return TRUE;
-                SF.using_channel->marquee_mend = event->x;
-
-                struct timeval currently;
-                gettimeofday( &currently, NULL);
-                if ( (int)event->x > SF.da_wd && SF.cur_vpage() < SF.total_vpages()-1 ) {
-                        if ( timeval_elapsed( last_page_flip, currently) > .4 ) {
-                                // x (1+2a) = y
-                                SF.using_channel->marquee_mstart -= SF.da_wd / (1. + 2*SF.skirting_run_per1);
-                                SF.set_cur_vpage( SF.cur_vpage()+1);
-                                gettimeofday( &last_page_flip, NULL);
-                        }
-                } else if ( (int)event->x < 0 && SF.cur_vpage() > 0 ) {
-                        if ( timeval_elapsed( last_page_flip, currently) > .4 ) {
-                                SF.using_channel->marquee_mstart += SF.da_wd / (1. + 2*SF.skirting_run_per1);
-                                SF.set_cur_vpage( SF.cur_vpage()-1);
-                                gettimeofday( &last_page_flip, NULL);
-                        }
-                }
-
-                SF.using_channel->marquee_to_selection(); // to be sure, also do it on button_release
-                if ( event->state & GDK_SHIFT_MASK )
-                        for( auto &H : SF.channels )
-                                if ( &H != SF.using_channel ) {
-                                        H.marquee_mstart = SF.using_channel->marquee_mstart;
-                                        H.marquee_mend = event->x;
-                                        H.marquee_to_selection();
-                                }
-                gtk_widget_queue_draw( wid);
-        }
-        break;
-
-        case SScoringFacility::TMode::moving_selection:
-        {
-                auto    new_start_time = SF.time_at_click( event->x) - SF.moving_selection_handle_offset,
-                        new_end_time = new_start_time + (SF.using_channel->selection_end_time - SF.using_channel->selection_start_time);
-                auto& H = *SF.using_channel;
-                // reposition marquee
-                H.marquee_mstart =
-                        (new_start_time - SF.cur_xvpage_start()) / SF.xvpagesize() * SF.da_wd;
-                H.marquee_mend =
-                        (new_end_time - SF.cur_xvpage_start()) / SF.xvpagesize() * SF.da_wd;
-
-                H.marquee_to_selection(); // to be sure, also do it on button_release
-                H.put_selection( H.selection_start, H.selection_end);
-
-                gtk_widget_queue_draw( wid);
-        }
-        break;
-
-        default:
-        break;
-        }
-
-        if ( SF.draw_crosshair ) {
-                SF.crosshair_at = event->x;
-                SF.crosshair_at_time = SF.time_at_click( event->x);
-                gtk_widget_queue_draw( wid);
-        }
-
-        if ( SF.mode == SScoringFacility::TMode::scoring ) {
-                gtk_label_set_text(
-                        SF.lSFOverChannel,
-                        SF.channel_near( event->y) -> name());
-        } else
-                gtk_label_set_text( SF.lSFOverChannel, "");
-
-      // current pos
-        SF.draw_current_pos( event->x);
-
-        return TRUE;
-}
-
-
-gboolean
-daSFMontage_leave_notify_event_cb(
-        GtkWidget*,
-        GdkEventMotion*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        gtk_label_set_text( SF.lSFOverChannel, "");
-        SF.draw_current_pos( NAN);
-        return TRUE;
-}
-
-
-gboolean
-daSFMontage_button_release_event_cb(
-        GtkWidget *wid,
-        GdkEventButton *event,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.mode == SScoringFacility::TMode::showing_ics ||
-             SF.mode == SScoringFacility::TMode::showing_remixed )
-                return TRUE;
-
-        auto Ch = SF.using_channel;
-
-        if ( SF.channel_near( event->y) != SF.using_channel ) // user has dragged too much vertically
-                 return TRUE;
-
-        switch ( event->button ) {
-        case 1:
-                if ( SF.mode == SScoringFacility::TMode::marking ) {
-                        SF.mode = SScoringFacility::TMode::scoring;
-                        Ch->put_selection( Ch->selection_start, Ch->selection_end);
-                        Ch->selectively_enable_selection_menu_items();
-                        Ch->update_channel_menu_items( event->x);
-                        if ( fabs(SF.using_channel->marquee_mstart - SF.using_channel->marquee_mend) > 5 ) {
-                                gtk_menu_popup( SF.iiSFPageSelection,
-                                                NULL, NULL, NULL, NULL, 3, event->time);
-                        }
-                        gtk_widget_queue_draw( wid);
-
-                } else if ( Ch->schannel().type() == sigfile::SChannel::TType::eeg &&
-                            (Ch->draw_psd || Ch->draw_mc) && event->y > Ch->zeroy )
-                        SF.set_cur_vpage( (event->x / SF.da_wd) * SF.total_vpages());
-
-                else {
-                        SF.using_channel->marquee_to_selection();
-                        SF.mode = SScoringFacility::TMode::scoring;
-                        gtk_widget_queue_draw( wid);
-                }
-            break;
-        case 3:
-            break;
-        }
-
-        return TRUE;
-}
-
-
-
-
-
-gboolean
-daSFMontage_scroll_event_cb(
-        GtkWidget *wid,
-        GdkEventScroll *event,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto Ch = SF.using_channel = SF.channel_near( event->y);
-
-        if ( (event->state & GDK_MOD1_MASK) and
-             not (event->state & GDK_SHIFT_MASK) ) {
-                switch ( event->direction ) {
-                case GDK_SCROLL_UP:
-                        if ( SF.da_ht > (int)(SF.channels.size() - SF.n_hidden) * 20 ) {
-                                SF.expand_by_factor( (double)(SF.da_ht - 10)/ SF.da_ht);
-                                gtk_widget_queue_draw( wid);
-                        }
-                    break;
-                case GDK_SCROLL_DOWN:
-                        SF.expand_by_factor( (double)(SF.da_ht + 10) / SF.da_ht);
-                        gtk_widget_queue_draw( wid);
-                    break;
-                default:
-                    break;
-                }
-
-        } else if ( event->y > Ch->zeroy ) {
-                if ( event->state & GDK_SHIFT_MASK && Ch->draw_psd ) {
-                        switch ( event->direction ) {
-                        case GDK_SCROLL_DOWN:
-                                if ( Ch->draw_psd_bands ) {
-                                        if ( Ch->psd.focused_band > metrics::TBand::delta ) {
-                                                --Ch->psd.focused_band;
-                                                if ( Ch->autoscale_profile )
-                                                        Ch->update_profile_display_scales();
-                                                gtk_widget_queue_draw( wid);
-                                        }
-                                } else
-                                        if ( Ch->psd.from > 0 ) {
-                                                Ch->psd.from -= .5;
-                                                Ch->psd.upto -= .5;
-                                                Ch->get_psd_course();
-                                                if ( Ch->autoscale_profile )
-                                                        Ch->update_profile_display_scales();
-                                                gtk_widget_queue_draw( wid);
-                                        }
-                                break;
-                        case GDK_SCROLL_UP:
-                                if ( Ch->draw_psd_bands ) {
-                                        if ( Ch->psd.focused_band < Ch->psd.uppermost_band ) {
-                                                ++Ch->psd.focused_band;
-                                                if ( Ch->autoscale_profile )
-                                                        Ch->update_profile_display_scales();
-                                                gtk_widget_queue_draw( wid);
-                                        }
-                                } else {
-                                        auto& R = Ch->crecording;
-                                        if ( Ch->psd.upto < R.psd_profile.Pp.binsize * R.psd_profile.bins() ) {
-                                                Ch->psd.from += .5;
-                                                Ch->psd.upto += .5;
-                                                Ch->get_psd_course();
-                                                if ( Ch->autoscale_profile )
-                                                        Ch->update_profile_display_scales();
-                                                gtk_widget_queue_draw( wid);
-                                        }
-                                }
-                                break;
-                        case GDK_SCROLL_LEFT:
-                        case GDK_SCROLL_RIGHT:
-                        default:
-                                break;
-                        }
-                } else {
-                        switch ( event->direction ) {
-                        case GDK_SCROLL_DOWN:
-                                if ( Ch->draw_psd )
-                                        Ch->psd.display_scale /= SF._p.scroll_factor;
-                                if ( Ch->draw_swu )
-                                        Ch->swu.display_scale /= SF._p.scroll_factor;
-                                if ( Ch->draw_mc )
-                                        Ch->mc.display_scale  /= SF._p.scroll_factor;
-                            break;
-                        case GDK_SCROLL_UP:
-                                if ( Ch->draw_psd )
-                                        Ch->psd.display_scale *= SF._p.scroll_factor;
-                                if ( Ch->draw_swu )
-                                        Ch->swu.display_scale *= SF._p.scroll_factor;
-                                if ( Ch->draw_mc )
-                                        Ch->mc.display_scale  *= SF._p.scroll_factor;
-                            break;
-                        case GDK_SCROLL_LEFT:
-                                if ( SF.cur_vpage() > 0 )
-                                        SF.set_cur_vpage( SF.cur_vpage() - 1);
-                        case GDK_SCROLL_RIGHT:
-                                if ( SF.cur_vpage() < SF.total_vpages() )
-                                        SF.set_cur_vpage( SF.cur_vpage() + 1);
-                            break;
-                        default:
-                            break;
-                        }
-                        if ( event->state & GDK_CONTROL_MASK )
-                                for ( auto& H : SF.channels ) {
-                                        if ( Ch->schannel().type() == sigfile::SChannel::TType::eeg &&
-                                             H.schannel().type() == sigfile::SChannel::TType::eeg ) {
-                                                H.psd.display_scale = Ch->psd.display_scale;
-                                                H.mc.display_scale  = Ch->mc.display_scale;
-                                                H.swu.display_scale = Ch->swu.display_scale;
-                                        } else if ( Ch->schannel().type() == sigfile::SChannel::TType::emg &&
-                                             H.schannel().type() == sigfile::SChannel::TType::emg )
-                                                H.signal_display_scale = Ch->signal_display_scale;
-                                }
-                        gtk_widget_queue_draw( wid);
-                }
-        } else {
-                switch ( event->direction ) {
-                case GDK_SCROLL_DOWN:
-                        Ch->signal_display_scale /= SF._p.scroll_factor;
-                        break;
-                case GDK_SCROLL_UP:
-                        Ch->signal_display_scale *= SF._p.scroll_factor;
-                        break;
-                default:
-                        break;
-                }
-
-                if ( event->state & GDK_CONTROL_MASK )
-                        for ( auto& H : SF.channels )
-                                H.signal_display_scale = Ch->signal_display_scale;
-                gtk_widget_queue_draw( wid);
-        }
-
-        return TRUE;
-}
-
-
-
-
-
-// ------ menu callbacks
-
-// -- Page
 
 void
 iSFPageShowOriginal_toggled_cb(
diff --git a/upstream/src/aghermann/ui/sf/montage_cb.cc b/upstream/src/aghermann/ui/sf/montage_cb.cc
index dcf8310..17a86e5 100644
--- a/upstream/src/aghermann/ui/sf/montage_cb.cc
+++ b/upstream/src/aghermann/ui/sf/montage_cb.cc
@@ -16,10 +16,6 @@
 #include "aghermann/ui/mw/mw.hh"
 #include "channel.hh"
 #include "sf.hh"
-#include "sf_cb.hh"
-#include "d/artifacts.hh"
-#include "d/artifacts-simple.hh"
-#include "d/filters.hh"
 
 
 using namespace std;
@@ -529,864 +525,6 @@ daSFMontage_scroll_event_cb(
 
 
 
-
-// ------ menu callbacks
-
-// -- Page
-
-void
-iSFPageShowOriginal_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_original_signal = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        // prevent both being switched off
-        if ( !SF.using_channel->draw_original_signal && !SF.using_channel->draw_filtered_signal )
-                gtk_check_menu_item_set_active( SF.iSFPageShowProcessed,
-                                                (gboolean)(SF.using_channel->draw_filtered_signal = true));
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageShowProcessed_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_filtered_signal = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        if ( !SF.using_channel->draw_filtered_signal && !SF.using_channel->draw_original_signal )
-                gtk_check_menu_item_set_active( SF.iSFPageShowOriginal,
-                                                (gboolean)(SF.using_channel->draw_original_signal = true));
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageUseResample_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->resample_signal = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageDrawZeroline_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_zeroline = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageHide_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.using_channel->hidden = true;
-        // add an item to iSFPageHidden
-        auto item = (GtkWidget*)(SF.using_channel->menu_item_when_hidden =
-                                 (GtkMenuItem*)gtk_menu_item_new_with_label( SF.using_channel->name()));
-        g_object_set(
-                (GObject*)item,
-                "visible", TRUE,
-                NULL);
-        g_signal_connect(
-                (GObject*)item,
-                "activate", (GCallback)iSFPageShowHidden_activate_cb,
-                &SF);
-        gtk_container_add(
-                (GtkContainer*)SF.iiSFPageHidden,
-                item);
-
-        ++SF.n_hidden;
-        gtk_widget_queue_draw(
-                (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageShowHidden_activate_cb(
-        GtkMenuItem *menuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto Ch = &SF[gtk_menu_item_get_label(menuitem)];
-        Ch->hidden = false;
-
-        SF.using_channel = Ch;
-        gdk_window_get_device_position(
-                gtk_widget_get_window( (GtkWidget*)SF.daSFMontage),
-                global::client_pointer,
-                NULL, (int*)&Ch->zeroy, NULL); //SF.find_free_space();
-        SF.zeroy_before_shuffling = Ch->zeroy;
-        SF.event_y_when_shuffling = (double)Ch->zeroy;
-        SF.mode = SScoringFacility::TMode::shuffling_channels;
-
-        gtk_widget_destroy( (GtkWidget*)Ch->menu_item_when_hidden);
-        Ch->menu_item_when_hidden = NULL;
-
-        --SF.n_hidden;
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageSpaceEvenly_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.space_evenly();
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageLocateSelection_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.using_channel->selection_start == SF.using_channel->selection_end ) {
-                SF.sb_message( "There is no selection in this channel");
-        } else
-                SF.set_cur_vpage(
-                        SF.using_channel->selection_start_time / SF.vpagesize());
-}
-
-
-void
-iSFPageDrawPSDProfile_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_psd = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawPSDSpectrum_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_spectrum = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawMCProfile_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_mc = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawSWUProfile_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_swu = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawEMGProfile_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_emg = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawPhasicSpindles_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_phasic_spindle = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawPhasicKComplexes_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_phasic_Kcomplex = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageDrawPhasicEyeBlinks_toggled_cb(
-        GtkCheckMenuItem *checkmenuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_phasic_eyeblink = (bool)gtk_check_menu_item_get_active( checkmenuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageFilter_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& FD =  SF.filters_d();
-        auto& H  = *SF.using_channel;
-        FD.P = H.filters;
-        FD.W_V.up();
-
-        gtk_label_set_markup(
-                FD.lSFFilterCaption,
-                snprintf_buf(
-                        "<big>Filters for channel <b>%s</b></big>",
-                        SF.using_channel->name()));
-
-        if ( gtk_dialog_run( FD.wSFFilters) == GTK_RESPONSE_OK ) {
-                FD.W_V.down();
-                H.filters = FD.P;
-                H.get_signal_filtered();
-
-                if ( H.schannel().type() == sigfile::SChannel::TType::eeg ) {
-                        H.get_psd_course();
-                        H.get_psd_in_bands();
-                        H.get_spectrum( SF.cur_page());
-                        H.get_mc_course();
-                }
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-
-                if ( strcmp( SF.using_channel->name(), SF._p.AghH()) == 0 )
-                        SF.redraw_ssubject_timeline();
-        }
-}
-
-
-void
-iSFPageArtifactsDetect_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& AD = SF.artifacts_d();
-
-        gtk_widget_show( (GtkWidget*)AD.wSFAD);
-}
-
-void
-iSFPageArtifactsMarkFlat_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& AS = SF.artifacts_simple_d();
-        if ( GTK_RESPONSE_OK ==
-             gtk_dialog_run( (GtkDialog*)AS.wSFADS) ) {
-                AS.W_V.down();
-
-                auto marked = SF.using_channel->mark_flat_regions_as_artifacts( AS.min_size, AS.pad);
-
-                SF.sb_message(
-                        snprintf_buf(
-                                "Detected %.2g sec of flat regions, adding %.2g sec to already marked",
-                                marked.first, marked.second));
-
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFHypnogram);
-        }
-}
-
-
-
-void
-iSFPageArtifactsClear_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        char* chnamee = g_markup_escape_text( SF.using_channel->name(), -1);
-
-        if ( SF.using_channel->artifacts().empty() ) {
-                pop_ok_message( SF.wSF, "No artifacts to clear", "Channel <b>%s</b> is already clean.", chnamee);
-
-        } else
-                if ( GTK_RESPONSE_YES ==
-                     pop_question(
-                             SF.wSF,
-                             "<b>All marked artifacts will be lost</b>",
-                             "Sure to clean all artifacts in channel <b>%s</b>?",
-                             chnamee) ) {
-
-                        SF.using_channel->artifacts().clear();
-                        SF.using_channel->get_signal_filtered();
-
-                        if ( SF.using_channel->schannel().type() == sigfile::SChannel::TType::eeg ) {
-                                SF.using_channel->get_psd_course();
-                                SF.using_channel->get_psd_in_bands();
-                                SF.using_channel->get_spectrum();
-
-                                SF.redraw_ssubject_timeline();
-                        }
-
-                        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-                        gtk_widget_queue_draw( (GtkWidget*)SF.daSFHypnogram);
-                }
-
-        g_free( chnamee);
-}
-
-
-
-
-void
-iSFPageSaveChannelAsSVG_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& ED = SF._p;
-        string j_dir = ED.ED->subject_dir( SF.csubject());
-        string fname = sasprintf(
-                "%s/%s/%s-p%zu@%zu.svg",
-                j_dir.c_str(), ED.AghD(), ED.AghT(), SF.cur_vpage(), SF.vpagesize());
-
-        SF.using_channel->draw_for_montage( fname, SF.da_wd, SF.interchannel_gap);
-        ED.sb_message(
-                sasprintf(
-                        "Wrote \"%s\"",
-                        homedir2tilda(fname).c_str()));
-}
-
-
-void
-iSFPageSaveMontageAsSVG_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& ED = SF._p;
-        string j_dir = ED.ED->subject_dir( SF.csubject());
-        string fname = sasprintf(
-                        "%s/%s/montage-p%zu@%zu.svg",
-                        j_dir.c_str(), ED.AghD(), SF.cur_vpage(), SF.vpagesize());
-
-        SF.draw_montage( fname);
-        ED.sb_message(
-                sasprintf( "Wrote \"%s\"", homedir2tilda(fname).c_str()));
-}
-
-
-void
-iSFPageExportSignal_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& r = SF.using_channel->crecording;
-        string fname_base = r.F().filename();
-        r.F().export_filtered(
-                SF.using_channel->h(),
-                sasprintf( "%s-filt.tsv", fname_base.c_str()));
-        r.F().export_original(
-                SF.using_channel->h(),
-                sasprintf( "%s-filt.tsv", fname_base.c_str()));
-        SF.sb_message(
-                sasprintf( "Wrote \"%s-{filt,orig}.tsv\"", fname_base.c_str()));
-}
-
-
-
-void
-iSFPageUseThisScale_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto sane_signal_display_scale = SF.using_channel->signal_display_scale;
-        for_each( SF.channels.begin(), SF.channels.end(),
-                  [&] ( SScoringFacility::SChannel& H)
-                  {
-                          H.signal_display_scale = sane_signal_display_scale;
-                  });
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-
-
-
-void
-iSFPageAnnotationDelete_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.over_annotations.size() == 1 ) {
-                if ( GTK_RESPONSE_YES
-                     == pop_question( SF.wSF,
-                                      "<b>Deleting annotation</b>",
-                                      "Sure you want to delete annotation\n <b>%s</b>?",
-                                      SF.over_annotations.front()->label.c_str()) )
-                        SF.using_channel->annotations.remove(
-                                *SF.over_annotations.front());
-        } else {
-                if ( GTK_RESPONSE_YES
-                     == pop_question( SF.wSF,
-                                      "<b>Deleting annotations</b>",
-                                      "Sure you want to delete <b>%zu annotations</b>?",
-                                      SF.over_annotations.size()) )
-                        for ( auto &rm : SF.over_annotations )
-                                SF.using_channel->annotations.remove( *rm);
-        }
-        SF._p.populate_mGlobalAnnotations();
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-void
-iSFPageAnnotationEdit_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        sigfile::SAnnotation *which =
-                (SF.over_annotations.size() == 1)
-                ? SF.over_annotations.front()
-                : SF.interactively_choose_annotation();
-        if ( not which )
-                return;
-
-        gtk_entry_set_text( SF.eSFAnnotationLabel, which->label.c_str());
-        switch ( which->type ) {
-        case sigfile::SAnnotation::TType::phasic_event_spindle:
-                gtk_toggle_button_set_active( (GtkToggleButton*)SF.eSFAnnotationTypeSpindle, TRUE);
-                break;
-        case sigfile::SAnnotation::TType::phasic_event_K_complex:
-                gtk_toggle_button_set_active( (GtkToggleButton*)SF.eSFAnnotationTypeKComplex, TRUE);
-                break;
-        case sigfile::SAnnotation::TType::eyeblink:
-                gtk_toggle_button_set_active( (GtkToggleButton*)SF.eSFAnnotationTypeBlink, TRUE);
-                break;
-        case sigfile::SAnnotation::TType::plain:
-        default:
-                gtk_toggle_button_set_active( (GtkToggleButton*)SF.eSFAnnotationTypePlain, TRUE);
-                break;
-        }
-
-        if ( GTK_RESPONSE_OK ==
-             gtk_dialog_run( SF.wSFAnnotationLabel) ) {
-                const char* new_label = gtk_entry_get_text( SF.eSFAnnotationLabel);
-                auto new_type =
-                        gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeSpindle)
-                        ? sigfile::SAnnotation::TType::phasic_event_spindle
-                        : gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeKComplex)
-                        ? sigfile::SAnnotation::TType::phasic_event_K_complex
-                        : gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeBlink)
-                        ? sigfile::SAnnotation::TType::eyeblink
-                        : sigfile::SAnnotation::TType::plain;
-
-                if ( strlen(new_label) > 0 ) {
-                        which->label = new_label;
-                        which->type = new_type;
-                        SF._p.populate_mGlobalAnnotations();
-                        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-                }
-        }
-}
-
-
-void
-iSFPageAnnotationClearAll_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        char* chnamee = g_markup_escape_text( SF.using_channel->name(), -1);
-        if ( GTK_RESPONSE_YES
-             == pop_question(
-                     SF.wSF,
-                     "<b>Deleting annotations</b>",
-                     "Sure you want to delete all annotations in channel <b>%s</b>?",
-                     chnamee) ) {
-
-                SF.using_channel->annotations.clear();
-
-                SF._p.populate_mGlobalAnnotations();
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-        }
-        g_free( chnamee);
-}
-
-
-void
-iSFPageAnnotationGotoNext_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        if ( SF.cur_vpage() == SF.total_vpages()-1 )
-                return;
-        size_t p = SF.cur_vpage();
-        while ( ++p < SF.total_vpages() )
-                if ( SF.vpage_has_annotations( p, *SF.using_channel)) {
-                        SF.sb_clear();
-                        SF.set_cur_vpage( p);
-                        return;
-                }
-        SF.sb_message( "No more annotations after this");
-}
-
-void
-iSFPageAnnotationGotoPrev_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        if ( SF.cur_vpage() == 0 )
-                return;
-        size_t p = SF.cur_vpage();
-        while ( --p != (size_t)-1 )
-                if ( SF.vpage_has_annotations( p, *SF.using_channel)) {
-                        SF.sb_clear();
-                        SF.set_cur_page( p);
-                        return;
-                }
-        SF.sb_message( "No more annotations before this");
-}
-
-
-
-
-
-
-void
-iSFICAPageMapIC_activate_cb(
-        GtkRadioMenuItem* i,
-        const gpointer u)
-{
-        auto& SF = *(SScoringFacility*)u;
-        if ( SF.suppress_redraw )
-                return;
-        const char *label = gtk_menu_item_get_label( (GtkMenuItem*)i);
-
-      // find target h
-        int target = -1;
-        int h = 0;
-        for ( auto H = SF.channels.begin(); H != SF.channels.end(); ++H, ++h )
-                if ( strcmp( H->name(), label) == 0 ) {
-                        target = h;
-                        break;
-                }
-        SF.ica_map[SF.using_ic].m = target;
-
-      // remove any previous mapping of the same target
-        h = 0;
-        for ( h = 0; h < (int)SF.ica_map.size(); ++h )
-                if ( SF.ica_map[h].m == target && h != SF.using_ic )
-                        SF.ica_map[h].m = -1;
-
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-// page selection
-void
-iSFPageSelectionMarkArtifact_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& H = SF.using_channel;
-        SBusyBlock bb (SF.wSF);
-
-        H->mark_region_as_artifact( true);
-
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFHypnogram);
-}
-
-void
-iSFPageSelectionClearArtifact_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& H = SF.using_channel;
-        SBusyBlock bb (SF.wSF);
-
-        H->mark_region_as_artifact( false);
-
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFHypnogram);
-}
-
-void
-iSFPageSelectionFindPattern_activate_cb(
-        GtkMenuItem*,
-        gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& H = SF.using_channel;
-        H->mark_region_as_pattern();
-}
-
-void
-iSFPageSelectionAnnotate_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        gtk_entry_set_text( SF.eSFAnnotationLabel, "");
-
-        if ( GTK_RESPONSE_OK ==
-             gtk_dialog_run( (GtkDialog*)SF.wSFAnnotationLabel) ) {
-                auto new_ann = gtk_entry_get_text( SF.eSFAnnotationLabel);
-
-                using sigfile::SAnnotation;
-                auto type =
-                        gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeSpindle)
-                        ? SAnnotation::TType::phasic_event_spindle
-                        : gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeKComplex)
-                        ? SAnnotation::TType::phasic_event_K_complex
-                        : gtk_toggle_button_get_active( (GtkToggleButton*)SF.eSFAnnotationTypeBlink)
-                        ? SAnnotation::TType::eyeblink
-                        : SAnnotation::TType::plain;
-
-                if ( strlen( new_ann) == 0 && type == SAnnotation::TType::plain ) {
-                        pop_ok_message( SF.wSF, "Give a plain annotation a name", "and try again.");
-                        return;
-                }
-
-                SF.using_channel->mark_region_as_annotation( new_ann, type);
-
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFHypnogram);
-
-                SF._p.populate_mGlobalAnnotations();
-        }
-}
-
-
-void
-iSFPageSelectionDrawCourse_toggled_cb(
-        GtkCheckMenuItem *cb,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.using_channel->draw_selection_course = gtk_check_menu_item_get_active( cb);
-        if ( SF.suppress_redraw )
-                return;
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageSelectionDrawEnvelope_toggled_cb(
-        GtkCheckMenuItem *cb,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.using_channel->draw_selection_envelope = gtk_check_menu_item_get_active( cb);
-        if ( SF.suppress_redraw )
-                return;
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPageSelectionDrawDzxdf_toggled_cb(
-        GtkCheckMenuItem *cb,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        SF.using_channel->draw_selection_dzcdf = gtk_check_menu_item_get_active( cb);
-        if ( SF.suppress_redraw )
-                return;
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-
-
-// power
-
-void
-iSFPowerExportRange_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        auto& R = SF.using_channel->crecording;
-
-        if ( SF.using_channel->draw_psd ) {
-                string fname = sasprintf(
-                        "%s-psd_%g-%g.tsv",
-                        R.psd_profile.fname_base().c_str(), SF.using_channel->psd.from, SF.using_channel->psd.upto);
-                R.psd_profile.export_tsv(
-                        SF.using_channel->psd.from, SF.using_channel->psd.upto,
-                        fname);
-                SF.sb_message( sasprintf( "Wrote \"%s\"", homedir2tilda(fname).c_str()));
-        }
-        // if ( SF.using_channel->draw_swu ) {
-        //         fname_base = R.swu_profile.fname_base();
-        //         snprintf_buf( "%s-swu_%g-%g.tsv",
-        //                       fname_base.c_str(), SF.using_channel->swu.from, SF.using_channel->swu.upto);
-        //         R.swu_profile.export_tsv(
-        //                 SF.using_channel->swu.from, SF.using_channel->swu.upto,
-        //                 global::buf);
-        //         fname_base = global::buf; // recycle
-        // }
-        // if ( SF.using_channel->draw_mc ) {
-        //         fname_base = R.mc_profile.fname_base();
-        //         snprintf_buf( "%s-mc_%g-%g.tsv",
-        //                       fname_base.c_str(),
-        //                       R.freq_from + R.bandwidth*(SF.using_channel->mc.bin),
-        //                       R.freq_from + R.bandwidth*(SF.using_channel->mc.bin+1));
-        //         R.mc_profile.export_tsv(
-        //                 SF.using_channel->mc.bin,
-        //                 global::buf);
-        //         fname_base = global::buf;
-        // }
-}
-
-void
-iSFPowerExportAll_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        const auto& SF = *(SScoringFacility*)userdata;
-        auto& R = SF.using_channel->crecording;
-
-        string fname_base;
-        if ( SF.using_channel->draw_psd ) {
-                string fname = sasprintf(
-                        "%s-psd.tsv",
-                        SF.using_channel->crecording.psd_profile.fname_base().c_str());
-                R.psd_profile.export_tsv( fname);
-                SF.sb_message( sasprintf( "Wrote \"%s\"", homedir2tilda(fname).c_str()));
-        }
-        if ( SF.using_channel->draw_swu ) {
-                string fname = sasprintf(
-                        "%s-swu.tsv",
-                        SF.using_channel->crecording.swu_profile.fname_base().c_str());
-                R.swu_profile.export_tsv( fname);
-                SF.sb_message( sasprintf( "Wrote \"%s\"", homedir2tilda(fname).c_str()));
-        }
-        if ( SF.using_channel->draw_mc ) {
-                string fname = sasprintf(
-                        "%s-psd.tsv",
-                        SF.using_channel->crecording.psd_profile.fname_base().c_str());
-                R.psd_profile.export_tsv( fname);
-                SF.sb_message( sasprintf( "Wrote \"%s\"", homedir2tilda(fname).c_str()));
-        }
-}
-
-void
-iSFPowerSmooth_toggled_cb(
-        GtkCheckMenuItem *menuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        if ( likely (SF.using_channel->schannel().type() == sigfile::SChannel::TType::eeg ) ) {
-                SF.using_channel->resample_power = (bool)gtk_check_menu_item_get_active( menuitem);
-                SF.using_channel->get_psd_course();
-                SF.using_channel->get_psd_in_bands();
-                SF.using_channel->get_swu_course();
-                SF.using_channel->get_mc_course();
-                gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-        }
-}
-
-void
-iSFPowerDrawBands_toggled_cb(
-        GtkCheckMenuItem *menuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        SF.using_channel->draw_psd_bands = (bool)gtk_check_menu_item_get_active( menuitem);
-        gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
-}
-
-void
-iSFPowerUseThisScale_activate_cb(
-        GtkMenuItem*,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-
-        auto    sane_psd_display_scale = SF.using_channel->psd.display_scale,
-                sane_swu_display_scale = SF.using_channel->swu.display_scale,
-                sane_mc_display_scale  = SF.using_channel->mc.display_scale;
-        for ( auto& H : SF.channels ) {
-                H.psd.display_scale = sane_psd_display_scale;
-                H.swu.display_scale = sane_swu_display_scale;
-                H.mc.display_scale  = sane_mc_display_scale;
-        }
-        SF.queue_redraw_all();
-}
-
-void
-iSFPowerAutoscale_toggled_cb(
-        GtkCheckMenuItem *menuitem,
-        const gpointer userdata)
-{
-        auto& SF = *(SScoringFacility*)userdata;
-        if ( SF.suppress_redraw )
-                return;
-        auto& H = *SF.using_channel;
-
-        H.autoscale_profile = (bool)gtk_check_menu_item_get_active( menuitem);
-
-        SF.queue_redraw_all();
-}
-
-
 } // extern "C"
 
 // Local Variables:

-- 
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git



More information about the debian-med-commit mailing list