The following commit has been merged in the master branch:
commit f97f170f32f88cc04ae6e6365d3971d1864b4807
Author: andrei zavada <[email protected]>
Date:   Tue Jan 22 18:53:01 2013 +0000

    patterns WIP

diff --git a/src/ui/sf/sf-patterns-enumerate.cc 
b/src/ui/sf/sf-patterns-enumerate.cc
index 3097c81..675ad84 100644
--- a/src/ui/sf/sf-patterns-enumerate.cc
+++ b/src/ui/sf/sf-patterns-enumerate.cc
@@ -133,20 +133,19 @@ load_patterns()
 
 void
 aghui::SScoringFacility::SFindDialog::
-enumerate_patterns_to_combo()
+populate_combo()
 {
        g_signal_handler_block( _p.eSFFDPatternList, 
_p.eSFFDPatternList_changed_cb_handler_id);
        gtk_list_store_clear( _p.mSFFDPatterns);
 
        GtkTreeIter iter;
-       for ( auto& P : patterns )
-               if ( P.origin != pattern::TOrigin::discard ) {
-                       snprintf_buf( "%s %s", origin_markers[P.origin], 
P.name.c_str());
-                       gtk_list_store_append( _p.mSFFDPatterns, &iter);
-                       gtk_list_store_set( _p.mSFFDPatterns, &iter,
-                                           0, __buf__,
-                                           -1);
-               }
+       for ( auto& P : patterns ) {
+               snprintf_buf( "%s %s", origin_markers[P.origin], 
P.name.c_str());
+               gtk_list_store_append( _p.mSFFDPatterns, &iter);
+               gtk_list_store_set( _p.mSFFDPatterns, &iter,
+                                   0, __buf__,
+                                   -1);
+       }
 
        gtk_combo_box_set_active_iter( _p.eSFFDPatternList, NULL);
        g_signal_handler_unblock( _p.eSFFDPatternList, 
_p.eSFFDPatternList_changed_cb_handler_id);
diff --git a/src/ui/sf/sf-patterns.cc b/src/ui/sf/sf-patterns.cc
index 334bfc0..b9b0472 100644
--- a/src/ui/sf/sf-patterns.cc
+++ b/src/ui/sf/sf-patterns.cc
@@ -51,8 +51,8 @@ aghui::SScoringFacility::SFindDialog::
 {
        save_patterns();
 
-       if ( cpattern )
-               delete cpattern;
+       assert ( cpattern );
+
        // g_object_unref( mPatterns);
        gtk_widget_destroy( (GtkWidget*)_p.wSFFDPatternName);
        gtk_widget_destroy( (GtkWidget*)_p.wSFFD);
@@ -60,6 +60,19 @@ aghui::SScoringFacility::SFindDialog::
 
 
 
+list<pattern::SPattern<TFloat>>::iterator
+aghui::SScoringFacility::SFindDialog::
+pattern_by_idx( size_t idx)
+{
+       int i = 0;
+       for ( auto I : patterns )
+               if ( i == idx )
+                       return *I;
+               else
+                       ++i;
+       throw invalid_argument ("Current pattern index invalid");       
+}
+
 
 
 
diff --git a/src/ui/sf/sf-patterns_cb.cc b/src/ui/sf/sf-patterns_cb.cc
index 92803ec..a86ff6b 100644
--- a/src/ui/sf/sf-patterns_cb.cc
+++ b/src/ui/sf/sf-patterns_cb.cc
@@ -17,10 +17,6 @@
 
 using namespace std;
 
-
-#define globally_G_marker "[G]"
-#define globally_E_marker "[E]"
-
 using namespace aghui;
 
 extern "C" {
@@ -253,20 +249,20 @@ eSFFDPatternList_changed_cb( GtkComboBox *combo, gpointer 
userdata)
        auto& SF = *(SScoringFacility*)userdata;
        auto& FD = SF.find_dialog;
 
-       if ( FD.Q ) {
-               FD.Q->Pp = FD.Pp2;
-               FD.Q->criteria = FD.criteria;
+       if ( FD.current_pattern ) {
+               FD.current_pattern->Pp = FD.Pp2;
+               FD.current_pattern->criteria = FD.criteria;
        }
 
        gint ci = gtk_combo_box_get_active( combo);
        if ( ci == -1 )
                return;
 
-       FD.Q = &FD.patterns[ci];
-       FD.Pp2 = FD.Q->Pp;
-       FD.criteria = FD.Q->criteria;
+       auto& now_current = FD.pattern_by_idx(ci);
+       FD.Pp2 = now_current->Pp;
+       FD.criteria = now_current->criteria;
 
-       gtk_widget_queue_draw( (GtkWidget*)FD._p.daSFFDThing);
+       gtk_widget_queue_draw( (GtkWidget*)SF.daSFFDThing);
 }
 
 
@@ -277,18 +273,19 @@ bSFFDProfileSave_clicked_cb( GtkButton *button, gpointer 
userdata)
        auto& SF = *(SScoringFacility*)userdata;
        auto& FD = SF.find_dialog;
 
-       assert ( FD.Q->origin != pattern::TOrigin::transient );
+       assert (FD.current_pattern.origin == pattern::TOrigin::transient );
 
+       auto& P = FD.current_pattern;
        if ( gtk_dialog_run( SF.wSFFDPatternName) == GTK_RESPONSE_OK ) {
-               FD.Q->name = gtk_entry_get_text( SF.eSFFDPatternNameName);
-               FD.Q->origin = gtk_toggle_button_get_active( 
SF.eSFFDPatternNameOriginSubject)
+               P.name = gtk_entry_get_text( SF.eSFFDPatternNameName);
+               P.origin = gtk_toggle_button_get_active( 
SF.eSFFDPatternNameOriginSubject)
                        ? pattern::TOrigin::subject
                        : gtk_toggle_button_get_active( 
SF.eSFFDPatternNameOriginExperiment)
                        ? pattern::TOrigin::experiment
                        : pattern::TOrigin::user;
        }
 
-       FD.enumerate_patterns_to_combo();
+       FD.populate_combo();
 }
 
 
@@ -304,12 +301,16 @@ bSFFDProfileDiscard_clicked_cb( GtkButton *button, 
gpointer userdata)
        assert ( ci == -1 );
        assert ( ci < FD.patterns.size() );
 
-       pattern::delete_pattern( FD.Q);
-       erase( 
+       pattern::delete_pattern( *FD.current_pattern);
+       erase( FD.current_pattern);
 
-       FD.Q = &FD.patterns[ci];
-       FD.Pp2 = FD.Q->Pp;
-       FD.criteria = FD.Q->criteria;
+       FD.current_pattern = &FD.pattern_by_idx(ci);
+       FD.Pp2 = FD.current_pattern->Pp;
+       FD.criteria = FD.current_pattern->criteria;
+
+       FD.suppress_w_v = true;
+       FD.W_V.up();
+       FD.suppress_w_v = false;
 
        FD.enumerate_patterns_to_combo();
        g_signal_handler_block( FD._p.eSFFDPatternList, 
FD._p.eSFFDPatternList_changed_cb_handler_id);
@@ -324,11 +325,10 @@ bSFFDProfileRevert_clicked_cb( GtkButton *button, 
gpointer userdata)
        auto& SF = *(SScoringFacility*)userdata;
        auto& FD = SF.find_dialog;
 
-       assert ( FD.Q );
-       assert ( FD.Q->origin != pattern::TOrigin::transient );
+       assert ( FD.current_pattern->origin != pattern::TOrigin::transient );
 
-       FD.Pp2 = FD.Q->Pp;
-       FD.criteria = FD.Q->criteria;
+       FD.Pp2 = FD.current_pattern->Pp;
+       FD.criteria = FD.current_pattern->criteria;
 
        FD.suppress_w_v = true;
        FD.W_V.up();
diff --git a/src/ui/sf/sf.hh b/src/ui/sf/sf.hh
index d40bc06..5ed55d2 100644
--- a/src/ui/sf/sf.hh
+++ b/src/ui/sf/sf.hh
@@ -508,12 +508,15 @@ class SScoringFacility
              // saved patterns
                list<pattern::SPattern<TFloat>>
                        patterns;
-               int     Q;
+               list<pattern::SPattern<TFloat>>::iterator
+                       current_pattern;
+               list<pattern::SPattern<TFloat>>::iterator
+               pattern_by_idx( size_t);
 
                void import_from_selection( SScoringFacility::SChannel&);
                void load_patterns();
                void save_patterns();
-               void enumerate_patterns_to_combo();
+               void populate_combo();
 
              // finding tool
                pattern::SPatternPPack<TFloat>

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