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

andrei zavada jh at johnhommer.com
Thu Jan 24 00:43:56 UTC 2013


The following commit has been merged in the master branch:
commit f97f170f32f88cc04ae6e6365d3971d1864b4807
Author: andrei zavada <jh at johnhommer.com>
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



More information about the debian-med-commit mailing list