Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

linux-gtk/zonemon.c

Go to the documentation of this file.
00001 
00008 #include <gtk/gtk.h>
00009 #include <zakdef.h>
00010 #include <stdio.h>
00011 #include <globals.h>
00012 #include <ui.h>
00013 #include <zonemon.h>
00014 #include <simulation.h>
00015 #include <zonestrings.h>
00016 #include <uibits.h>
00017 
00019 static struct tag_things {
00020         GtkWidget       *win;   
00021         GtkWidget       *name;  
00022         GtkWidget       *value; 
00023         GtkWidget       *density;       
00024         GtkWidget       *pollution; 
00025         GtkWidget       *crime; 
00026         GtkWidget       *power; 
00027         GtkWidget       *painted;
00028         GtkWidget       *water; 
00030         UInt16 old_xpos;                
00031         UInt16 old_ypos;                
00032 } ttg;
00033 
00040 void
00041 hoverUpdate(UInt16 xpos, UInt16 ypos, int force)
00042 {
00043         welem_t world;
00044         selem_t status;
00045         char text[1024];
00046 
00047         if (ttg.win == NULL)
00048                 return;
00049 
00050         LockZone(lz_world);
00051         getWorldAndFlag(WORLDPOS(xpos, ypos), &world, &status);
00052         UnlockZone(lz_world);
00053 
00054         if ((ttg.old_xpos == xpos) && (ttg.old_ypos == ypos)) 
00055                 if (!force) return;
00056 
00057         ttg.old_xpos = xpos;
00058         ttg.old_ypos = ypos;
00059 
00060         sprintf(text, "Status (%d, %d)", (int)xpos, (int)ypos);
00061         gtk_window_set_title(GTK_WINDOW(ttg.win), text);
00062         if (-1 == getFieldString(world, text, 1024)) {
00063                 sprintf(text, "type == %x(?)", (int)world);
00064         }
00065         gtk_label_set_text(GTK_LABEL(ttg.name), text);
00066         (void) getFieldValue(world, text, 1024);
00067         gtk_label_set_text(GTK_LABEL(ttg.value), text);
00068         (void) getFieldDensity(world, text, 1024);
00069         gtk_label_set_text(GTK_LABEL(ttg.density), text);
00070         gtk_widget_hide(ttg.power);
00071         if (CarryPower(world)) {
00072                 if (status & POWEREDBIT)
00073                         gtk_label_set_text(GTK_LABEL(ttg.power), "Pow+");
00074                 else
00075                         gtk_label_set_text(GTK_LABEL(ttg.power), "-Pow");
00076                 gtk_widget_show(ttg.power);
00077         }
00078         gtk_widget_hide(ttg.water);
00079         if (CarryWater(world)) {
00080                 if (status & WATEREDBIT)
00081                         gtk_label_set_text(GTK_LABEL(ttg.water), "Wat+");
00082                 else
00083                         gtk_label_set_text(GTK_LABEL(ttg.water), "-Wat");
00084                 gtk_widget_show(ttg.water);
00085         }
00086         if (status & PAINTEDBIT)
00087                 gtk_label_set_text(GTK_LABEL(ttg.painted), "HAS");
00088         else
00089                 gtk_label_set_text(GTK_LABEL(ttg.painted), "---");
00090 }
00091 
00092 static gint
00093 hoverClose(GtkWidget *wid __attribute__((unused)),
00094     gpointer data __attribute__((unused)))
00095 {
00096         ttg.win = NULL;
00097         return (FALSE);
00098 }
00099 
00100 void
00101 hoverShow(void)
00102 {
00103         GtkLabel *lab;
00104         GtkTable *table;
00105 
00106         if (ttg.win != NULL) {
00107                 gtk_widget_show(ttg.win);
00108                 return;
00109         }
00110 
00111         ttg.win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00112         gtk_window_set_title(GTK_WINDOW(ttg.win), "Status");
00113         gtk_window_set_skip_taskbar_hint(GTK_WINDOW(ttg.win), TRUE);
00114         g_signal_connect(G_OBJECT(ttg.win), "delete_event",
00115             G_CALLBACK(hoverClose), NULL);
00116 
00117         table = GTK_TABLE(gtk_table_new(6, 3, TRUE));
00118         lab = GTK_LABEL(create_right_label("Type:"));
00119         gtk_table_attach(table, GTK_WIDGET(lab), 0, 1, 0, 1,
00120             GTK_FILL, GTK_FILL, 0, 0);
00121         ttg.name = create_left_label("-");
00122         gtk_table_attach(table, ttg.name, 1, 3, 0, 1, GTK_FILL, GTK_FILL,
00123             0, 0);
00124 
00125         lab = GTK_LABEL(create_right_label("Value:"));
00126         gtk_label_set_justify(lab, GTK_JUSTIFY_RIGHT);
00127         gtk_table_attach(table, GTK_WIDGET(lab), 0, 1, 1, 2,
00128             GTK_FILL, GTK_FILL, 0, 0);
00129         ttg.value = create_left_label("-");
00130         gtk_table_attach(table, ttg.value, 1, 3, 1, 2, GTK_FILL, GTK_FILL,
00131             0, 0);
00132 
00133         lab = GTK_LABEL(create_right_label("Density:"));
00134         gtk_table_attach(table, GTK_WIDGET(lab), 0, 1, 2, 3,
00135             GTK_FILL, GTK_FILL, 0, 0);
00136         ttg.density = create_left_label("-");
00137         gtk_table_attach(table, ttg.density, 1, 3, 2, 3,
00138             GTK_FILL, GTK_FILL, 0, 0);
00139 
00140         lab = GTK_LABEL(create_right_label("Pollution:"));
00141         gtk_table_attach(table, GTK_WIDGET(lab), 0, 1, 3, 4,
00142             GTK_FILL, GTK_FILL, 0, 0);
00143         ttg.pollution = create_left_label("-");
00144         gtk_table_attach(table, ttg.pollution, 1, 3, 3, 4,
00145             GTK_FILL, GTK_FILL, 0, 0);
00146 
00147         lab = GTK_LABEL(create_right_label("Crime:"));
00148         gtk_table_attach(table, GTK_WIDGET(lab), 0, 1, 4, 5,
00149             GTK_FILL, GTK_FILL, 0, 0);
00150         ttg.crime = create_left_label("-");
00151         gtk_table_attach(table, ttg.crime, 1, 3, 4, 5,
00152             GTK_FILL, GTK_FILL, 0, 0);
00153 
00154         ttg.power = gtk_label_new("-");
00155         gtk_table_attach(table, ttg.power, 0, 1, 5, 6,
00156             GTK_EXPAND, GTK_FILL, 0, 0);
00157 
00158         ttg.painted = gtk_label_new("-");
00159         gtk_table_attach(table, ttg.painted, 1, 2, 5, 6,
00160             GTK_EXPAND, GTK_FILL, 0, 0);
00161         ttg.water = gtk_label_new("-");
00162         gtk_table_attach(table, ttg.water, 2, 3, 5, 6,
00163             GTK_EXPAND, GTK_FILL, 0, 0);
00164 
00165         gtk_container_add(GTK_CONTAINER(ttg.win), GTK_WIDGET(table));
00166 
00167         gtk_window_set_policy(GTK_WINDOW(ttg.win), FALSE, TRUE, FALSE);
00168         gtk_widget_show_all(GTK_WIDGET(table));
00169         gtk_widget_show(ttg.win);
00170 }
00171 

Generated on Mon Aug 30 19:44:15 2004 for pocketcity by doxygen1.2.18