[med-svn] [SCM] aghermann branch, master, updated. f0d4c0fd35bf09e7dff56ddb9a2d798ae916c2ef

Andrei Zavada johnhommer at gmail.com
Sun Feb 3 12:53:09 UTC 2013


The following commit has been merged in the master branch:
commit 04a910c3d9820a2e9b700308a9ba89ee1d266568
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Sun Feb 3 11:59:43 2013 +0200

    decruft, ICM and strings touchup

diff --git a/data/mw-dialogs.glade b/data/mw-dialogs.glade
index 3cc10ee..d6699bd 100644
--- a/data/mw-dialogs.glade
+++ b/data/mw-dialogs.glade
@@ -321,7 +321,7 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkLabel" id="lVersion">
+                  <object class="GtkLabel" id="lAboutVersion">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="valign">start</property>
diff --git a/src/libsigfile/edf.cc b/src/libsigfile/edf.cc
index b0ac3c1..c21efce 100644
--- a/src/libsigfile/edf.cc
+++ b/src/libsigfile/edf.cc
@@ -185,8 +185,10 @@ CEDFFile (const char *fname_, int flags_)
 					aa, az,
 					agh::str::trim(an),
 					(SAnnotation::TType)type);
-			else
+			else {
+				fprintf( stderr, "Bad annotation: (%d %zu %zu %50s)\n", type, aa, az, an.c_str());
 				break;
+			}
 		}
 		H.annotations.sort();
 	}
diff --git a/src/metrics/phasic-events.hh b/src/metrics/phasic-events.hh
deleted file mode 100644
index 8d03a88..0000000
--- a/src/metrics/phasic-events.hh
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *       File name:  metrics/phasic-events.hh
- *         Project:  Aghermann
- *          Author:  Andrei Zavada <johnhommer at gmail.com>
- *
- * Initial version:  2013-01-03
- *
- *         Purpose:  CPhasicEventEstimator and related stuff
- *
- *         License:  GPL
- */
-
-#ifndef _METRICS_PHASIC_EVENTS_H
-#define _METRICS_PHASIC_EVENTS_H
-
-#include <list>
-
-#include "common/alg.hh"
-#include "libsigfile/source.hh"
-#include "forward-decls.hh"
-
-#if HAVE_CONFIG_H && !defined(VERSION)
-#  include "config.h"
-#endif
-
-using namespace std;
-
-namespace metrics {
-namespace phasic {
-
-enum TEventTypes {
-	spindle,
-	K_complex
-};
-
-template <typename T>
-list<agh::alg::SSpan<double>>
-detect_spindles( const sigfile::SNamedChannel<T>&);
-
-template <typename T>
-list<agh::alg::SSpan<double>>
-detect_Kcomplexes( const sigfile::SNamedChannel<T>&);
-
-
-#include "phasic-events.ii"
-
-} // namespace phasic
-} // namespace metrics
-
-
-#endif // _METRICS_PHASIC_EVENTS_H
-
-// Local Variables:
-// Mode: c++
-// indent-tabs-mode: 8
-// End:
diff --git a/src/metrics/phasic-events.ii b/src/metrics/phasic-events.ii
deleted file mode 100644
index dba81c2..0000000
--- a/src/metrics/phasic-events.ii
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *       File name:  metrics/phasic-events.ii
- *         Project:  Aghermann
- *          Author:  Andrei Zavada <johnhommer at gmail.com>
- * Initial version:  2013-01-04
- *
- *         Purpose:  phasic event detection
- *
- *         License:  GPL
- */
-
-
-template <typename T>
-list<agh::alg::SSpan<double>>
-detect_spindles( const sigfile::SNamedChannel<T>&)
-{
-	list<agh::alg::SSpan<double>> ret;
-	
-	return ret;
-}
-
-template <typename T>
-list<agh::alg::SSpan<double>>
-detect_Kcomplexes( const sigfile::SNamedChannel<T>&)
-{
-	list<agh::alg::SSpan<double>> ret;
-	
-	return ret;
-}
-
-// Local Variables:
-// Mode: c++
-// indent-tabs-mode: 8
-// End:
diff --git a/src/ui/mw/construct.cc b/src/ui/mw/construct.cc
index 65a4dfd..106f4cb 100644
--- a/src/ui/mw/construct.cc
+++ b/src/ui/mw/construct.cc
@@ -507,8 +507,9 @@ SExpDesignUIWidgets ()
 
       // ========= child widgets
       // ----- wAbout
