/* * Gets the properties of the widget. This is used for both displaying the * properties in the property editor, and also for saving the properties. */ static void gb_custom_get_properties (GtkWidget *widget, GbWidgetGetArgData * data) { gchar *string1, *string2; gb_widget_output_string (data, CreationFunction, gtk_object_get_data (GTK_OBJECT (widget), CreationFunction)); string1 = gtk_object_get_data (GTK_OBJECT (widget), String1); string2 = gtk_object_get_data (GTK_OBJECT (widget), String2); /* For empty strings output NULL (i.e. don't save in the XML). */ if (string1 && *string1 == '\0') string1 = NULL; if (string2 && *string2 == '\0') string2 = NULL; gb_widget_output_string (data, String1, string1); gb_widget_output_string (data, String2, string2); gb_widget_output_int (data, Int1, GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (widget), Int1))); gb_widget_output_int (data, Int2, GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (widget), Int2))); /* When saving we also save the last modification time. */ if (data->action == GB_SAVING) { time_t last_mod_time; last_mod_time = gb_custom_get_last_mod_time (widget); if (last_mod_time != 0) { save_date (data, LastModTime, last_mod_time); } } }
/** * Called by the GUI when a key event is received, triggers an action in the * controller. * */ void Controller::receive_gui_event(const char *event,const char *value) { if(m_sleeping) return; //TODO: Fix this total mess, refactor into switch, break conditions out into methods. if(strcmp(event,"Sleep" ) == 0) event_sleep(event,value); else if(strcmp(event,"KEYPRESS" ) == 0) m_powerup=true; else if(strcmp(event,"TOTALTIMER" ) == 0) event_totaltimer(event,value); else if(strcmp(event,"Save:PulseWidth") == 0) event_save_pulsewidth(event,value); else if(strcmp(event,"Save:Calib" ) == 0) event_save_calibration(); else if(strcmp(event,"Save:Becq" ) == 0) event_save_becq(event,value); else if(strcmp(event,"Save:UTCOff" ) == 0) event_save_utcoff(event,value); else if(strcmp(event,"Save:Time" ) == 0) save_time(); else if(strcmp(event,"Save:Date" ) == 0) save_date(); else if(strcmp(event,"Save:WarnCPM" ) == 0) save_warncpm(); else if(strcmp(event,"Japanese" ) == 0) event_japanese(event,value); else if(strcmp(event,"Never Dim" ) == 0) event_neverdim(event,value); else if(strcmp(event,"English" ) == 0) event_english(event,value); else if(strcmp(event,"CPM/CPS Auto" ) == 0) event_cpm_cps_auto(event,value); else if(strcmp(event,"Geiger Beep" ) == 0) event_geiger_beep(event,value); else if(strcmp(event,"\x80Sv" ) == 0) event_usv(event,value); else if(strcmp(event,"\x80R" ) == 0) event_rem(event,value); else if(strcmp(event,"Clear Log" ) == 0) event_clear_log(event,value); else if(strcmp(event,"Save:Brightness") == 0) event_save_brightness(event,value); else if(strcmp(event,"Save:LogInter" ) == 0) save_loginterval(); else if(strcmp(event,"CALIBRATE" ) == 0) initialise_calibration(); else if(strcmp(event,"UTCSCREEN" ) == 0) event_utcscreen(event,value); else if(strcmp(event,"TIMESCREEN" ) == 0) event_timescreen(event,value); else if(strcmp(event,"BECQSCREEN" ) == 0) event_becqscreen(event,value); else if(strcmp(event,"LOGINTERVAL" ) == 0) event_loginterval(event,value); else if(strcmp(event,"WARNSCREEN" ) == 0) event_warnscreen(event,value); else if(strcmp(event,"DATESCREEN" ) == 0) event_datescreen(event,value); else if(strcmp(event,"BrightnessSCN" ) == 0) event_brightnessscn(event,value); else if(strcmp(event,"LeftBrightness" ) == 0) event_leftbrightness(event,value); else if(strcmp(event,"QR Transfer" ) == 0) qr_logxfer(); else if(strcmp(event,"Audio Xfer" ) == 0) event_audioxfer(event,value); else if(strcmp(event,"QR Tweet" ) == 0) event_qrtweet(event,value); else if(strcmp(event,"varnumchange" ) == 0) { if(strcmp ("BRIGHTNESS",value) == 0) event_varnum_brightness(event,value); else if(strcmpl("CAL" ,value,3) ) update_calibration(); else if(strcmpl("DATE" ,value,4) ) event_varnum_date(event,value); else if(strcmpl("TIME" ,value,4) ) event_varnum_time(event,value); } }
void save_couple( int reference, short block, Couple *cptr ) { int chref ; /* child reference */ short child ; /* loop counter */ short new_child, deleted_child ; Person *pptr ; short pblock ; char *alert_ptr, alert_str[200] ; short i ; /* loop counter */ short changed = FALSE ; busy( BUSY_MORE ) ; save_int( &(cptr->reference), reference, &changed ) ; save_int( &(cptr->male_reference), male, &changed ) ; save_int( &(cptr->female_reference), female, &changed ) ; save_date( &(cptr->wedding_date), c_form_addrs.wed, c_form_addrs.wed_qual, &changed ) ; str_save( &(cptr->wedding_place), c_form_addrs.wep, &next_cstring_ptr[block], cblock_end[block], &changed ) ; str_save( &(cptr->wedd_wit1), c_form_addrs.ww1, &next_cstring_ptr[block], cblock_end[block], &changed ) ; str_save( &(cptr->wedd_wit2), c_form_addrs.ww2, &next_cstring_ptr[block], cblock_end[block], &changed ) ; str_save( &(cptr->wedding_source), c_form_addrs.cosrc, &next_cstring_ptr[block], cblock_end[block], &changed ) ; save_date( &(cptr->divorce_date), c_form_addrs.did, c_form_addrs.did_qual, &changed ) ; str_save( &(cptr->divorce_source), c_form_addrs.disrc, &next_cstring_ptr[block], cblock_end[block], &changed ) ; add_to_cidx( reference, cptr ) ; if( male ) { pptr = get_pdata_ptr( male, &pblock ) ; if( pptr->sex == '?' ) { pptr->sex = 'm' ; pblock_changed[pblock] = TRUE ; } add_coupling( male, reference ) ; sort_couplings( male ) ; } if( female ) { pptr = get_pdata_ptr( female, &pblock ) ; if( pptr->sex == '?' ) { pptr->sex = 'f' ; pblock_changed[pblock] = TRUE ; } add_coupling( female, reference ) ; sort_couplings( female ) ; } qsort( prog_array, (size_t) MAX_CHILDREN, (size_t) 4, child_compare ) ; if( prog_array[0] || old_prog_array[0] ) { child = 0 ; while( chref = prog_array[child] ) { new_child = TRUE ; for( i=0; i<MAX_CHILDREN; i++ ) if( chref == old_prog_array[i] ) new_child = FALSE ; if( new_child ) { pptr = get_pdata_ptr( chref, &pblock ) ; if( pptr->parents && pptr->parents != reference ) { rsrc_gaddr( R_STRING, TWO_PARENTS, &alert_ptr ) ; sprintf( alert_str, alert_ptr, chref ) ; form_alert( 1, alert_str ) ; prog_array[child] = 0 ; } else { pptr->parents = reference ; pblock_changed[pblock] = TRUE ; changed = TRUE ; } } child++ ; } child = 0 ; while( chref = old_prog_array[child] ) { deleted_child = TRUE ; for( i=0; i<MAX_CHILDREN; i++ ) if( chref == prog_array[i] ) deleted_child = FALSE ; if( deleted_child ) { pptr = get_pdata_ptr( chref, &pblock ) ; pptr->parents = 0 ; pblock_changed[pblock] = TRUE ; changed = TRUE ; } child++ ; } } /* resort array in case of deletions */ qsort( prog_array, (size_t) MAX_CHILDREN, (size_t) 4, child_compare ) ; if( prog_array[0] ) cput_references( &cptr->children, block, prog_array ) ; else cptr->children = 0 ; if( changed ) { cblock_changed[block] = TRUE ; load_person( edit_pers_ref, &edit_pers_block ) ; send_redraw_message( &pers_form.fm_box, pers_form.fm_handle ) ; } if( spouse_oset == number_spouses ) /* i.e. adding a new coupling */ { number_spouses++ ; *( (char*) &pers_form.fm_ptr[NEXT_SPOUSE].ob_spec ) = '>' ; pers_form.fm_ptr[NEXT_SPOUSE].ob_flags |= TOUCHEXIT ; } if( reference == next_couple ) next_couple++ ; busy( BUSY_LESS ) ; if( next_couple >= c_index_size ) rsrc_form_alert( 1, C_INDEX_FULL ) ; if( overflowed ) rsrc_form_alert( 1, BK_FULL ) ; }