The following commit has been merged in the master branch:
commit 06bda7dfaa687aaf0708a024d192024e2cd58421
Author: Andrei Zavada <[email protected]>
Date:   Thu Jan 24 02:43:11 2013 +0200

    now fixing bugs in patterns

diff --git a/data/sf-patterns.glade b/data/sf-patterns.glade
index 7a1be6c..31201bb 100644
--- a/data/sf-patterns.glade
+++ b/data/sf-patterns.glade
@@ -1,90 +1,90 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkMenu" id="iiSFFDField">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkMenuItem" id="menuitem4">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">menuitem4</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-  </object>
-  <object class="GtkAdjustment" id="jPatternBandPassFrom">
-    <property name="upper">8</property>
-    <property name="value">0.25</property>
-    <property name="step_increment">0.25</property>
-    <property name="page_increment">1</property>
-  </object>
-  <object class="GtkAdjustment" id="jPatternBandPassOrder">
+  <object class="GtkAdjustment" id="jSFFDBandPassOrder">
     <property name="lower">1</property>
     <property name="upper">5</property>
     <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkAdjustment" id="jPatternBandPassUpto">
+  <object class="GtkAdjustment" id="jSFFDBandPassUpto">
     <property name="upper">100</property>
     <property name="value">1.5</property>
     <property name="step_increment">0.25</property>
     <property name="page_increment">1</property>
   </object>
-  <object class="GtkAdjustment" id="jPatternDZCDFSigma">
-    <property name="lower">0.01</property>
-    <property name="upper">10</property>
-    <property name="step_increment">0.01</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="jPatternDZCDFSmooth">
-    <property name="upper">12</property>
-    <property name="value">1</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">3</property>
-  </object>
-  <object class="GtkAdjustment" id="jPatternDZCDFStep">
-    <property name="lower">0.10000000000000001</property>
-    <property name="upper">5</property>
-    <property name="step_increment">0.10000000000000001</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="jPatternEnvTightness">
-    <property name="lower">0.050000000000000003</property>
-    <property name="upper">20</property>
-    <property name="value">0.25</property>
-    <property name="step_increment">0.01</property>
-    <property name="page_increment">5</property>
-  </object>
-  <object class="GtkAdjustment" id="jPatternStrictnessA">
+  <object class="GtkAdjustment" id="jSFFDCriterionA">
     <property name="lower">0.01</property>
     <property name="upper">100</property>
     <property name="value">0.10000000000000001</property>
     <property name="step_increment">0.01</property>
     <property name="page_increment">1</property>
   </object>
-  <object class="GtkAdjustment" id="jPatternStrictnessB">
+  <object class="GtkAdjustment" id="jSFFDCriterionB">
     <property name="lower">0.01</property>
     <property name="upper">100</property>
     <property name="value">0.10000000000000001</property>
     <property name="step_increment">0.01</property>
     <property name="page_increment">1</property>
   </object>
-  <object class="GtkAdjustment" id="jPatternStrictnessC">
+  <object class="GtkAdjustment" id="jSFFDCriterionC">
     <property name="lower">0.01</property>
     <property name="upper">100</property>
     <property name="value">0.10000000000000001</property>
     <property name="step_increment">0.010000003501772881</property>
     <property name="page_increment">1</property>
   </object>
-  <object class="GtkAdjustment" id="jPatternStrictnessD">
+  <object class="GtkAdjustment" id="jSFFDCriterionD">
     <property name="lower">0.01</property>
     <property name="upper">2</property>
     <property name="value">0.10000000000000001</property>
     <property name="step_increment">0.01</property>
     <property name="page_increment">0.10000000000000001</property>
   </object>
+  <object class="GtkAdjustment" id="jSFFDDZCDFSigma">
+    <property name="lower">0.01</property>
+    <property name="upper">10</property>
+    <property name="step_increment">0.01</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="jSFFDDZCDFSmooth">
+    <property name="upper">12</property>
+    <property name="value">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">3</property>
+  </object>
+  <object class="GtkAdjustment" id="jSFFDDZCDFStep">
+    <property name="lower">0.10000000000000001</property>
+    <property name="upper">5</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="jSFFDEnvTightness">
+    <property name="lower">0.050000000000000003</property>
+    <property name="upper">20</property>
+    <property name="value">0.25</property>
+    <property name="step_increment">0.01</property>
+    <property name="page_increment">5</property>
+  </object>
+  <object class="GtkMenu" id="iiSFFDField">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkMenuItem" id="menuitem4">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">menuitem4</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="jSFFDBandPassFrom">
+    <property name="upper">8</property>
+    <property name="value">0.25</property>
+    <property name="step_increment">0.25</property>
+    <property name="page_increment">1</property>
+  </object>
   <object class="GtkDialog" id="wSFFD">
     <property name="can_focus">False</property>
     <property name="border_width">10</property>
@@ -398,6 +398,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDDZCDFSigma</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -421,6 +422,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDBandPassFrom</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -503,6 +505,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDBandPassOrder</property>
                             <property name="snap_to_ticks">True</property>
                             <property name="numeric">True</property>
                           </object>
