Beispiel #1
0
/*
 * 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);
        }
    }
}
Beispiel #2
0
/**
 * 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);
  }
}
Beispiel #3
0
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 ) ;
}