/************************************************************************** User changes rates **************************************************************************/ static void rates_changed_callback(GtkWidget *range) { int percent=gtk_range_get_value(GTK_RANGE(range)); if(range==rates_tax_scale) { int tax_value; tax_value=10*percent; tax_value=MIN(tax_value, 100); rates_set_values(tax_value,1, rates_lux_value,0, rates_sci_value,0); } else if(range==rates_lux_scale) { int lux_value; lux_value=10*percent; lux_value=MIN(lux_value, 100); rates_set_values(rates_tax_value,0, lux_value,1, rates_sci_value,0); } else { int sci_value; sci_value=10*percent; sci_value=MIN(sci_value, 100); rates_set_values(rates_tax_value,0, rates_lux_value,0, sci_value,1); } }
/************************************************************************** ... **************************************************************************/ void rates_scroll_scroll_callback(Widget w, XtPointer client_data, XtPointer position_val) { int val, pos = XTPOINTER_TO_INT(position_val); if(w==rates_tax_scroll) { if(pos<0) val=MAX(rates_tax_value-10, 0); else val=MIN(rates_tax_value+10, 100); rates_set_values(val,0, rates_lux_value,0, rates_sci_value,0); } else if(w==rates_lux_scroll) { if(pos<0) val=MAX(rates_lux_value-10, 0); else val=MIN(rates_lux_value+10, 100); rates_set_values(rates_tax_value,0, val,0, rates_sci_value,0); } else { if(pos<0) val=MAX(rates_sci_value-10, 0); else val=MIN(rates_sci_value+10, 100); rates_set_values(rates_tax_value,0, rates_lux_value,0, val,0); } }
/************************************************************************** ... **************************************************************************/ void rates_scroll_jump_callback(Widget w, XtPointer client_data, XtPointer percent_ptr) { float percent=*(float*)percent_ptr; if(w==rates_tax_scroll) { int tax_value; tax_value=10*(int)(11*percent); tax_value=MIN(tax_value, 100); rates_set_values(tax_value,1, rates_lux_value,0, rates_sci_value,0); } else if(w==rates_lux_scroll) { int lux_value; lux_value=10*(int)(11*percent); lux_value=MIN(lux_value, 100); rates_set_values(rates_tax_value,0, lux_value,1, rates_sci_value,0); } else { int sci_value; sci_value=10*(int)(11*percent); sci_value=MIN(sci_value, 100); rates_set_values(rates_tax_value,0, rates_lux_value,0, sci_value,1); } }
/**************************************************************** Create rates dialog *****************************************************************/ static GtkWidget *create_rates_dialog(void) { GtkWidget *shell, *content; GtkWidget *frame, *hgrid; int i; if (!can_client_issue_orders()) { return NULL; } shell = gtk_dialog_new_with_buttons(_("Select tax, luxury and science rates"), NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); setup_dialog(shell, toplevel); gtk_dialog_set_default_response(GTK_DIALOG(shell), GTK_RESPONSE_OK); gtk_window_set_position(GTK_WINDOW(shell), GTK_WIN_POS_MOUSE); content = gtk_dialog_get_content_area(GTK_DIALOG(shell)); rates_gov_label = gtk_label_new(""); gtk_box_pack_start( GTK_BOX( content ), rates_gov_label, TRUE, TRUE, 5 ); frame = gtk_frame_new( _("Tax") ); gtk_box_pack_start( GTK_BOX( content ), frame, TRUE, TRUE, 5 ); hgrid = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(hgrid), 10); gtk_container_add(GTK_CONTAINER(frame), hgrid); rates_tax_scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 10, 1); gtk_range_set_increments(GTK_RANGE(rates_tax_scale), 1, 1); for (i = 0; i <= 10; i++) { gtk_scale_add_mark(GTK_SCALE(rates_tax_scale), i, GTK_POS_TOP, NULL); } gtk_widget_set_size_request(rates_tax_scale, 300, 40); gtk_scale_set_digits(GTK_SCALE(rates_tax_scale), 0); gtk_scale_set_draw_value(GTK_SCALE(rates_tax_scale), FALSE); gtk_container_add(GTK_CONTAINER(hgrid), rates_tax_scale); rates_tax_label = gtk_label_new(" 0%"); gtk_container_add(GTK_CONTAINER(hgrid), rates_tax_label); gtk_widget_set_size_request(rates_tax_label, 40, -1); rates_tax_toggle = gtk_check_button_new_with_label( _("Lock") ); gtk_container_add(GTK_CONTAINER(hgrid), rates_tax_toggle); frame = gtk_frame_new( _("Luxury") ); gtk_box_pack_start( GTK_BOX( content ), frame, TRUE, TRUE, 5 ); hgrid = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(hgrid), 10); gtk_container_add(GTK_CONTAINER(frame), hgrid); rates_lux_scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 10, 1); gtk_range_set_increments(GTK_RANGE(rates_lux_scale), 1, 1); for (i = 0; i <= 10; i++) { gtk_scale_add_mark(GTK_SCALE(rates_lux_scale), i, GTK_POS_TOP, NULL); } gtk_widget_set_size_request(rates_lux_scale, 300, 40); gtk_scale_set_digits(GTK_SCALE(rates_lux_scale), 0); gtk_scale_set_draw_value(GTK_SCALE(rates_lux_scale), FALSE); gtk_container_add(GTK_CONTAINER(hgrid), rates_lux_scale); rates_lux_label = gtk_label_new(" 0%"); gtk_container_add(GTK_CONTAINER(hgrid), rates_lux_label); gtk_widget_set_size_request(rates_lux_label, 40, -1); rates_lux_toggle = gtk_check_button_new_with_label( _("Lock") ); gtk_container_add(GTK_CONTAINER(hgrid), rates_lux_toggle); frame = gtk_frame_new( _("Science") ); gtk_box_pack_start( GTK_BOX( content ), frame, TRUE, TRUE, 5 ); hgrid = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(hgrid), 10); gtk_container_add(GTK_CONTAINER(frame), hgrid); rates_sci_scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 10, 1); gtk_range_set_increments(GTK_RANGE(rates_sci_scale), 1, 1); for (i = 0; i <= 10; i++) { gtk_scale_add_mark(GTK_SCALE(rates_sci_scale), i, GTK_POS_TOP, NULL); } gtk_widget_set_size_request(rates_sci_scale, 300, 40); gtk_scale_set_digits(GTK_SCALE(rates_sci_scale), 0); gtk_scale_set_draw_value(GTK_SCALE(rates_sci_scale), FALSE); gtk_container_add(GTK_CONTAINER(hgrid), rates_sci_scale); rates_sci_label = gtk_label_new(" 0%"); gtk_container_add(GTK_CONTAINER(hgrid), rates_sci_label); gtk_widget_set_size_request(rates_sci_label, 40, -1); rates_sci_toggle = gtk_check_button_new_with_label( _("Lock") ); gtk_container_add(GTK_CONTAINER(hgrid), rates_sci_toggle); g_signal_connect(shell, "response", G_CALLBACK(rates_command_callback), NULL); g_signal_connect(shell, "destroy", G_CALLBACK(gtk_widget_destroyed), &rates_dialog_shell); gtk_widget_show_all(content); gtk_widget_show_all(gtk_dialog_get_action_area(GTK_DIALOG(shell))); rates_tax_value=-1; rates_lux_value=-1; rates_sci_value=-1; rates_tax_sig = g_signal_connect_after(rates_tax_scale, "value-changed", G_CALLBACK(rates_changed_callback), NULL); rates_lux_sig = g_signal_connect_after(rates_lux_scale, "value-changed", G_CALLBACK(rates_changed_callback), NULL); rates_sci_sig = g_signal_connect_after(rates_sci_scale, "value-changed", G_CALLBACK(rates_changed_callback), NULL); rates_set_values(client.conn.playing->economic.tax, 0, client.conn.playing->economic.luxury, 0, client.conn.playing->economic.science, 0); return shell; }
/**************************************************************** ... *****************************************************************/ void create_rates_dialog(void) { Widget rates_form; Widget rates_ok_command, rates_cancel_command; if (!can_client_issue_orders()) { return; } rates_dialog_shell = I_T(XtCreatePopupShell("ratespopup", transientShellWidgetClass, toplevel, NULL, 0)); rates_form = XtVaCreateManagedWidget("ratesform", formWidgetClass, rates_dialog_shell, NULL); I_L(XtVaCreateManagedWidget("rateslabel", labelWidgetClass, rates_form, NULL)); rates_gov_label = XtVaCreateManagedWidget("ratesgovlabel", labelWidgetClass, rates_form, NULL); rates_tax_label = XtVaCreateManagedWidget("ratestaxlabel", labelWidgetClass, rates_form, NULL); rates_tax_scroll = XtVaCreateManagedWidget("ratestaxscroll", scrollbarWidgetClass, rates_form, NULL); rates_tax_toggle = I_L(XtVaCreateManagedWidget("ratestaxtoggle", toggleWidgetClass, rates_form, NULL)); rates_lux_label = XtVaCreateManagedWidget("ratesluxlabel", labelWidgetClass, rates_form, NULL); rates_lux_scroll = XtVaCreateManagedWidget("ratesluxscroll", scrollbarWidgetClass, rates_form, NULL); rates_lux_toggle = I_L(XtVaCreateManagedWidget("ratesluxtoggle", toggleWidgetClass, rates_form, NULL)); rates_sci_label = XtVaCreateManagedWidget("ratesscilabel", labelWidgetClass, rates_form, NULL); rates_sci_scroll = XtVaCreateManagedWidget("ratessciscroll", scrollbarWidgetClass, rates_form, NULL); rates_sci_toggle = I_L(XtVaCreateManagedWidget("ratesscitoggle", toggleWidgetClass, rates_form, NULL)); rates_ok_command = I_L(XtVaCreateManagedWidget("ratesokcommand", commandWidgetClass, rates_form, NULL)); rates_cancel_command = I_L(XtVaCreateManagedWidget("ratescancelcommand", commandWidgetClass, rates_form, NULL)); XtAddCallback(rates_ok_command, XtNcallback, rates_ok_command_callback, NULL); XtAddCallback(rates_cancel_command, XtNcallback, rates_cancel_command_callback, NULL); XtAddCallback(rates_tax_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_tax_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtAddCallback(rates_lux_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_lux_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtAddCallback(rates_sci_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_sci_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtRealizeWidget(rates_dialog_shell); rates_tax_value=-1; rates_lux_value=-1; rates_sci_value=-1; rates_set_values(client.conn.playing->economic.tax, 0, client.conn.playing->economic.luxury, 0, client.conn.playing->economic.science, 0); }
/**************************************************************** ... *****************************************************************/ void create_rates_dialog(void) { Widget rates_form, rates_label; Widget rates_ok_command, rates_cancel_command; rates_dialog_shell = XtCreatePopupShell("ratespopup", transientShellWidgetClass, toplevel, NULL, 0); rates_form = XtVaCreateManagedWidget("ratesform", formWidgetClass, rates_dialog_shell, NULL); rates_label = XtVaCreateManagedWidget("rateslabel", labelWidgetClass, rates_form, NULL); rates_tax_label = XtVaCreateManagedWidget("ratestaxlabel", labelWidgetClass, rates_form, NULL); rates_tax_scroll = XtVaCreateManagedWidget("ratestaxscroll", scrollbarWidgetClass, rates_form, NULL); rates_tax_toggle = XtVaCreateManagedWidget("ratestaxtoggle", toggleWidgetClass, rates_form, NULL); rates_lux_label = XtVaCreateManagedWidget("ratesluxlabel", labelWidgetClass, rates_form, NULL); rates_lux_scroll = XtVaCreateManagedWidget("ratesluxscroll", scrollbarWidgetClass, rates_form, NULL); rates_lux_toggle = XtVaCreateManagedWidget("ratesluxtoggle", toggleWidgetClass, rates_form, NULL); rates_sci_label = XtVaCreateManagedWidget("ratesscilabel", labelWidgetClass, rates_form, NULL); rates_sci_scroll = XtVaCreateManagedWidget("ratessciscroll", scrollbarWidgetClass, rates_form, NULL); rates_sci_toggle = XtVaCreateManagedWidget("ratesscitoggle", toggleWidgetClass, rates_form, NULL); rates_ok_command = XtVaCreateManagedWidget("ratesokcommand", commandWidgetClass, rates_form, NULL); rates_cancel_command = XtVaCreateManagedWidget("ratescancelcommand", commandWidgetClass, rates_form, NULL); XtAddCallback(rates_ok_command, XtNcallback, rates_ok_command_callback, NULL); XtAddCallback(rates_cancel_command, XtNcallback, rates_cancel_command_callback, NULL); XtAddCallback(rates_tax_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_tax_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtAddCallback(rates_lux_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_lux_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtAddCallback(rates_sci_scroll, XtNjumpProc, rates_scroll_jump_callback, NULL); XtAddCallback(rates_sci_scroll, XtNscrollProc, rates_scroll_scroll_callback, NULL); XtRealizeWidget(rates_dialog_shell); rates_tax_value=-1; rates_lux_value=-1; rates_sci_value=-1; rates_set_values(game.player_ptr->economic.tax, 0, game.player_ptr->economic.luxury, 0, game.player_ptr->economic.science, 0); }