This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository aghermann.

commit ae0732e7c6273b776171136efc8c26eeba669ce0
Author: Andrei Zavada <[email protected]>
Date:   Sun Aug 4 02:03:36 2013 +0300

    move common code for hypnogram im/export from menu callbacks to hypnogram.cc
---
 src/aghermann/ui/sf/hypnogram.cc    |   84 ++++++++++++++++++++++++++++++++++-
 src/aghermann/ui/sf/hypnogram_cb.cc |   57 ++----------------------
 src/aghermann/ui/sf/mainmenu_cb.cc  |   11 +++--
 src/aghermann/ui/sf/sf.hh           |    4 +-
 4 files changed, 97 insertions(+), 59 deletions(-)

diff --git a/src/aghermann/ui/sf/hypnogram.cc b/src/aghermann/ui/sf/hypnogram.cc
index d9a8fec..7ff9b6b 100644
--- a/src/aghermann/ui/sf/hypnogram.cc
+++ b/src/aghermann/ui/sf/hypnogram.cc
@@ -10,7 +10,7 @@
  */
 
 
-
+#include <fstream>
 
 #include <cairo/cairo.h>
 
@@ -119,6 +119,88 @@ draw_hypnogram( cairo_t *cr)
 
 
 
+
+
+
+
+void
+aghui::SScoringFacility::
+do_dialog_import_hypnogram()
+{
+       GtkWidget *f_chooser =
+               gtk_file_chooser_dialog_new(
+                       "Import Scores",
+                       NULL,
+                       GTK_FILE_CHOOSER_ACTION_OPEN,
+                       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                       NULL);
+       if ( gtk_dialog_run( (GtkDialog*)f_chooser) == GTK_RESPONSE_ACCEPT ) {
+               gchar *fname = gtk_file_chooser_get_filename( 
(GtkFileChooser*)f_chooser);
+               // count lines first
+               ifstream f (fname);
+               string t;
+               size_t c = 0;
+               while ( not getline(f, t).eof() )
+                       ++c;
+               size_t our_pages = sepisode().sources.front().pages();
+               if ( c != our_pages && // allow for last page scored but 
discarded in CHypnogram as incomplete
+                    c != our_pages+1 )
+                       pop_ok_message(
+                               wSF,
+                               "Page count in current hypnogram (%zu,"
+                               " even allowing for one incomplete extra) is 
not equal"
+                               " to the number of lines in <i>%s</i> 
(%zu).\n\n"
+                               "Please trim the file contents and try again.",
+                               fname, c, our_pages);
+               else {
+                       for ( auto &F : sepisode().sources )
+                               F.load_canonical( fname, _p.ext_score_codes);
+                       get_hypnogram();
+                       calculate_scored_percent();
+                       queue_redraw_all();
+               }
+       }
+       gtk_widget_destroy( f_chooser);
+}
+
+
+void
+aghui::SScoringFacility::
+do_dialog_export_hypnogram() const
+{
+       GtkWidget *f_chooser =
+               gtk_file_chooser_dialog_new(
+                       "Export Scores",
+                       NULL,
+                       GTK_FILE_CHOOSER_ACTION_SAVE,
+                       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                       NULL);
+       if ( gtk_dialog_run( (GtkDialog*)f_chooser) == GTK_RESPONSE_ACCEPT ) {
+               gchar *fname = gtk_file_chooser_get_filename( 
(GtkFileChooser*)f_chooser);
+               // put_hypnogram();  // side-effect being, implicit flash of 
SScoringFacility::sepisode.sources // do this elsewhere
+               sepisode().sources.front().save_canonical( fname);
+       }
+       gtk_widget_destroy( f_chooser);
+}
+
+
+
+void
+aghui::SScoringFacility::
+do_clear_hypnogram()
+{
+       hypnogram.assign(
+               hypnogram.size(),
+               sigfile::SPage::score_code( sigfile::SPage::TScore::none));
+       put_hypnogram();  // side-effect being, implicit flash of 
SScoringFacility::sepisode.sources
+       calculate_scored_percent();
+       queue_redraw_all();
+}
+
+
+
 // Local Variables:
 // Mode: c++
 // indent-tabs-mode: 8
diff --git a/src/aghermann/ui/sf/hypnogram_cb.cc 
b/src/aghermann/ui/sf/hypnogram_cb.cc
index 8f93f8a..0c108e8 100644
--- a/src/aghermann/ui/sf/hypnogram_cb.cc
+++ b/src/aghermann/ui/sf/hypnogram_cb.cc
@@ -9,8 +9,6 @@
  *         License:  GPL
  */
 
-#include <fstream>
-
 #include "aghermann/rk1968/rk1968.hh"
 #include "aghermann/ui/globals.hh"
 #include "sf.hh"
