The following commit has been merged in the master branch:
commit 96ceeef9aefdffbdab8a9af9d748e57f274233fb
Author: andrei zavada <[email protected]>
Date:   Thu Oct 18 19:39:26 2012 +0300

    WIP

diff --git a/src/expdesign/primaries-tree-scanner.cc 
b/src/expdesign/primaries-tree-scanner.cc
index c4b62eb..9461212 100644
--- a/src/expdesign/primaries-tree-scanner.cc
+++ b/src/expdesign/primaries-tree-scanner.cc
@@ -297,7 +297,7 @@ scan_tree( TMsmtCollectProgressIndicatorFun 
user_progress_fun)
        agh::fs::__n_edf_files = 0;
        nftw( "./", agh::fs::edf_file_counter, 20, 0);
        printf( "CExpDesign::scan_tree(\"%s\"): %zu edf file(s) found\n",
-               session_dir(), agh::fs::__n_edf_files);
+               session_dir().c_str(), agh::fs::__n_edf_files);
        if ( agh::fs::__n_edf_files == 0 )
                return;
 
diff --git a/src/expdesign/primaries.cc b/src/expdesign/primaries.cc
index d6c6f0f..b17611f 100644
--- a/src/expdesign/primaries.cc
+++ b/src/expdesign/primaries.cc
@@ -82,7 +82,7 @@ CExpDesign (const string& session_dir_,
        if ( fs::exists_and_is_writable( session_dir()) == false )
                throw invalid_argument (string("Experiment directory ") + 
_session_dir + " does not exist or is not writable");
 
-       if ( chdir( session_dir()) == -1 )
+       if ( chdir( session_dir().c_str()) == -1 )
                throw invalid_argument (string("Failed to cd to ") + 
_session_dir);
 
        load_settings();
diff --git a/src/expdesign/primaries.hh b/src/expdesign/primaries.hh
index 0501290..51437bb 100644
--- a/src/expdesign/primaries.hh
+++ b/src/expdesign/primaries.hh
@@ -62,7 +62,7 @@ class CSubject {
 
        sid_type           id() const   { return _id; }
        const char      *name() const   { return _name.c_str(); };
-       const char       *dir() const   { return _dir.c_str(); }
+       const string&     dir() const   { return _dir; }
 
        CSubject (const string& dir, sid_type id);
        ~CSubject ();
@@ -286,9 +286,9 @@ class CExpDesign {
                        return _status;
                }
 
-       const char* session_dir() const
+       const string& session_dir() const
                {
-                       return _session_dir.c_str();
+                       return _session_dir;
                }
 
        string name() const // dirname
diff --git a/src/ui/ed-admit-one.cc b/src/ui/ed-admit-one.cc
index 36c0803..9e0572d 100644
--- a/src/ui/ed-admit-one.cc
+++ b/src/ui/ed-admit-one.cc
@@ -107,7 +107,7 @@ aghui::SExpDesignUI::dnd_maybe_admit_one( const char* fname)
        {
                char *dest_path, *dest, *cmd;
                dest_path = g_strdup_printf( "%s/%s/%s/%s",
-                                            ED->session_dir(),
+                                            ED->session_dir().c_str(),
                                             selected_group,
                                             F->subject(),
                                             selected_session);
diff --git a/src/ui/ed-measurements_cb.cc b/src/ui/ed-measurements_cb.cc
index 4562245..f3d6164 100644
--- a/src/ui/ed-measurements_cb.cc
+++ b/src/ui/ed-measurements_cb.cc
@@ -191,7 +191,7 @@ iSubjectTimelineSaveAsSVG_activate_cb( GtkMenuItem 
*checkmenuitem, gpointer user
        auto J = ED.using_subject;
 
        snprintf_buf( "%s/%s/%s/%s/%s.svg",
-                     ED.ED->session_dir(), ED.ED->group_of( J->csubject), 
J->csubject.name(),
+                     ED.ED->session_dir().c_str(), ED.ED->group_of( 
J->csubject), J->csubject.name(),
                      ED.AghD(), ED.AghT());
        string tmp (__buf__);
        J->is_focused = true;
@@ -209,7 +209,7 @@ iSubjectTimelineBrowse_activate_cb( GtkMenuItem 
*checkmenuitem, gpointer userdat
        auto J = ED.using_subject;
 
        snprintf_buf( "%s '%s/%s/%s/%s' &",
-                     ED.browse_command.c_str(), ED.ED->session_dir(), 
ED.ED->group_of( J->csubject), J->csubject.name(), ED.AghD());
+                     ED.browse_command.c_str(), ED.ED->session_dir().c_str(), 
ED.ED->group_of( J->csubject), J->csubject.name(), ED.AghD());
        if ( system( __buf__) ) {}
 }
 
@@ -221,10 +221,10 @@ iSubjectTimelineResetMontage_activate_cb( GtkMenuItem 
*checkmenuitem, gpointer u
 
        if ( not J->is_episode_focused() )
                snprintf_buf( "find '%s/%s/%s/%s' -name '.*.montage' -delete",
-                             ED.ED->session_dir(), ED.ED->group_of( 
J->csubject), J->csubject.name(), ED.AghD());
+                             ED.ED->session_dir().c_str(), ED.ED->group_of( 
J->csubject), J->csubject.name(), ED.AghD());
        else
                snprintf_buf( "rm -f '%s/%s/%s/%s/.%s.montage'",
-                             ED.ED->session_dir(), ED.ED->group_of( 
J->csubject), J->csubject.name(), ED.AghD(), ED.AghE());
+                             ED.ED->session_dir().c_str(), ED.ED->group_of( 
J->csubject), J->csubject.name(), ED.AghD(), ED.AghE());
 
        if ( system( __buf__) )
                pop_ok_message( ED.wMainWindow, "Command '%s' returned a 
non-zero status. This is weird.", __buf__);
diff --git a/src/ui/ed.cc b/src/ui/ed.cc
index e56e3be..cde1767 100644
--- a/src/ui/ed.cc
+++ b/src/ui/ed.cc
@@ -280,6 +280,7 @@ aghui::SExpDesignUI::
 ~SExpDesignUI ()
 {
        save_settings();
+       save_artifact_detection_profiles();
        delete ED;
 }
 
@@ -448,7 +449,7 @@ do_purge_computed()
        aghui::SBusyBlock bb (wMainWindow);
 
        snprintf_buf( "find '%s' \\( -name '.*.psd' -or -name '.*.mc' \\) 
-delete",
-                     ED->session_dir());
+                     ED->session_dir().c_str());
        set_wMainWindow_interactive( false);
        if ( system( __buf__) ) {
                fprintf( stderr, "Command '%s' returned a non-zero status. This 
is suspicious.\n", __buf__);
@@ -671,9 +672,75 @@ void
 aghui::SExpDesignUI::
 populate_mGlobalADProfiles()
 {
+       load_artifact_detection_profiles();
+       gtk_list_store_clear( mGlobalADProfiles);
+       for ( auto &P : global_artifact_detection_profiles ) {
+               GtkTreeIter iter;
+               gtk_list_store_append( mEEGChannels, &iter);
+               gtk_list_store_set( mEEGChannels, &iter,
+                                   0, P.first.c_str(),
+                                   -1);
+       }
+}
 
+
+void
+aghui::SExpDesignUI::
+load_artifact_detection_profiles()
+{
+       FILE *domien = fopen( (ED->session_dir() + "/.AD_profiles").c_str(), 
"r");
+       if ( domien ) {
+               while ( !feof (domien) ) {
+                       SDetectArtifactsParamPack P;
+                       char *_ = NULL;
+                       getline( &_, NULL, domien);
+                       fscanf( domien, "%la  %la %la  %la %la %la  %la %la  
%la %la %la "
+                               "%zu %zu %d %d\n",
+                               &P.scope,
+                               &P.upper_thr, &P.lower_thr,
+                               &P.f0, &P.fc, &P.bandwidth,
+                               &P.mc_gain, &P.iir_backpolate,
+                               &P.E, &P.dmin, &P.dmax,
+                               &P.sssu_hist_size,
+                               &P.smooth_side,
+                               &P.estimate_E,
+                               &P.use_range);
+                       global_artifact_detection_profiles[_] = P;
+                       free( _);
+               }
+               fclose( domien);
+       } else
+               fprintf( stderr, "failed to open $EXPROOT/.AD_profiles for 
reading\n");
 }
 
+void
+aghui::SExpDesignUI::
+save_artifact_detection_profiles() const
+{
+       // libconfig::Config conf;
+       // auto&        root = conf.getRoot();
+       // auto&        profiles = root.add("profiles", 
libconfig::Setting::Type::TypeArray);
+       FILE *domien = fopen( (ED->session_dir() + "/.AD_profiles").c_str(), 
"w");
+       if ( domien ) {
+               for ( auto &P : global_artifact_detection_profiles ) {
+                       fprintf( domien, "%s\n", P.first.c_str());
+                       fprintf( domien, "%a  %a %a  %a %a %a  %a %a  %a %a %a "
+                                "%zu %zu %d %d\n",
+                                P.second.scope,
+                                P.second.upper_thr, P.second.lower_thr,
+                                P.second.f0, P.second.fc, P.second.bandwidth,
+                                P.second.mc_gain, P.second.iir_backpolate,
+                                P.second.E, P.second.dmin, P.second.dmax,
+                                P.second.sssu_hist_size,
+                                P.second.smooth_side,
+                                (int)P.second.estimate_E,
+                                (int)P.second.use_range);
+
+               }
+               fclose( domien);
+       } else
+               fprintf( stderr, "failed to open $EXPROOT/.AD_profiles for 
writing\n");
+}
 
 
 void
@@ -966,7 +1033,7 @@ try_download()
                      " rm -f \"%s\" && "
                      " echo \"Sample data set downloaded and unpacked\" && "
                      " read -p \"Press <Enter> to close this window...\"'",
-                     ED->session_dir(), url, archive_file, archive_file);
+                     ED->session_dir().c_str(), url, archive_file, 
archive_file);
        aghui::SBusyBlock bb (wMainWindow);
 
        if ( system( __buf__) ) {
diff --git a/src/ui/ed.hh b/src/ui/ed.hh
index 6d9130d..d7a389c 100644
--- a/src/ui/ed.hh
+++ b/src/ui/ed.hh
@@ -234,6 +234,8 @@ class SExpDesignUI
        };
        map<string, SDetectArtifactsParamPack>
                global_artifact_detection_profiles;
+       void load_artifact_detection_profiles();
+       void save_artifact_detection_profiles() const;
 
       // own variables aka saved settings
        sigfile::TMetricType
diff --git a/src/ui/ed_cb.cc b/src/ui/ed_cb.cc
index 201f7ed..5a4f00e 100644
--- a/src/ui/ed_cb.cc
+++ b/src/ui/ed_cb.cc
@@ -192,7 +192,7 @@ iMontageResetAll_activate_cb( GtkMenuItem*, gpointer 
userdata)
        auto& ED = *(SExpDesignUI*)userdata;
 
        snprintf_buf( "find '%s' -name '.*.montage' -delete",
-                     ED.ED->session_dir());
+                     ED.ED->session_dir().c_str());
        if ( system( __buf__) )
                pop_ok_message( ED.wMainWindow, "Command '%s' returned a 
non-zero status. This is weird.", __buf__);
 }
diff --git a/src/ui/sf-patterns.cc b/src/ui/sf-patterns.cc
index e28e026..a1f106f 100644
--- a/src/ui/sf-patterns.cc
+++ b/src/ui/sf-patterns.cc
@@ -255,7 +255,7 @@ aghui::SScoringFacility::SFindDialog::
 load_pattern( const char *label, bool do_globally)
 {
        if ( do_globally ) {
-               snprintf_buf( "%s/.patterns/%s", _p._p.ED->session_dir(), 
label);
+               snprintf_buf( "%s/.patterns/%s", 
_p._p.ED->session_dir().c_str(), label);
        } else {
                string j_dir = _p._p.ED->subject_dir( _p.csubject());
                snprintf_buf( "%s/.patterns/%s", j_dir.c_str(), label);
@@ -316,10 +316,10 @@ aghui::SScoringFacility::SFindDialog::
 save_pattern( const char *label, bool do_globally)
 {
        if ( do_globally ) {
-               snprintf_buf( "%s/.patterns", _p._p.ED->session_dir());
+               snprintf_buf( "%s/.patterns", _p._p.ED->session_dir().c_str());
                if ( mkdir( __buf__, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | 
S_IXOTH) )
                        fprintf( stderr, 
"SScoringFacility::SFindDialog::save_pattern(): mkdir('%s') failed\n", __buf__);
-               snprintf_buf( "%s/.patterns/%s", _p._p.ED->session_dir(), 
label);
+               snprintf_buf( "%s/.patterns/%s", 
_p._p.ED->session_dir().c_str(), label);
        } else {
                string j_dir = _p._p.ED->subject_dir( _p.csubject());
                snprintf_buf( "%s/.patterns", j_dir.c_str());
@@ -348,7 +348,7 @@ aghui::SScoringFacility::SFindDialog::
 discard_pattern( const char *label, bool do_globally)
 {
        if ( do_globally ) {
-               snprintf_buf( "%s/.patterns/%s", _p._p.ED->session_dir(), 
label);
+               snprintf_buf( "%s/.patterns/%s", 
_p._p.ED->session_dir().c_str(), label);
        } else {
                string j_dir = _p._p.ED->subject_dir( _p.csubject());
                snprintf_buf( "%s/.patterns/%s", j_dir.c_str(), label);
@@ -433,7 +433,7 @@ enumerate_patterns_to_combo()
 
        struct dirent **eps;
        int n;
-       snprintf_buf( "%s/.patterns", _p._p.ED->session_dir());
+       snprintf_buf( "%s/.patterns", _p._p.ED->session_dir().c_str());
        n = scandir( __buf__, &eps, scandir_filter, alphasort);
 //     printf( "n = %d in %s\n", n, __buf__);
        if ( n >= 0 ) {

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to