nobody?!

        hard to believe, ==sigh==

        gary


On Mon, Apr 02, 2012 at 08:43:06PM -0700, Gary Kline wrote:
> Date: Mon, 2 Apr 2012 20:43:06 -0700
> From: Gary Kline <kl...@thought.org>
> Subject: need help with callback
> To: GTK Devel List <gtk-app-devel-list@gnome.org>
> 
>       i hope you can help me get the largest function to print 
>       [via fprintf() --to a voiceconfile file-- the 
> 
>       1) gender [M or F]
>       2) pitch
>       3) speed [of speech in words/minute]
>       4) volume [0 -- 200%]
>       5) delay [in 10th of a sec between words
> 
> 
>       originalyy, i thought coding this would be trivial.  it may
>       well be, but if so, i haven't figured it out!
> 
>       this code will be on my options dropdown.  please see
>       http://www.thought.org/vbc for my latest pix.  --this is
>       entirely raw and unpolished; there are no links besides my
>       .signature.
> 
>       the reason i am asking help is that my shoulder is giving
>       out  and i don't want to press my luck.  also because i am
>       still hard in Learn mode with gtk ... so this is one for you
>       gurus.
> 
>       thanks for insights.. 
> 
>       appended: dDemo.
> 
> 
> 
> =======
> 
> /* from here:: Options callback */
> #include <gtk/gtk.h>
> #include <string.h>
> 
> 
> enum 
> { 
>   MALE, 
>   FEMALE 
> };
> 
>   /* globals */
>   GtkWidget *gender_radio_male;
>   GtkWidget *gender_radio_female;
>   GtkWidget *pitch_scale1;
>   GtkWidget *speedWPM_scale2;
>   GtkWidget *volume_scale3;
>   GtkWidget *delay_scale4;
>   int valueGender, tgen = 0, tpit = 0, tspe = 0, tvol = 0, tdel =0;;
>   double valuePitch, valueSpeed, valueVolume, valueDelay;
>   /* end globals */
> 
> 
> static void
> cb_gender_toggled (GtkToggleButton *button, gpointer userdata)
> {
> 
> puts("within callback");
> 
>   int malefemale = (int)userdata;
> 
>   if (gtk_toggle_button_get_active (button))
>     {
>         if (malefemale == MALE)
>            {
>               fprintf(stdout, "MALE [7]\n");
>            }
>         else if (malefemale == FEMALE)
>            {
>               fprintf(stdout, "FEMALE  [13]\n");
>            }
>     }
>     valueGender = malefemale;
> }
> 
> static void hscale_value_changed_pitch (GtkRange *hscale, GtkWindow 
> *parentWindow)
> {
>     //fprintf(stderr,"hscale pitch value: %g\n",value);
> }
> 
> static void hscale_value_changed_speed (GtkRange *hscale, GtkWindow 
> *parentWindow)
> {
>     valueSpeed = gtk_range_get_value(hscale);
>     //fprintf(stderr,"hscale speed value: %g\n",value);
> }
> 
> static void hscale_value_changed_volume (GtkRange *hscale, GtkWindow 
> *parentWindow)
> {
>     valueVolume = gtk_range_get_value(hscale);
>     //fprintf(stderr,"hscale volume value: %g\n",value);
> }
> static void hscale_value_changed_delay (GtkRange *hscale, GtkWindow 
> *parentWindow)
> {
>     valueDelay = gtk_range_get_value(hscale);
>     //fprintf(stderr,"hscale delay value: %g\n",value);
> }
> 
> int
> main (int argc, char *argv[])
> {
>   /*
>    * Declare the GTK Widgets used in the program
>    */
>   GtkWidget *dialog;
>   GtkWidget *main_hbox;   //hbox1
> 
>   GtkWidget *gender_frame;
>   GtkWidget *gender_align;
>   GtkWidget *gender_hbox;  // hbox2
>   /*
>   GtkWidget *gender_radio_male;
>   GtkWidget *gender_radio_female;
>    */
> 
>   GtkWidget *params_frame;
>   GtkWidget *params_align;
> 
>   GtkWidget *params_table;
> 
>   GtkWidget *temp_widget;
>   GtkWidget *parent_window;
> 
>   /*
>      Initialize GTK
>    */
>   gtk_init (&argc, &argv);
> 
> 
>   parent_window = NULL;       //Set to parent window if you want the dialog 
> box
>                         //to block access to the other windows in the app
>                         //while it is open and running.
> 
> 
>   dialog = gtk_dialog_new_with_buttons ("Voice Settings", GTK_WINDOW 
> (parent_window), 
>     0, 
>     GTK_STOCK_REVERT_TO_SAVED,        //revert button which
>     GTK_RESPONSE_CANCEL,      //  returns a cancel response
>     GTK_STOCK_CLOSE,          //close button which
>     GTK_RESPONSE_ACCEPT,      //  returns an accept response
>     NULL                      // mark the end of our buttons (we could have 
> more)
>     );
> 
>   gtk_window_set_title ( GTK_WINDOW ( dialog ) , "VBC Espeak Options");
>   gtk_widget_set_usize( GTK_WIDGET ( dialog ) , 600 , 400 );
> 
>   /*
>    * dialog boxes have a vbox built in we can use 
>    */
>   main_hbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
> 
>   /*
>    * Create the first frame
>    */
>   gender_frame = gtk_frame_new ("<b>Voice Gender</b>");
>   gtk_frame_set_shadow_type (GTK_FRAME (gender_frame), GTK_SHADOW_NONE);
>   g_object_set (gtk_frame_get_label_widget (GTK_FRAME (gender_frame)),
>               "use-markup", TRUE, NULL);
>   gtk_widget_show (gender_frame);
> 
>   /*
>    * ADD FRAME to the hbox 
>    */
>   gtk_box_pack_start (GTK_BOX (main_hbox), gender_frame, FALSE, FALSE, 
> 0);//HBOX
> 
>   /*
>    * Create an alignment widget to indent our child objects 
>    */
> 
> 
> 
>   /*
>    * left aligned, top-aligned, children should fill the box 
>    */
>   gender_align = gtk_alignment_new (0, 0, 0, 1);
> 
> 
>   /*
>    * set a left margin of 12 pixels :: Padding
>    */
>   gtk_alignment_set_padding (GTK_ALIGNMENT (gender_align), 0, 0, 12, 0);
>   gtk_widget_show (gender_align);
> 
>   /*
>    * add alignmnet widget to frame 
>    */
>   gtk_container_add (GTK_CONTAINER (gender_frame), gender_align);
> 
>   /*
>    * Create a [vh]box for the radio buttons and add it to the
>    * alignment widget inside the frame 
>    */
> 
>   gender_hbox = gtk_hbox_new (FALSE, 2);      //2 pixels between objects
>   gtk_widget_show (gender_hbox);
>   gtk_container_add (GTK_CONTAINER (gender_align), gender_hbox);
> 
> 
>   /*
>    * Create the first radio toggle-box  with a label
>    */
>   gender_radio_male = gtk_radio_button_new_with_label (NULL, "Male");
> 
>   g_signal_connect (gender_radio_male,"toggled", G_CALLBACK 
> (cb_gender_toggled),
>   (gpointer)MALE);
> 
>   gtk_widget_show (gender_radio_male);
> 
>   /*
>    *  Create the rest of the radio toggle-box  with label –
>    */
>   gender_radio_female = gtk_radio_button_new_with_label 
> (gtk_radio_button_group
>                                    (GTK_RADIO_BUTTON (gender_radio_male)), 
> "Female");
> 
>   g_signal_connect (gender_radio_female, "toggled", G_CALLBACK 
> (cb_gender_toggled),
>   (gpointer)FEMALE);
>  
>   gtk_widget_show (gender_radio_female);
> 
> 
>   /*
>    * Pack the two radio buttons into the hbox.
>    */
> 
>   gtk_box_pack_start (GTK_BOX (gender_hbox), gender_radio_male, TRUE, TRUE, 
> 2);
>   gtk_box_pack_start (GTK_BOX (gender_hbox), gender_radio_female, TRUE, TRUE, 
> 2);
> 
>   
> /************************************************************************************
>                             End of male/female toggles
>    
> ************************************************************************************/
> 
>   /*
>    * Create the second frame
>    */
>   params_frame = gtk_frame_new ("<b>Voice Parameters</b>");
>   gtk_frame_set_shadow_type (GTK_FRAME (params_frame), GTK_SHADOW_NONE);
>   g_object_set (gtk_frame_get_label_widget (GTK_FRAME (params_frame)),
>               "use-markup", TRUE, NULL);
>   gtk_widget_show (params_frame);
> 
>   /*
>    * Add frame to the vbox  [][]
>    */
>   gtk_box_pack_start (GTK_BOX (main_hbox), params_frame, FALSE, FALSE, 0);
> 
>   /*
>    * Create an alignment widget to indent our child objects 
>    * 
>    *
>    * left aligned, top-aligned, children should fill the box 
>    */
>   params_align = gtk_alignment_new (0, 0, 1, 1);
>   /*
>    * set a left margin of 12 pixels 
>    */
>   gtk_alignment_set_padding (GTK_ALIGNMENT (params_align), 0, 0, 12, 0);
>   gtk_widget_show (params_align);
> 
>   /*
>    * add alignmnet widget to frame 
>    */
>   gtk_container_add (GTK_CONTAINER (params_frame), params_align);
> 
>   /*
>    * create a table for the radio buttons and add it to the
>    * alignment widget inside the frame 
>    */
>   params_table = gtk_table_new (2, 2, FALSE);
>   gtk_table_set_row_spacings (GTK_TABLE (params_table), 2);
>   gtk_table_set_col_spacings (GTK_TABLE (params_table), 7);
>   gtk_widget_show (params_table);
>   gtk_container_add (GTK_CONTAINER (params_align), params_table);
> 
>   temp_widget = gtk_label_new ("Pitch");
> 
>   /*
>    * push label left instead of centering
>    */
>   gtk_misc_set_alignment (GTK_MISC (temp_widget), 0.0, 0.5);
>   gtk_widget_show (temp_widget);
> 
>   gtk_table_attach (GTK_TABLE (params_table), temp_widget, 0, 1, //column 0 
> (first)
>                   0, 1,                                        //row 1 
> (second)
>                   GTK_FILL, 0,        // Don't grow in size on screen
>                   0, 0);
> 
>   temp_widget = gtk_label_new ("Speed WPM");
>   gtk_misc_set_alignment (GTK_MISC (temp_widget), 0.0, 0.5);//Push label left 
> don't center
>   gtk_widget_show (temp_widget);
> 
>   gtk_table_attach (GTK_TABLE (params_table), temp_widget, 0, 1, //Column 0 
> (first)
>                   1, 2,                                        //row 1 
> (second)
>                   GTK_FILL, 0,                                 //don't grow 
> in size 
>                   0, 0);
> 
>   temp_widget = gtk_label_new ("Volume");
>   gtk_misc_set_alignment (GTK_MISC (temp_widget), 0.0, 0.5);
>   gtk_widget_show (temp_widget);
> 
>   gtk_table_attach (GTK_TABLE (params_table), temp_widget, 0, 1,  //Column 0 
> (first)
>                   2, 3,                                         //row 2 
> (second) 
>                   GTK_FILL, 0,                     
>                   0, 0);
> 
> 
>   temp_widget = gtk_label_new ("Delay");
>   gtk_misc_set_alignment (GTK_MISC (temp_widget), 0.0, 0.5);   //push label 
> left
>   gtk_widget_show (temp_widget);
> 
>   gtk_table_attach (GTK_TABLE (params_table), temp_widget, 0, 1,  //column 0 
> (first)
>                   3, 4,                                         //row 3 
> (third) 
>                   GTK_FILL, 0,        //don't grow in size on screen
>                   0, 0);
> 
>   /**********
>     Set ranges
>    *********/                                       
>   pitch_scale1 = gtk_hscale_new_with_range (0.0, 100.0, 1.0);
>   gtk_range_set_value(GTK_RANGE(pitch_scale1), 17.0);
> 
>   gtk_widget_show (pitch_scale1);
>   gtk_table_attach (GTK_TABLE (params_table), pitch_scale1, 1, 2,
>                   0, 1,       //row 0 (first)
>                   GTK_EXPAND | GTK_FILL,      //this part expands when window 
> grows
>                   0, 0, 0);
>   g_signal_connect (G_OBJECT (pitch_scale1), "value_changed", 
>     GTK_SIGNAL_FUNC (hscale_value_changed_pitch), (gpointer) parent_window);
> 
>   speedWPM_scale2 = gtk_hscale_new_with_range (80.0, 390.0, 1.0);
>   gtk_range_set_value(GTK_RANGE(speedWPM_scale2), 150.0);
>   gtk_widget_show (speedWPM_scale2);
>   gtk_table_attach (GTK_TABLE (params_table), speedWPM_scale2, 1, 2,  
> //column 1 (second)
>                   1, 2,       //row 0 (first)
>                   GTK_EXPAND | GTK_FILL,      //this part expands when window 
> grows
>                   0, 0, 0);
>   g_signal_connect (G_OBJECT (speedWPM_scale2), "value_changed", 
>     GTK_SIGNAL_FUNC (hscale_value_changed_speed), (gpointer) parent_window);
> 
> 
>   volume_scale3 = gtk_hscale_new_with_range (0.0, 200.0, 1.0);
>   gtk_range_set_value(GTK_RANGE(volume_scale3), 100.0);
>   gtk_widget_show (volume_scale3);
>   gtk_table_attach (GTK_TABLE (params_table), volume_scale3, 1, 2,    
> //column 1 (second)
>                   2, 3,       //row 0 (first) MOD: 14:1 
>                   GTK_EXPAND | GTK_FILL,      //this part expands when window 
> grows
>                   0, 0, 0);
>   g_signal_connect (G_OBJECT (volume_scale3), "value_changed", 
>     GTK_SIGNAL_FUNC (hscale_value_changed_volume), (gpointer) parent_window);
> 
>   /*
>    * The "delay" is in 10ths of a second between words.  The faster the words
>    * are spoken, the more sense it makes to  allow for more delay between
>    * words.  For a slow WPM delivery, 3 to 5 tenths should be plenty for
>    * DEFAULT.
>    */
>   delay_scale4 = gtk_hscale_new_with_range (0.0, 100.0, 1.0);
>   gtk_range_set_value(GTK_RANGE(delay_scale4), 5.0);
>   gtk_widget_show (delay_scale4);
>   gtk_table_attach (GTK_TABLE (params_table), delay_scale4, 1, 2,     
> //column 1 (second)
>                   3, 4,       //row 0 (first) MOD: 14:1 
>                   GTK_EXPAND | GTK_FILL,   //this part expands when window 
> grows
>                   0, 0, 0);
> 
>   g_signal_connect (G_OBJECT (delay_scale4), "value_changed", 
>     GTK_SIGNAL_FUNC (hscale_value_changed_delay), (gpointer) parent_window);
> 
>   /*****
>    Print gender, pitch, speed, volume, delay to stdout.
>    *****/
>   fprintf(stdout,"gender = (%d), patch = %g, speed = %g, volume = %g delay = 
> %g\n",
>   valueGender, valuePitch, valueSpeed, valueVolume, valueDelay);
> 
> 
> 
> 
> 
>   /*
>    * Run the dialog (a main loop starts automatically)
>    */
>   gtk_dialog_run (GTK_DIALOG (dialog));
> 
>   /*
>    * Return 0 if exit is successful.
>    */
>   return 0;
> }
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> 

-- 
 Gary Kline  kl...@thought.org  http://www.thought.org  Public Service Unix
     Voice By Computer (for Universal Access): http:/www.thought.org/vbc
          The 8.57a release of Jottings: http://jottings.thought.org
             Twenty-five years of service to the Unix community.

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to