@@ -124,41 +122,7 @@ iSFScoreImport_activate_cb(
 {
        auto& SF = *(SScoringFacility*)userdata;
 
-       GtkWidget *f_chooser =
-               gtk_file_chooser_dialog_new(
-                       "Import Scores",
-                       NULL,
-                       GTK_FILE_CHOOSER_ACTION_OPEN,
-                       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-                       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
-                       NULL);
-       if ( gtk_dialog_run( (GtkDialog*)f_chooser) == GTK_RESPONSE_ACCEPT ) {
-               gchar *fname = gtk_file_chooser_get_filename( 
(GtkFileChooser*)f_chooser);
-               // count lines first
-               ifstream f (fname);
-               string t;
-               size_t c = 0;
-               while ( not getline(f, t).eof() )
-                       ++c;
-               size_t our_pages = SF.sepisode().sources.front().pages();
-               if ( c != our_pages && // allow for last page scored but 
discarded in CHypnogram as incomplete
-                    c != our_pages+1 )
-                       pop_ok_message(
-                               SF.wSF,
-                               "Page count in current hypnogram (%zu,"
-                               " even allowing for one incomplete extra) is 
not equal"
-                               " to the number of lines in <i>%s</i> 
(%zu).\n\n"
-                               "Please trim the file contents and try again.",
-                               fname, c, our_pages);
-               else {
-                       for ( auto &F : SF.sepisode().sources )
-                               F.load_canonical( fname, SF._p.ext_score_codes);
-                       SF.get_hypnogram();
-                       SF.calculate_scored_percent();
-                       SF.queue_redraw_all();
-               }
-       }
-       gtk_widget_destroy( f_chooser);
+       SF.do_dialog_import_hypnogram();
 }
 
 void
@@ -168,18 +132,7 @@ iSFScoreExport_activate_cb(
 {
        auto& SF = *(SScoringFacility*)userdata;
 
-       GtkWidget *f_chooser = gtk_file_chooser_dialog_new( "Export Scores",
-                                                           NULL,
-                                                           
GTK_FILE_CHOOSER_ACTION_SAVE,
-                                                           GTK_STOCK_CANCEL, 
GTK_RESPONSE_CANCEL,
-                                                           GTK_STOCK_OPEN, 
GTK_RESPONSE_ACCEPT,
-                                                           NULL);
-       if ( gtk_dialog_run( (GtkDialog*)f_chooser) == GTK_RESPONSE_ACCEPT ) {
-               gchar *fname = gtk_file_chooser_get_filename( 
(GtkFileChooser*)f_chooser);
-               SF.put_hypnogram();  // side-effect being, implicit flash of 
SScoringFacility::sepisode.sources
-               SF.sepisode().sources.front().save_canonical( fname);
-       }
-       gtk_widget_destroy( f_chooser);
+       SF.do_dialog_export_hypnogram();
 }
 
 
@@ -191,11 +144,7 @@ iSFScoreClear_activate_cb(
 {
        auto& SF = *(SScoringFacility*)userdata;
 
-       SF.hypnogram.assign( SF.hypnogram.size(),
-                            sigfile::SPage::score_code( 
sigfile::SPage::TScore::none));
-       SF.put_hypnogram();  // side-effect being, implicit flash of 
SScoringFacility::sepisode.sources
-       SF.calculate_scored_percent();
-       SF.queue_redraw_all();
+       SF.do_clear_hypnogram();
 }
 
 } // extern "C"
diff --git a/src/aghermann/ui/sf/mainmenu_cb.cc 
b/src/aghermann/ui/sf/mainmenu_cb.cc
index e2118ae..8e6e82b 100644
--- a/src/aghermann/ui/sf/mainmenu_cb.cc
+++ b/src/aghermann/ui/sf/mainmenu_cb.cc
@@ -185,7 +185,8 @@ iSFMontageScoreImport_activate_cb(
        gpointer userdata)
 {
        auto& SF = *(SScoringFacility*)userdata;
-       
+
+       SF.do_dialog_import_hypnogram();
 }
 
 void
@@ -194,7 +195,8 @@ iSFMontageScoreExport_activate_cb(
        const gpointer userdata)
 {
        const auto& SF = *(SScoringFacility*)userdata;
-       
+
+       SF.do_dialog_export_hypnogram();
 }
 
 void
@@ -203,11 +205,14 @@ iSFMontageScoreClear_activate_cb(
        gpointer userdata)
 {
        auto& SF = *(SScoringFacility*)userdata;
-       
+
+       SF.do_clear_hypnogram();
 }
 
 
 
+
+
 void
 iSFMontageClose_activate_cb(
        const GtkMenuItem*,
diff --git a/src/aghermann/ui/sf/sf.hh b/src/aghermann/ui/sf/sf.hh
index ff528d1..ad259a0 100644
--- a/src/aghermann/ui/sf/sf.hh
+++ b/src/aghermann/ui/sf/sf.hh
@@ -497,8 +497,10 @@ class SScoringFacility
   // main montage menu
     public:
        void update_main_menu_items();
+       void do_dialog_import_hypnogram();
+       void do_dialog_export_hypnogram() const;
+       void do_clear_hypnogram();
 
-    public:
        void do_score_forward( char score_ch);
        void do_score_back( char score_ch);
 

-- 
Alioth's /git/debian-med/git-commit-notice on 
/srv/git.debian.org/git/debian-med/aghermann.git

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

Reply via email to