@@ -589,6 +592,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDDZCDFStep</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -662,6 +666,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDEnvTightness</property>
                             <property name="digits">2</property>
                             <property name="snap_to_ticks">True</property>
                             <property name="numeric">True</property>
@@ -746,6 +751,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDDZCDFSmooth</property>
                             <property name="snap_to_ticks">True</property>
                             <property name="numeric">True</property>
                           </object>
@@ -801,6 +807,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDBandPassUpto</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -874,6 +881,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDCriterionA</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -918,6 +926,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDCriterionB</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -962,6 +971,7 @@
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDCriterionC</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
@@ -1039,6 +1049,7 @@ on individual parameters</property>
                             <property name="invisible_char_set">True</property>
                             <property 
name="primary_icon_activatable">False</property>
                             <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="adjustment">jSFFDCriterionD</property>
                             <property name="digits">2</property>
                             <property name="numeric">True</property>
                           </object>
diff --git a/src/patterns/patterns.cc b/src/patterns/patterns.cc
index b557453..34a0fe5 100644
--- a/src/patterns/patterns.cc
+++ b/src/patterns/patterns.cc
@@ -112,7 +112,7 @@ int
 save_pattern( SPattern<TFloat>& P, const char* fname)
 {
        if ( agh::fs::mkdir_with_parents( agh::fs::dirname(fname)) ) {
-               fprintf( stderr, "save_pattern(\"%s\"): mkdir failed\n", fname);
+               fprintf( stderr, "save_pattern(\"%s\"): mkdir %s failed\n", 
fname, agh::fs::dirname(fname).c_str());
                return -1;
        }
 
diff --git a/src/ui/sf/sf-patterns-enumerate.cc 
b/src/ui/sf/sf-patterns-enumerate.cc
index b958791..d1fdb13 100644
--- a/src/ui/sf/sf-patterns-enumerate.cc
+++ b/src/ui/sf/sf-patterns-enumerate.cc
@@ -41,7 +41,7 @@ import_from_selection( SScoringFacility::SChannel& field)
                context_before, context_after,
                Pp2, criteria};
        // transient is always the last
-       ((patterns.back().origin == pattern::TOrigin::transient)
+       ((not patterns.empty() and patterns.back().origin == 
pattern::TOrigin::transient)
         ? patterns.back()
         : (patterns.push_back( pattern::SPattern<TFloat> ()), patterns.back())
                ) = tim;
@@ -65,7 +65,7 @@ import_from_selection( SScoringFacility::SChannel& field)
 
 const char*
        origin_markers[5] = {
-       "[S]", "[U]", "[E]", "", "~",
+       "~", "[S]", "[E]", "[U]", "<S>",
 };
 
 string
@@ -140,18 +140,22 @@ populate_combo()
        g_signal_handler_block( _p.eSFFDPatternList, 
_p.eSFFDPatternList_changed_cb_handler_id);
        gtk_list_store_clear( _p.mSFFDPatterns);
 
-       GtkTreeIter iter, current_pattern_iter;
-       for ( auto I = patterns.begin(); I != patterns.end(); ++I ) {
-               snprintf_buf( "%s %s", origin_markers[I->origin], 
I->name.c_str());
-               gtk_list_store_append( _p.mSFFDPatterns, &iter);
-               gtk_list_store_set( _p.mSFFDPatterns, &iter,
-                                   0, __buf__,
-                                   -1);
-               if ( I == current_pattern )
-                       current_pattern_iter = iter;
-       }
-
-       gtk_combo_box_set_active_iter( _p.eSFFDPatternList, 
&current_pattern_iter);
+       if ( not patterns.empty() ) {
+               GtkTreeIter iter, current_pattern_iter;
+               for ( auto I = patterns.begin(); I != patterns.end(); ++I ) {
+                       snprintf_buf( "%s %s", origin_markers[I->origin], 
I->name.c_str());
+                       gtk_list_store_append( _p.mSFFDPatterns, &iter);
+                       gtk_list_store_set( _p.mSFFDPatterns, &iter,
+                                           0, __buf__,
+                                           -1);
+                       if ( I == current_pattern )
+                               current_pattern_iter = iter;
+               }
+
+               gtk_combo_box_set_active_iter( _p.eSFFDPatternList, 
&current_pattern_iter);
+       } else
+               gtk_combo_box_set_active_iter( _p.eSFFDPatternList, NULL);
+
        g_signal_handler_unblock( _p.eSFFDPatternList, 
_p.eSFFDPatternList_changed_cb_handler_id);
 }
 
@@ -193,7 +197,6 @@ discard_current_pattern()
        current_pattern = next(current_pattern);
        pattern::delete_pattern( *todelete);
        patterns.erase( todelete);
-       populate_combo();
 }
 
 