-	if ( !(AGH_GBGETOBJ (GtkDialog,		wAbout)) ||
-	     !(AGH_GBGETOBJ (GtkNotebook,	cAboutTabs)) )
+	if ( !AGH_GBGETOBJ (GtkDialog,		wAbout) ||
+	     !AGH_GBGETOBJ (GtkNotebook,	cAboutTabs) ||
+	     !AGH_GBGETOBJ (GtkLabel,		lAboutVersion) )
 		throw runtime_error ("Failed to construct widgets");
 
       // ------- wEDFFileDetails
diff --git a/src/ui/mw/measurements.cc b/src/ui/mw/measurements.cc
index 1731237..69194c3 100644
--- a/src/ui/mw/measurements.cc
+++ b/src/ui/mw/measurements.cc
@@ -60,7 +60,8 @@ void
 aghui::SExpDesignUI::SSubjectPresentation::
 draw_timeline( cairo_t *cr) const
 {
-	bool have_episodes = cprofile != nullptr && not cprofile->mm_list().empty();
+	bool have_episodes = cprofile && not cprofile->mm_list().empty();
+
 	if ( not have_episodes ) {
 		cairo_move_to( cr, 50, timeline_height()/2+9);
 		cairo_select_font_face( cr, "sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
diff --git a/src/ui/mw/measurements_cb.cc b/src/ui/mw/measurements_cb.cc
index 1bb54f6..0bf9495 100644
--- a/src/ui/mw/measurements_cb.cc
+++ b/src/ui/mw/measurements_cb.cc
@@ -1,4 +1,3 @@
-// ;-*-C++-*-
 /*
  *       File name:  ui/mw/mw-measurements_cb.cc
  *         Project:  Aghermann
@@ -226,5 +225,7 @@ iSubjectTimelineResetMontage_activate_cb( GtkMenuItem *checkmenuitem, gpointer u
 
 }
 
-// eof
-
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: 8
+// End:
diff --git a/src/ui/mw/mw.cc b/src/ui/mw/mw.cc
index a8e9d94..b9e1ef0 100644
--- a/src/ui/mw/mw.cc
+++ b/src/ui/mw/mw.cc
@@ -83,7 +83,7 @@ create_cprofile()
 		tl_start = csubject.measurements[*_p._p._AghDi].episodes.front().start_rel;
 	} catch (...) {  // can be invalid_argument (no recording in such session/channel) or some TSimPrepError
 		cprofile = nullptr;
-		fprintf( stderr, "SSubjectPresentation::SSubjectPresentation(): subject %s has no recordings in session %s channel %s\n",
+		fprintf( stderr, "SSubjectPresentation::SSubjectPresentation(): subject \"%s\" has no recordings in session \"%s\" channel \"%s\"\n",
 			 csubject.short_name.c_str(), _p._p.AghD(), _p._p.AghT());
 	}
 }
@@ -385,10 +385,9 @@ figure_binsize_item()
 aghui::SExpDesignUI::
 ~SExpDesignUI ()
 {
-	if ( dl_pid > 0 ) {
-		fprintf( stderr, "killing dl process %d\n", dl_pid);
+	if ( dl_pid > 0 )
 		kill( dl_pid, SIGTERM);
-	}
+
 	save_settings();
 	save_artifact_detection_profiles();
 	delete ED;
diff --git a/src/ui/mw/simulations.cc b/src/ui/mw/simulations.cc
index 054e850..7062e77 100644
--- a/src/ui/mw/simulations.cc
+++ b/src/ui/mw/simulations.cc
@@ -110,7 +110,7 @@ populate_2()
 							    -1);
 				} else {
 					gtk_tree_store_set( mSimulations, &iter_h,
-							    1, "(untried)",
+							    1, "(untried — click to run)",
 							    msimulations_modref_col, virgin,
 							    -1);
 				}
diff --git a/src/ui/mw/widgets.hh b/src/ui/mw/widgets.hh
index 23269ff..154a3a0 100644
--- a/src/ui/mw/widgets.hh
+++ b/src/ui/mw/widgets.hh
@@ -234,6 +234,8 @@ struct SExpDesignUIWidgets {
 		*wAbout;
 	GtkNotebook
 		*cAboutTabs;
+	GtkLabel
+		*lAboutVersion;
 
 	// scan log
 	GtkDialog
diff --git a/src/ui/sf/channel.cc b/src/ui/sf/channel.cc
index 7b43068..cd8eef3 100644
--- a/src/ui/sf/channel.cc
+++ b/src/ui/sf/channel.cc
@@ -145,10 +145,6 @@ SChannel( agh::CRecording& r,
 	} else if ( type == sigfile::SChannel::TType::emg )
 		get_raw_profile();
 
-      // prevent exceptions from phasic_events.at
-	phasic_events[metrics::phasic::TEventTypes::spindle].clear();
-	phasic_events[metrics::phasic::TEventTypes::K_complex].clear();
-
       // let it be so to avoid libconfig::readFile throwing exceptions
 	psd.display_scale = mc.display_scale = swu.display_scale =
 		emg_display_scale = DBL_MIN;
@@ -507,7 +503,7 @@ mark_region_as_pattern()
 
 void
 aghui::SScoringFacility::SChannel::
-update_channel_check_menu_items()
+update_channel_menu_items( double x)
 {
 	_p.suppress_redraw = true;
 
@@ -545,12 +541,23 @@ update_channel_check_menu_items()
 	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageDrawMCProfile,   is_eeg);
 	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageDrawEMGProfile,  is_emg);
 
+	double cpos = _p.time_at_click( x);
+
+	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageHidden, _p.n_hidden > 0);
+
+	bool have_any = not annotations.empty();
+	bool over_any = not (_p.over_annotations = in_annotations( cpos)) . empty();
+	gtk_widget_set_visible( (GtkWidget*)_p.iiSFPageAnnotation, have_any);
+	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageAnnotationEdit, over_any);
+	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageAnnotationDelete, over_any);
+	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageAnnotationSeparator, over_any);
+
 	_p.suppress_redraw = false;
 }
 
 void
 aghui::SScoringFacility::SChannel::
-update_power_check_menu_items()
+update_power_menu_items()
 {
 	_p.suppress_redraw = true;
 	gtk_check_menu_item_set_active( _p.iSFPageDrawEMGProfile, (gboolean)draw_emg);
@@ -565,18 +572,6 @@ update_power_check_menu_items()
 }
 
 
-void
-aghui::SScoringFacility::SChannel::
-selectively_enable_page_menu_items( double x)
-{
-	double cpos = _p.time_at_click( x);
-
-	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageHidden, _p.n_hidden > 0);
-	bool over_any =
-		not (_p.over_annotations = in_annotations( cpos)) . empty();
-	gtk_widget_set_visible( (GtkWidget*)_p.iiSFPageAnnotation, over_any);
-	gtk_widget_set_visible( (GtkWidget*)_p.iSFPageAnnotationSeparator, over_any);
-}
 
 void
 aghui::SScoringFacility::SChannel::
diff --git a/src/ui/sf/montage-overlays.cc b/src/ui/sf/montage-overlays.cc
index d35a1c8..3d49751 100644
--- a/src/ui/sf/montage-overlays.cc
+++ b/src/ui/sf/montage-overlays.cc
@@ -23,13 +23,15 @@ aghui::SScoringFacility::SChannel::
 draw_overlays( cairo_t* cr,
 	       int wd, float zeroy) const
 {
+	if ( _p.mode != TMode::scoring )
+		return;
+
 	float	pbot = zeroy + _p.interchannel_gap / 2.2,
 		ptop = zeroy - _p.interchannel_gap / 2.2;
 	bool	overlay = false;
 
        // PSD profile
-	if ( _p.mode == TMode::scoring and
-	     draw_psd and type == sigfile::SChannel::TType::eeg ) {
+	if ( draw_psd and type == sigfile::SChannel::TType::eeg ) {
 		overlay = true;
 
 		cairo_set_line_width( cr, 1.);
@@ -173,8 +175,7 @@ draw_overlays( cairo_t* cr,
 		}
 	}
 
-	if ( _p.mode == TMode::scoring and
-	     draw_mc and type == sigfile::SChannel::TType::eeg ) {
+	if ( draw_mc and type == sigfile::SChannel::TType::eeg ) {
 		overlay = true;
 
 		cairo_set_line_width( cr, 1.);
@@ -221,8 +222,7 @@ draw_overlays( cairo_t* cr,
 
 	}
 
-	if ( _p.mode == TMode::scoring and
-	     draw_swu and type == sigfile::SChannel::TType::eeg ) {
+	if ( draw_swu and type == sigfile::SChannel::TType::eeg ) {
 		overlay = true;
 
 		cairo_set_line_width( cr, 1.);
@@ -276,7 +276,7 @@ draw_overlays( cairo_t* cr,
 	}
 
       // EMG profile
-	if ( _p.mode == TMode::scoring and draw_emg and
+	if ( draw_emg and
 	     type == sigfile::SChannel::TType::emg ) {
 		overlay = true;
 
@@ -319,7 +319,7 @@ draw_overlays( cairo_t* cr,
 	}
 
       // samples per pixel
-	if ( _p.mode == TMode::scoring and resample_signal ) {
+	if ( resample_signal ) {
 		_p._p.CwB[SExpDesignUI::TColour::sf_labels].set_source_rgb( cr);
 		cairo_select_font_face( cr, "sans", CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD);
 		cairo_set_font_size( cr, 8);
diff --git a/src/ui/sf/montage_cb.cc b/src/ui/sf/montage_cb.cc
index 99ed059..88eb077 100644
--- a/src/ui/sf/montage_cb.cc
+++ b/src/ui/sf/montage_cb.cc
@@ -61,10 +61,12 @@ radio_item_setter( GtkWidget *i, gpointer u)
 }
 } // inline namespace
 
+
 gboolean
 daSFMontage_button_press_event_cb( GtkWidget *wid, GdkEventButton *event, gpointer userdata)
 {
 	auto& SF = *(SScoringFacility*)userdata;
+
 	if ( SF.mode == aghui::SScoringFacility::TMode::showing_ics ) {
 		if ( SF.ica_components.size() == 0 )
 			return TRUE;
@@ -92,6 +94,7 @@ daSFMontage_button_press_event_cb( GtkWidget *wid, GdkEventButton *event, gpoint
 		}
 		return TRUE;
 	}
+
 	if ( SF.mode == aghui::SScoringFacility::TMode::showing_remixed ) {
 		if ( SF.ica_components.size() == 0 )
 			return TRUE;
@@ -124,7 +127,7 @@ daSFMontage_button_press_event_cb( GtkWidget *wid, GdkEventButton *event, gpoint
 			gtk_widget_queue_draw( wid);
 		    break;
 		case 3:
-			Ch->update_power_check_menu_items();
+			Ch->update_power_menu_items();
 			gtk_menu_popup( SF.iiSFPower,
 					NULL, NULL, NULL, NULL, 3, event->time);
 		    break;
@@ -160,9 +163,8 @@ daSFMontage_button_press_event_cb( GtkWidget *wid, GdkEventButton *event, gpoint
 				gtk_menu_popup( SF.iiSFPageHidden,
 						NULL, NULL, NULL, NULL, 3, event->time);
 			else {
-				Ch->selectively_enable_page_menu_items( event->x);
-				Ch->update_channel_check_menu_items();
-				Ch->update_power_check_menu_items();
+				Ch->update_channel_menu_items( event->x);
+				Ch->update_power_menu_items();
 				double cpos = SF.time_at_click( event->x);
 				gtk_menu_popup( agh::alg::overlap(
 							Ch->selection_start_time, Ch->selection_end_time,
@@ -295,7 +297,7 @@ daSFMontage_button_release_event_cb( GtkWidget *wid, GdkEventButton *event, gpoi
 			Ch->put_selection( Ch->selection_start, Ch->selection_end);
 			gtk_widget_queue_draw( wid);
 			Ch->selectively_enable_selection_menu_items();
-			Ch->update_channel_check_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);
@@ -777,6 +779,9 @@ iSFPageUseThisScale_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 }
 
 
+
+
+
 void
 iSFPageAnnotationDelete_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 {
@@ -809,7 +814,7 @@ iSFPageAnnotationEdit_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 		(SF.over_annotations.size() == 1)
 		? SF.over_annotations.front()
 		: SF.interactively_choose_annotation();
-	if ( which == NULL )
+	if ( not which )
 		return;
 
 	gtk_entry_set_text( SF.eSFAnnotationLabel, which->label.c_str());
diff --git a/src/ui/sf/phasic-events.cc b/src/ui/sf/phasic-events.cc
deleted file mode 100644
index 481016f..0000000
--- a/src/ui/sf/phasic-events.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *       File name:  ui/sf/phasic-events.cc
- *         Project:  Aghermann
- *          Author:  Andrei Zavada <johnhommer at gmail.com>
- * Initial version:  2013-01-04
- *
- *         Purpose:  scoring facility: phasic events
- *
- *         License:  GPL
- */
-
-#include "sf.hh"
-// I'd rather have these two includes in the reverse order, except
-// that g++ takes an issue with namespace sigproc, which appears in
-// sigproc/sigproc.hh and, independently, in sigproc/winfun.hh.
-//
-// This is what I get if winfun.hh comes first:
-//
-// In file included from sf-phasic-events.cc:14:
-// sf.hh:121: error: 'SCachedLowPassCourse' in namespace 'sigproc' does not name a type
-// sf.hh:123: error: 'SCachedBandPassCourse' in namespace 'sigproc' does not name a type
-// sf.hh:125: error: 'SCachedEnvelope' in namespace 'sigproc' does not name a type
-// sf.hh:127: error: 'SCachedDzcdf' in namespace 'sigproc' does not name a type
-//
-// No idea why they, being included in this order: winfun.hh, sigproc.hh,
-// cause g++ do forget all declarations from the latter.
-#include "metrics/phasic-events.hh"
-
-using namespace std;
-
-void
-aghui::SScoringFacility::SChannel::
-get_phasic_events()
-{
-	using namespace metrics::phasic;
-	auto H = sigfile::SNamedChannel<int> (crecording.F(), _h);
-	phasic_events[TEventTypes::spindle] =
-		detect_spindles( H);
-	phasic_events[TEventTypes::K_complex] =
-		detect_Kcomplexes( H);
-}
-
-// Local Variables:
-// Mode: c++
-// indent-tabs-mode: 8
-// End:
diff --git a/src/ui/sf/sf.cc b/src/ui/sf/sf.cc
index 94f3481..7ef7bc9 100644
--- a/src/ui/sf/sf.cc
+++ b/src/ui/sf/sf.cc
@@ -630,9 +630,6 @@ load_montage()
 			 ex.getLine(), ex.getError());
 		return;
 	} catch (libconfig::FileIOException ex) {
-		fprintf( stderr, "Failed reading montage file %s: %s\n",
-			 montage_file.c_str(),
-			 "ubuntu people please upgrade your libconfig to see this message"); // ex.what());
 		return;
 	}
 	confval::get( config_keys_b, conf);
@@ -680,13 +677,6 @@ save_montage()
 	}
 }
 
