@ -1980,6 +1980,71 @@ gnc_option_set_ui_widget_number_range (GNCOption *option, GtkBox *page_box,
return value ;
}
static GtkWidget *
gnc_option_set_ui_widget_plot_size ( GNCOption * option , GtkBox * page_box ,
char * name , char * documentation ,
/* Return values */
GtkWidget * * enclosing , gboolean * packed )
{
GtkWidget * value ;
GtkWidget * label ;
gchar * colon_name ;
GtkAdjustment * adj ;
gdouble lower_bound = G_MINDOUBLE ;
gdouble upper_bound = G_MAXDOUBLE ;
gdouble step_size = 1.0 ;
int num_decimals = 0 ;
colon_name = g_strconcat ( name , " : " , NULL ) ;
label = gtk_label_new ( colon_name ) ;
gtk_misc_set_alignment ( GTK_MISC ( label ) , 1.0 , 0.5 ) ;
g_free ( colon_name ) ;
* enclosing = gtk_hbox_new ( FALSE , 5 ) ;
gnc_option_get_range_info ( option , & lower_bound , & upper_bound ,
& num_decimals , & step_size ) ;
adj = GTK_ADJUSTMENT ( gtk_adjustment_new ( lower_bound , lower_bound ,
upper_bound , step_size ,
step_size * 5.0 ,
0 ) ) ;
value = gtk_spin_button_new ( adj , step_size , num_decimals ) ;
gtk_spin_button_set_numeric ( GTK_SPIN_BUTTON ( value ) , TRUE ) ;
{
gdouble biggest ;
gint num_digits ;
biggest = ABS ( lower_bound ) ;
biggest = MAX ( biggest , ABS ( upper_bound ) ) ;
num_digits = 0 ;
while ( biggest > = 1 )
{
num_digits + + ;
biggest = biggest / 10 ;
}
if ( num_digits = = 0 )
num_digits = 1 ;
num_digits + = num_decimals ;
gtk_entry_set_width_chars ( GTK_ENTRY ( value ) , num_digits ) ;
}
gnc_option_set_widget ( option , value ) ;
gnc_option_set_ui_value ( option , FALSE ) ;
g_signal_connect ( G_OBJECT ( value ) , " changed " ,
G_CALLBACK ( gnc_option_changed_widget_cb ) , option ) ;
gtk_box_pack_start ( GTK_BOX ( * enclosing ) , label , FALSE , FALSE , 0 ) ;
gtk_box_pack_start ( GTK_BOX ( * enclosing ) , value , FALSE , FALSE , 0 ) ;
gtk_widget_show_all ( * enclosing ) ;
return value ;
}
static GtkWidget *
gnc_option_set_ui_widget_color ( GNCOption * option , GtkBox * page_box ,
char * name , char * documentation ,
@ -2468,6 +2533,25 @@ gnc_option_set_ui_value_number_range (GNCOption *option, gboolean use_default,
return TRUE ;
}
static gboolean
gnc_option_set_ui_value_plot_size ( GNCOption * option , gboolean use_default ,
GtkWidget * widget , SCM value )
{
GtkSpinButton * spinner ;
gdouble d_value ; ;
spinner = GTK_SPIN_BUTTON ( widget ) ;
if ( scm_is_number ( value ) )
{
d_value = scm_to_double ( value ) ;
gtk_spin_button_set_value ( spinner , d_value ) ;
return FALSE ;
}
else
return TRUE ;
}
static gboolean
gnc_option_set_ui_value_color ( GNCOption * option , gboolean use_default ,
GtkWidget * widget , SCM value )
@ -2862,6 +2946,19 @@ gnc_option_get_ui_value_number_range (GNCOption *option, GtkWidget *widget)
return ( scm_from_double ( value ) ) ;
}
static SCM
gnc_option_get_ui_value_plot_size ( GNCOption * option , GtkWidget * widget )
{
GtkSpinButton * spinner ;
gdouble value ;
spinner = GTK_SPIN_BUTTON ( widget ) ;
value = gtk_spin_button_get_value ( spinner ) ;
return ( scm_from_double ( value ) ) ;
}
static SCM
gnc_option_get_ui_value_color ( GNCOption * option , GtkWidget * widget )
{
@ -2995,6 +3092,10 @@ static void gnc_options_initialize_options (void)
" number-range " , gnc_option_set_ui_widget_number_range ,
gnc_option_set_ui_value_number_range , gnc_option_get_ui_value_number_range
} ,
{
" plot-size " , gnc_option_set_ui_widget_plot_size ,
gnc_option_set_ui_value_plot_size , gnc_option_get_ui_value_plot_size
} ,
{
" color " , gnc_option_set_ui_widget_color ,
gnc_option_set_ui_value_color , gnc_option_get_ui_value_color