diff --git a/src/ui/sf/sf-patterns.cc b/src/ui/sf/sf-patterns.cc
index 14acf57..f789fe6 100644
--- a/src/ui/sf/sf-patterns.cc
+++ b/src/ui/sf/sf-patterns.cc
@@ -160,11 +160,13 @@ void
 aghui::SScoringFacility::SFindDialog::
 setup_controls_for_find()
 {
-       gtk_widget_set_visible( (GtkWidget*)_p.cSFFDSearchButton, TRUE);
+       bool    have_any = current_pattern != patterns.end();
+
+       gtk_widget_set_visible( (GtkWidget*)_p.cSFFDSearchButton, have_any and 
TRUE);
        gtk_widget_set_visible( (GtkWidget*)_p.cSFFDSearching, FALSE);
        gtk_widget_set_visible( (GtkWidget*)_p.cSFFDAgainButton, FALSE);
 
-       gtk_widget_set_visible( (GtkWidget*)_p.cSFFDParameters, TRUE);
+       gtk_widget_set_visible( (GtkWidget*)_p.cSFFDParameters, have_any and 
TRUE);
 
        gtk_widget_set_visible( (GtkWidget*)_p.swSFFDField, FALSE);
        gtk_widget_set_visible( (GtkWidget*)_p.cSFFDCriteria, FALSE);
@@ -206,11 +208,12 @@ void
 aghui::SScoringFacility::SFindDialog::
 set_profile_manage_buttons_visibility()
 {
-       bool    is_transient = (current_pattern != patterns.end()) && 
current_pattern->origin == pattern::TOrigin::transient,
-               is_modified  = (current_pattern != patterns.end()) && not 
(current_pattern->Pp == Pp2);
-       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileSave, is_transient);
-       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileRevert, not 
is_transient and is_modified);
-       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileDiscard, not 
is_transient);
+       bool    have_any = current_pattern != patterns.end(),
+               is_transient = have_any && current_pattern->origin == 
pattern::TOrigin::transient,
+               is_modified  = have_any && not (current_pattern->Pp == Pp2);
+       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileSave, have_any and 
is_transient);
+       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileRevert, have_any and 
not is_transient and is_modified);
+       gtk_widget_set_visible( (GtkWidget*)_p.bSFFDProfileDiscard, have_any 
and not is_transient);
 }
 
 
diff --git a/src/ui/sf/sf-patterns_cb.cc b/src/ui/sf/sf-patterns_cb.cc
index fca8ad9..2e1ae5b 100644
--- a/src/ui/sf/sf-patterns_cb.cc
+++ b/src/ui/sf/sf-patterns_cb.cc
@@ -112,7 +112,9 @@ daSFFDField_button_press_event_cb( GtkWidget *wid, 
GdkEventButton *event, gpoint
 
        switch ( event->button ) {
        case 1:
-               SF.set_cur_vpage( 
((double)FD.occurrences[FD.highlighted_occurrence] / FD.diff_line.size()) * 
SF.total_vpages());
+               if ( FD.highlighted_occurrence != (size_t)-1 )
+                       SF.set_cur_vpage(
+                               
((double)FD.occurrences[FD.highlighted_occurrence] / FD.diff_line.size()) * 
SF.total_vpages());
            break;
        case 3:
                gtk_menu_popup( SF.iiSFFDField,
@@ -289,9 +291,12 @@ bSFFDProfileSave_clicked_cb( GtkButton *button, gpointer 
userdata)
                        : gtk_toggle_button_get_active( 
SF.eSFFDPatternSaveOriginExperiment)
                        ? pattern::TOrigin::experiment
                        : pattern::TOrigin::user;
-       }
+               P.Pp = FD.Pp2;
+               P.criteria = FD.criteria;
 
-       FD.populate_combo();
+               FD.populate_combo();
+               FD.set_profile_manage_buttons_visibility();
+       }
 }
 
 
@@ -305,19 +310,22 @@ bSFFDProfileDiscard_clicked_cb( GtkButton *button, 
gpointer userdata)
 
        assert ( FD.current_pattern != FD.patterns.end() );
        assert ( FD.current_pattern->origin != pattern::TOrigin::transient );
-       assert ( ci == -1 );
+       assert ( ci != -1 );
        assert ( ci < (int)FD.patterns.size() );
 
        FD.discard_current_pattern();
 
-       FD.Pp2 = FD.current_pattern->Pp;
-       FD.criteria = FD.current_pattern->criteria;
+       if ( not FD.patterns.empty() ) {
+               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.suppress_w_v = true;
+               FD.W_V.up();
+               FD.suppress_w_v = false;
+       }
 
        FD.populate_combo();
+       FD.set_profile_manage_buttons_visibility();
 }
 
 
@@ -374,6 +382,7 @@ wSFFD_show_cb( GtkWidget *widget, gpointer userdata)
 
        FD.setup_controls_for_find();
        FD.populate_combo();
+       FD.set_profile_manage_buttons_visibility();
 
        if ( FD._p.using_channel == nullptr ) // not invoked for a preselected 
signal via a menu
                FD._p.using_channel = &FD._p.channels.front();

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