-void
-aghui::SScoringFacility::
-reset_montage()
-{
-	FAFA;
-}
-
 
 
 void
diff --git a/src/ui/sf/sf.hh b/src/ui/sf/sf.hh
index b7bb730..a4e9522 100644
--- a/src/ui/sf/sf.hh
+++ b/src/ui/sf/sf.hh
@@ -24,7 +24,6 @@
 #include "sigproc/sigproc.hh"
 #include "patterns/patterns.hh"
 #include "metrics/mc-artifacts.hh"
-#include "metrics/phasic-events.hh"
 #include "expdesign/primaries.hh"
 #include "ica/ica.hh"
 #include "ui/globals.hh"
@@ -199,11 +198,6 @@ class SScoringFacility
 	      // emg
 		double	emg_display_scale;
 
-	      // phasic events
-		map<metrics::phasic::TEventTypes, list<agh::alg::SSpan<double>>>
-			phasic_events;
-		void get_phasic_events();
-
 	      // region
 		void mark_region_as_artifact( bool do_mark);
 		void mark_region_as_annotation( const char*, sigfile::SAnnotation::TType);
@@ -249,9 +243,8 @@ class SScoringFacility
 		forward_list<confval::SValidator<bool>>		config_keys_b;
 		forward_list<confval::SValidator<int>>		config_keys_d;
 		forward_list<confval::SValidator<double>>	config_keys_g;
-		void update_channel_check_menu_items();
-		void update_power_check_menu_items();
-		void selectively_enable_page_menu_items( double event_x);
+		void update_channel_menu_items( double x);
+		void update_power_menu_items();
 		void selectively_enable_selection_menu_items();
 
 	      // selection and marquee
diff --git a/src/ui/sf/sf_cb.cc b/src/ui/sf/sf_cb.cc
index 7064a03..46213a1 100644
--- a/src/ui/sf/sf_cb.cc
+++ b/src/ui/sf/sf_cb.cc
@@ -250,7 +250,7 @@ iSFAcceptAndTakeNext_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 
 
 
-// ------- cleanup
+
 
 gboolean
 wSF_delete_event_cb( GtkWidget*, GdkEvent*, gpointer userdata)

-- 
Sleep experiment manager



More information about the debian-med-commit mailing list