The following commit has been merged in the master branch:
commit 0071773656bb9cb46011bd131dfcfd19afc92054
Author: Andrei Zavada <[email protected]>
Date:   Sun Feb 3 12:44:27 2013 +0200

    make own copies of, filter all EEG channels in SF dialogs for subjects w/ 
partial channel set

diff --git a/src/ui/sf/d/patterns-construct.cc 
b/src/ui/sf/d/patterns-construct.cc
index 24cf66a..973a66f 100644
--- a/src/ui/sf/d/patterns-construct.cc
+++ b/src/ui/sf/d/patterns-construct.cc
@@ -24,6 +24,8 @@ SPatternsDialogWidgets (SScoringFacility& SF)
 
        mSFFDPatterns =
                gtk_list_store_new( 1, G_TYPE_STRING);
+       mSFFDChannels =
+               gtk_list_store_new( 1, G_TYPE_STRING);
 
        if ( !AGH_GBGETOBJ (GtkDialog,          wSFFD) ||
             !AGH_GBGETOBJ (GtkDrawingArea,     daSFFDThing) ||
@@ -76,7 +78,15 @@ SPatternsDialogWidgets (SScoringFacility& SF)
        eSFFDPatternList_changed_cb_handler_id =
                G_CONNECT_1 (eSFFDPatternList, changed);
 
-       gtk_combo_box_set_model_properly( eSFFDChannel, SF._p.mAllChannels);
+       // filter channels we don't have
+       for ( auto &H : SF.channels ) {
+               GtkTreeIter iter;
+               gtk_list_store_append( mSFFDChannels, &iter);
+               gtk_list_store_set( mSFFDChannels, &iter,
+                                   0, H.name,
+                                   -1);
+       }
+       gtk_combo_box_set_model_properly( eSFFDChannel, mSFFDChannels);
        eSFFDChannel_changed_cb_handler_id =
                G_CONNECT_1 (eSFFDChannel, changed);
 
@@ -129,6 +139,8 @@ aghui::SPatternsDialogWidgets::
 {
        // destroy toplevels
        gtk_widget_destroy( (GtkWidget*)wSFFD);
+       g_object_unref( (GObject*)mSFFDPatterns);
+       g_object_unref( (GObject*)mSFFDChannels);
        g_object_unref( (GObject*)builder);
 }
 
diff --git a/src/ui/sf/d/patterns.hh b/src/ui/sf/d/patterns.hh
index b1d413f..aa04cde 100644
--- a/src/ui/sf/d/patterns.hh
+++ b/src/ui/sf/d/patterns.hh
@@ -32,7 +32,8 @@ struct SPatternsDialogWidgets {
        GtkBuilder *builder;
 
        GtkListStore
-               *mSFFDPatterns;
+               *mSFFDPatterns,
+               *mSFFDChannels;
        GtkDialog
                *wSFFD;
        GtkComboBox
diff --git a/src/ui/sf/d/phasediff-construct.cc 
b/src/ui/sf/d/phasediff-construct.cc
index 91a07b3..0aa297e 100644
--- a/src/ui/sf/d/phasediff-construct.cc
+++ b/src/ui/sf/d/phasediff-construct.cc
@@ -22,6 +22,9 @@ SPhasediffDialogWidgets (SScoringFacility& SF)
                throw runtime_error( "Failed to load SF::phasediff glade 
resource");
        gtk_builder_connect_signals( builder, NULL);
 
+       mSFPDChannels =
+               gtk_list_store_new( 1, G_TYPE_STRING);
+
        if ( !(AGH_GBGETOBJ (GtkDialog,         wSFPD)) ||
             !(AGH_GBGETOBJ (GtkDrawingArea,    daSFPD)) ||
             !(AGH_GBGETOBJ (GtkComboBox,       eSFPDChannelA)) ||
@@ -31,12 +34,23 @@ SPhasediffDialogWidgets (SScoringFacility& SF)
             !(AGH_GBGETOBJ (GtkScaleButton,    eSFPDSmooth)) )
                throw runtime_error ("Failed to construct SF widgets (11)");
 
+       // filter channels we don't have
+       for ( auto &H : SF.channels )
+               if ( H.type == sigfile::SChannel::TType::eeg ) {
+                       GtkTreeIter iter;
+                       gtk_list_store_append( mSFPDChannels, &iter);
+                       gtk_list_store_set( mSFPDChannels, &iter,
+                                           0, H.name,
+                                           -1);
+               }
+
        gtk_combo_box_set_model_properly(
-               eSFPDChannelA, SF._p.mEEGChannels);
+               eSFPDChannelA, mSFPDChannels);
        eSFPDChannelA_changed_cb_handler_id =
                G_CONNECT_1 (eSFPDChannelA, changed);
 
-       gtk_combo_box_set_model_properly( eSFPDChannelB, SF._p.mEEGChannels);
+       gtk_combo_box_set_model_properly(
+               eSFPDChannelB, mSFPDChannels);
        eSFPDChannelB_changed_cb_handler_id =
                G_CONNECT_1 (eSFPDChannelB, changed);
 
@@ -57,6 +71,7 @@ aghui::SPhasediffDialogWidgets::
 {
        gtk_widget_destroy( (GtkWidget*)wSFPD);
        g_object_unref( (GObject*)builder);
+       g_object_unref( (GObject*)mSFPDChannels);
 }
 
 
diff --git a/src/ui/sf/d/phasediff.hh b/src/ui/sf/d/phasediff.hh
index f38edca..39a3e90 100644
--- a/src/ui/sf/d/phasediff.hh
+++ b/src/ui/sf/d/phasediff.hh
@@ -29,6 +29,9 @@ struct SPhasediffDialogWidgets {
 
        GtkBuilder *builder;
 
+       GtkListStore
+               *mSFPDChannels;
+
        // phasediff dialog
        GtkDialog
                *wSFPD;

-- 
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