00001
00007 #include <gtk/gtk.h>
00008 #include <stdio.h>
00009 #include <simulation.h>
00010 #include <zakdef.h>
00011 #include <globals.h>
00012 #include <main.h>
00013 #include <compilerpragmas.h>
00014 #include <uibits.h>
00015
00017 static GtkWidget *dlg = 0;
00018
00020 static GtkWidget *lres;
00022 static GtkWidget *lcom;
00024 static GtkWidget *lind;
00026 static GtkWidget *lpow;
00028 static GtkWidget *ltra;
00030 static GtkWidget *ldef;
00032 static GtkWidget *lbal;
00034 static GtkWidget *lcha;
00036 static GtkWidget *lnex;
00038 static GtkObject *adjust_tra;
00040 static GtkObject *adjust_pow;
00042 static GtkObject *adjust_def;
00043
00047 void
00048 UIUpdateBudget(void)
00049 {
00050 char temp[20];
00051
00052 if (!dlg)
00053 return;
00054
00055 sprintf(temp, "%li", (long)BudgetGetNumber(bnResidential));
00056 gtk_label_set_text((GtkLabel*)lres, temp);
00057 sprintf(temp, "%li", (long)BudgetGetNumber(bnCommercial));
00058 gtk_label_set_text((GtkLabel*)lcom, temp);
00059 sprintf(temp, "%li", (long)BudgetGetNumber(bnIndustrial));
00060 gtk_label_set_text((GtkLabel*)lind, temp);
00061
00062 sprintf(temp, "%li", (long)BudgetGetNumber(bnPower));
00063 gtk_label_set_text((GtkLabel*)lpow, temp);
00064 sprintf(temp, "%li", (long)BudgetGetNumber(bnTraffic));
00065 gtk_label_set_text((GtkLabel*)ltra, temp);
00066 sprintf(temp, "%li", (long)BudgetGetNumber(bnDefence));
00067 gtk_label_set_text((GtkLabel*)ldef, temp);
00068
00069 sprintf(temp, "%li", (long)BudgetGetNumber(bnCurrentBalance));
00070 gtk_label_set_text((GtkLabel*)lbal, temp);
00071 sprintf(temp, "%li", (long)BudgetGetNumber(bnChange));
00072 gtk_label_set_text((GtkLabel*)lcha, temp);
00073 sprintf(temp, "%li", (long)BudgetGetNumber(bnNextMonth));
00074 gtk_label_set_text((GtkLabel*)lnex, temp);
00075
00076 }
00077
00082 static void
00083 budget_traffic(GtkAdjustment *adj)
00084 {
00085 char temp[20];
00086
00087 setUpkeep(ue_traffic, gtk_adjustment_get_value(GTK_ADJUSTMENT(adj)));
00088 sprintf(temp, "%li", (long)BudgetGetNumber(bnTraffic));
00089 gtk_label_set_text((GtkLabel*)ltra, temp);
00090 }
00091
00096 static void
00097 budget_power(GtkAdjustment *adj)
00098 {
00099 char temp[20];
00100
00101 setUpkeep(ue_power, gtk_adjustment_get_value(GTK_ADJUSTMENT(adj)));
00102 sprintf(temp, "%li", (long)BudgetGetNumber(bnPower));
00103 gtk_label_set_text((GtkLabel*)lpow, temp);
00104 }
00105
00110 static void
00111 budget_defence(GtkAdjustment *adj)
00112 {
00113 char temp[20];
00114
00115 setUpkeep(ue_defense, gtk_adjustment_get_value(GTK_ADJUSTMENT(adj)));
00116 sprintf(temp, "%li", (long)BudgetGetNumber(bnDefence));
00117 gtk_label_set_text((GtkLabel*)ldef, temp);
00118 }
00119
00130 static gint
00131 close_budget(GtkWidget *widget __attribute__((unused)),
00132 gpointer data __attribute__((unused)))
00133 {
00134 dlg = NULL;
00135 return (FALSE);
00136 }
00137
00145 void
00146 ViewBudget(GtkWidget *w __attribute__((unused)),
00147 gpointer data __attribute__((unused)))
00148 {
00149 GtkWidget *table, *mainbox;
00150 GtkWidget *spinner;
00151
00152 dlg = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00153 gtk_window_set_title(GTK_WINDOW(dlg), "Pocket City Budget");
00154
00155 mainbox = gtk_vbox_new(FALSE, 10);
00156 table = gtk_table_new(12, 3, TRUE);
00157 gtk_container_set_border_width(GTK_CONTAINER(mainbox), 3);
00158
00159 g_signal_connect(G_OBJECT(dlg), "delete_event",
00160 G_CALLBACK(close_budget), 0);
00161
00162 gtk_container_add(GTK_CONTAINER(dlg), mainbox);
00163 gtk_box_pack_start(GTK_BOX(mainbox), table, TRUE, TRUE, 0);
00164
00165 gtk_table_attach_defaults(GTK_TABLE(table),
00166 gtk_label_new("Income"), 0, 3, 0, 1);
00167 gtk_table_attach_defaults(GTK_TABLE(table),
00168 create_left_label("Residential"), 0, 1, 1, 2);
00169 gtk_table_attach_defaults(GTK_TABLE(table),
00170 create_left_label("Commercial"), 0, 1, 2, 3);
00171 gtk_table_attach_defaults(GTK_TABLE(table),
00172 create_left_label("Industrial"), 0, 1, 3, 4);
00173
00174 gtk_table_attach_defaults(GTK_TABLE(table),
00175 gtk_label_new("Expenses"), 0, 3, 5, 6);
00176 gtk_table_attach_defaults(GTK_TABLE(table),
00177 create_left_label("Traffic"), 0, 3, 6, 7);
00178 gtk_table_attach_defaults(GTK_TABLE(table),
00179 create_left_label("Power"), 0, 3, 7, 8);
00180 gtk_table_attach_defaults(GTK_TABLE(table),
00181 create_left_label("Defence"), 0, 3, 8, 9);
00182
00183 gtk_table_attach_defaults(GTK_TABLE(table),
00184 gtk_label_new("Total"), 0, 3, 10, 11);
00185 gtk_table_attach_defaults(GTK_TABLE(table),
00186 create_left_label("Current balance"), 0, 2, 11, 12);
00187 gtk_table_attach_defaults(GTK_TABLE(table),
00188 create_left_label("Change"), 0, 2, 12, 13);
00189 gtk_table_attach_defaults(GTK_TABLE(table),
00190 create_left_label("Next month's balance"), 0, 2, 13, 14);
00191
00192
00193 lres = create_right_label("-");
00194 lcom = create_right_label("-");
00195 lind = create_right_label("-");
00196 lpow = create_right_label("-");
00197 ltra = create_right_label("-");
00198 ldef = create_right_label("-");
00199 lbal = create_right_label("-");
00200 lcha = create_right_label("-");
00201 lnex = create_right_label("-");
00202 gtk_table_attach_defaults(GTK_TABLE(table), lres, 2, 3, 1, 2);
00203 gtk_table_attach_defaults(GTK_TABLE(table), lcom, 2, 3, 2, 3);
00204 gtk_table_attach_defaults(GTK_TABLE(table), lind, 2, 3, 3, 4);
00205 gtk_table_attach_defaults(GTK_TABLE(table), ltra, 2, 3, 6, 7);
00206 gtk_table_attach_defaults(GTK_TABLE(table), lpow, 2, 3, 7, 8);
00207 gtk_table_attach_defaults(GTK_TABLE(table), ldef, 2, 3, 8, 9);
00208 gtk_table_attach_defaults(GTK_TABLE(table), lbal, 2, 3, 11, 12);
00209 gtk_table_attach_defaults(GTK_TABLE(table), lcha, 2, 3, 12, 13);
00210 gtk_table_attach_defaults(GTK_TABLE(table), lnex, 2, 3, 13, 14);
00211
00212
00213 adjust_tra = gtk_adjustment_new(getUpkeep(ue_traffic), 0, 100,
00214 1, 10, 0);
00215 spinner = gtk_spin_button_new(GTK_ADJUSTMENT(adjust_tra), 0.1, 0);
00216 gtk_table_attach_defaults(GTK_TABLE(table), spinner, 1, 2, 6, 7);
00217 g_signal_connect(G_OBJECT(spinner), "value_changed",
00218 G_CALLBACK(budget_traffic), adjust_tra);
00219
00220 adjust_pow = gtk_adjustment_new(getUpkeep(ue_power), 0, 100, 1,
00221 10, 0);
00222 spinner = gtk_spin_button_new(GTK_ADJUSTMENT(adjust_pow), 0.1, 0);
00223 gtk_table_attach_defaults(GTK_TABLE(table), spinner, 1, 2, 7, 8);
00224 g_signal_connect(G_OBJECT(spinner), "value_changed",
00225 G_CALLBACK(budget_power), adjust_pow);
00226
00227 adjust_def = gtk_adjustment_new(getUpkeep(ue_defense), 0, 100,
00228 1, 10, 0);
00229 spinner = gtk_spin_button_new(GTK_ADJUSTMENT(adjust_def), 0.1, 0);
00230 gtk_table_attach_defaults(GTK_TABLE(table), spinner, 1, 2, 8, 9);
00231 g_signal_connect(G_OBJECT(spinner), "value_changed",
00232 G_CALLBACK(budget_defence), adjust_def);
00233
00234 UIUpdateBudget();
00235
00236 gtk_widget_show_all(dlg);
00237 }