Changeset 588
- Timestamp:
- 09/29/07 15:15:16 (1 year ago)
- Files:
-
- trunk/src/main-gtk.c (modified) (67 diffs)
- trunk/src/main-gtk.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/main-gtk.c
r587 r588 375 375 /* Set dimensions */ 376 376 init_cairo_rect(&r, (td->actual.w * x), (td->actual.h * y), (td->actual.w * n), (td->actual.h)); 377 377 378 378 /* I can't count on at all the td fields names being the same for everything that uses cairo-utils, 379 379 hence a lot of variables being passed. */ … … 564 564 if ((td != NULL) && (td->window == widget)) 565 565 { 566 strnfmt(item_name, 16+1, "term_menu_item_%i", td->number);566 strnfmt(item_name, sizeof(item_name), "term_menu_item_%i", td->number); 567 567 menu_item = glade_xml_get_widget(gtk_xml, item_name); 568 568 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), FALSE); … … 604 604 char buf[80]; 605 605 int i, j = 0; 606 606 607 607 my_strcpy(td->font.name, font_name, sizeof(td->font.name)); 608 609 610 for (i = 0; i < (strlen(font_name)); i++)608 609 610 for (i = 0; i < strlen(font_name); i++) 611 611 { 612 612 if (font_name[i] == ' ') j = i; 613 613 } 614 614 615 for(i = j ; i < strlen(font_name); i++) 616 { 615 for (i = j ; i < strlen(font_name); i++) 617 616 buf[i - j] = font_name[i]; 618 } 617 619 618 620 619 temp_font = pango_font_description_from_string(font_name); 621 my_strcpy(td->font.family, pango_font_description_get_family(temp_font), sizeof(td->font. name));620 my_strcpy(td->font.family, pango_font_description_get_family(temp_font), sizeof(td->font.family)); 622 621 td->font.size = atof(buf); 623 622 if (td->font.size == 0) td->font.size = 12; … … 637 636 if ((old_font_height == 0) || (old_font_width == 0)) 638 637 { 639 td->size.w = td->cols * td->font.w;640 td->size.h = td->rows * td->font.h;641 } 642 else638 td->size.w = td->cols * td->font.w; 639 td->size.h = td->rows * td->font.h; 640 } 641 else 643 642 { 644 643 td->size.w = (double)td->size.w * (double)((double)td->font.w / (double)old_font_width); … … 650 649 if (td->window != NULL) 651 650 { 652 651 653 652 654 653 gtk_widget_hide(td->window); … … 665 664 void set_term_font(GtkFontButton *widget, gpointer user_data) 666 665 { 667 const char *font_name, *s; 666 term_data *td; 667 668 const char *font_name; 669 const char *s; 668 670 int t; 669 671 670 s = (char*)gtk_widget_get_name(GTK_WIDGET(widget));672 s = gtk_widget_get_name(GTK_WIDGET(widget)); 671 673 sscanf(s, "term_font_%d", &t); 672 673 t erm_data *td=&data[t];674 674 675 td = &data[t]; 676 675 677 font_name = gtk_font_button_get_font_name(widget); 676 678 load_font_by_name(td, font_name); … … 709 711 710 712 /* Count out known non-savefiles */ 711 if ( strcmp(name, "Makefile") == 0||712 strcmp(name, "delete.me") == 0)713 if (!strcmp(name, "Makefile") || 714 !strcmp(name, "delete.me")) 713 715 { 714 716 return FALSE; … … 854 856 { 855 857 /* Build the macro trigger string */ 856 strnfmt(msg, -1, "%cS_%X%c", 31, event->keyval, 13);857 858 strnfmt(msg, sizeof(msg), "%cS_%X%c", 31, event->keyval, 13); 859 858 860 /* Enqueue the "macro trigger" string */ 859 861 for (i = 0; msg[i]; i++) Term_keypress(msg[i]); … … 909 911 return (TRUE); 910 912 } 913 911 914 case GDK_Shift_L: 912 915 case GDK_Shift_R: … … 961 964 /* Open the settings file */ 962 965 fff = file_open(settings, MODE_WRITE, FTYPE_TEXT); 963 964 /* Oops */965 966 if (!fff) return; 966 967 … … 1197 1198 1198 1199 /* Set defaults if not initialized, or if funny values are there */ 1199 1200 if (td->size.w <=0) td->size.w = (td->rows * td->actual.h); 1201 if (td->size.h <=0) td->size.h = (td->cols * td->actual.w); 1200 if (td->size.w <= 0) td->size.w = (td->rows * td->actual.h); 1201 if (td->size.h <= 0) td->size.h = (td->cols * td->actual.w); 1202 1202 if (td->tile.w <= 0) td->tile.w = td->font.w; 1203 1203 if (td->tile.h <= 0) td->tile.h = td->font.h; 1204 1204 1205 1205 /* The main window should always be visible */ 1206 1206 if (i == 0) td->visible = 1; 1207 1207 1208 1208 /* Discard the old cols & rows values, and recalculate. */ 1209 1209 set_row_and_cols(td); … … 1217 1217 if ((xd->font.name == "") || (strlen(xd->font.name)<2)) 1218 1218 my_strcpy(xd->font.name, "Monospace 10", sizeof(xd->font.name)); 1219 1219 1220 get_font_size(&xd->font); 1220 1221 … … 1238 1239 { 1239 1240 int z = 0; 1240 term_data *td = (term_data*)(Term->data);1241 1241 term_data *td = Term->data; 1242 1242 1243 /* Where is the mouse */ 1243 1244 int x = event->x; … … 1253 1254 /* The co-ordinates are only used in Angband format. */ 1254 1255 pixel_to_square(&x, &y, x, y); 1255 1256 1256 Term_mousepress(x, y, z); 1257 return(FALSE); 1257 1258 return FALSE; 1258 1259 } 1259 1260 … … 1266 1267 1267 1268 g_assert(td->drawing_area->window != 0); 1268 1269 1269 1270 1270 if (td->window) 1271 1271 { … … 1303 1303 return (TRUE); 1304 1304 } 1305 1305 1306 gboolean hide_options(GtkWidget *widget, GdkEvent *event, gpointer user_data) 1306 1307 { … … 1311 1312 static void create_term_cairo(term_data *td) 1312 1313 { 1313 measurements size; 1314 1315 size.w = max_win_width(td); 1316 size.h = max_win_height(td); 1317 1318 td->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, size.w, size.h); 1319 td->cr = cairo_create(td->surface); 1320 1321 set_term_matrix(td); 1322 term_data_redraw(td); 1323 } 1314 measurements size; 1315 1316 size.w = max_win_width(td); 1317 size.h = max_win_height(td); 1318 1319 td->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, size.w, size.h); 1320 td->cr = cairo_create(td->surface); 1321 1322 set_term_matrix(td); 1323 term_data_redraw(td); 1324 } 1325 1324 1326 static void destroy_term_cairo(term_data *td) 1325 1327 { … … 1330 1332 } 1331 1333 } 1334 1332 1335 gboolean toggle_term_window(GtkWidget *widget, GdkEvent *event, gpointer user_data) 1333 1336 { 1337 term_data *td; 1338 1334 1339 int t; 1335 1340 bool window_is_visible; 1336 c har*s;1337 1338 s = (char*)gtk_widget_get_name(widget);1341 const char *s; 1342 1343 s = gtk_widget_get_name(widget); 1339 1344 sscanf(s, "term_menu_item_%d", &t); 1340 t erm_data *td = &data[t];1341 1345 td = &data[t]; 1346 1342 1347 window_is_visible = (GTK_WIDGET_VISIBLE(GTK_WIDGET(td->window))); 1343 1348 1344 1349 /* I'm assuming this is only called by a menu item. I may want to put a check in for that. */ 1345 1350 td->visible = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); 1346 1351 1347 1352 if (td->visible) 1348 1353 { … … 1355 1360 destroy_term_cairo(td); 1356 1361 } 1357 1358 return (td->visible);1362 1363 return td->visible; 1359 1364 } 1360 1365 … … 1406 1411 break; 1407 1412 } 1413 1408 1414 case GRAPHICS_ORIGINAL: 1409 1415 { … … 1417 1423 break; 1418 1424 } 1425 1419 1426 case GRAPHICS_ADAM_BOLT: 1420 1427 { … … 1428 1435 break; 1429 1436 } 1437 1430 1438 case GRAPHICS_DAVID_GERVAIS: 1431 1439 { … … 1439 1447 break; 1440 1448 } 1441 }; 1449 } 1450 1442 1451 graphical_tiles = cairo_image_surface_create_from_png(buf); 1443 1452 tile_pattern = cairo_pattern_create_for_surface(graphical_tiles); … … 1465 1474 } 1466 1475 1467 static void setup_graphics_menu() 1468 { 1469 int i = 0; 1470 1471 for(i=0;i < 4; i++) 1472 { 1473 char s[12]; 1474 GtkWidget *menu; 1476 static void setup_graphics_menu(void) 1477 { 1478 GtkWidget *menu; 1479 1480 char s[12]; 1481 int i; 1482 1483 for (i = 0; i < 4; i++) 1484 { 1475 1485 bool checked = (i == arg_graphics); 1476 1477 strnfmt(s, 12, "graphics_%d", i);1486 1487 strnfmt(s, sizeof(s), "graphics_%d", i); 1478 1488 menu = glade_xml_get_widget(gtk_xml, s); 1479 if (checked) 1480 if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu)))1481 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);1489 1490 if (checked && !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu))) 1491 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE); 1482 1492 } 1483 1493 } … … 1487 1497 { 1488 1498 int g; 1489 c har*s;1490 1491 s = (char*)gtk_widget_get_name(widget);1499 const char *s; 1500 1501 s = gtk_widget_get_name(widget); 1492 1502 sscanf(s, "graphics_%d", &g); 1493 1503 1494 1504 /* Free up old graphics */ 1495 1505 if (graphical_tiles != NULL) … … 1497 1507 if (tile_pattern != NULL) 1498 1508 cairo_pattern_destroy(tile_pattern); 1499 1509 1500 1510 init_graf(g); 1501 return (FALSE);1511 return FALSE; 1502 1512 } 1503 1513 … … 1507 1517 static void white_on_black_textview(xtra_win_data *xd) 1508 1518 { 1509 GdkColor black = { 0, 0x0000, 0x0000, 0x0000 };1519 GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 1510 1520 GdkColor white = { 0, 0xffff, 0xffff, 0xffff }; 1511 1521 … … 1528 1538 { 1529 1539 int i = 0; 1530 term_data *main_term = &data[0];1540 term_data *main_term = &data[0]; 1531 1541 char temp[20]; 1532 1542 GtkWidget *temp_widget; … … 1536 1546 xtra_win_data *xd = &xdata[i]; 1537 1547 1538 strnfmt(temp, 14, "xtra_font_%d", i);1548 strnfmt(temp, sizeof(temp), "xtra_font_%d", i); 1539 1549 temp_widget = glade_xml_get_widget(gtk_xml, temp); 1540 1550 gtk_font_button_set_font_name(GTK_FONT_BUTTON (temp_widget), xd->font.name); … … 1572 1582 static void init_gtk_windows(void) 1573 1583 { 1584 GtkWidget *options, *temp_widget; 1585 GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 1586 1574 1587 char buf[1024], logo[1024], temp[20]; 1575 GtkWidget *options, *temp_widget;1576 1588 int i = 0; 1577 1589 bool err; … … 1623 1635 1624 1636 /* Set title and name */ 1625 strnfmt(temp, 14, "term_window_%d", i);1637 strnfmt(temp, sizeof(temp), "term_window_%d", i); 1626 1638 gtk_widget_set_name(td->window, temp); 1627 1639 gtk_window_set_title(GTK_WINDOW(td->window), td->name); … … 1641 1653 { 1642 1654 term_data *td = &data[i]; 1643 GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 1644 1655 1645 1656 gtk_widget_realize(td->window); 1646 1657 gtk_widget_realize(td->drawing_area); … … 1648 1659 gtk_widget_modify_bg(td->window, GTK_STATE_NORMAL, &black); 1649 1660 gtk_widget_modify_bg(td->drawing_area, GTK_STATE_NORMAL, &black); 1650 1651 strnfmt(temp, 14, "term_font_%d", i);1661 1662 strnfmt(temp, sizeof(temp), "term_font_%d", i); 1652 1663 temp_widget = glade_xml_get_widget(gtk_xml, temp); 1653 1664 gtk_widget_realize(temp_widget); 1654 1665 1655 err = gtk_font_button_set_font_name(GTK_FONT_BUTTON (temp_widget), td->font.name); 1656 } 1657 } 1658 static void show_windows() 1666 err = gtk_font_button_set_font_name(GTK_FONT_BUTTON(temp_widget), td->font.name); 1667 } 1668 } 1669 1670 static void show_windows(void) 1659 1671 { 1660 1672 int i; 1673 1661 1674 GtkWidget *menu_item; 1675 char item_name[20]; 1662 1676 1663 1677 /* Initialize the windows */ … … 1665 1679 { 1666 1680 term_data *td = &data[i]; 1667 char item_name[20];1668 1681 1669 1682 /* Activate the window screen */ … … 1672 1685 set_window_size(td); 1673 1686 1674 strnfmt(item_name, 16+1, "term_menu_item_%i", i);1687 strnfmt(item_name, sizeof(item_name), "term_menu_item_%i", i); 1675 1688 menu_item = glade_xml_get_widget(gtk_xml, item_name); 1676 1689 1677 if (td->visible)1690 if (td->visible) 1678 1691 create_term_cairo(td); 1679 1692 1680 1693 if (i == 0) 1681 {1682 1694 gtk_widget_show(td->window); 1683 }1684 1695 else if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_item)) != td->visible) 1685 1696 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), td->visible); … … 1692 1703 xtra_win_data *xd = &xdata[i]; 1693 1704 1694 set_xtra_window_size(xd);1695 1696 if (xd->visible)1697 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(xd->menu), TRUE);1705 set_xtra_window_size(xd); 1706 1707 if (xd->visible) 1708 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(xd->menu), TRUE); 1698 1709 } 1699 1710 … … 1706 1717 static void xtra_data_destroy(xtra_win_data *xd) 1707 1718 { 1708 if GTK_IS_WIDGET(xd->win)1719 if (GTK_IS_WIDGET(xd->win)) 1709 1720 gtk_widget_destroy(xd->win); 1710 if GTK_IS_WIDGET(xd->text_view)1721 if (GTK_IS_WIDGET(xd->text_view)) 1711 1722 gtk_widget_destroy(xd->text_view); 1712 if GTK_IS_WIDGET(xd->menu)1723 if (GTK_IS_WIDGET(xd->menu)) 1713 1724 gtk_widget_destroy(xd->menu); 1714 if GTK_IS_WIDGET(xd->drawing_area)1725 if (GTK_IS_WIDGET(xd->drawing_area)) 1715 1726 gtk_widget_destroy(xd->drawing_area); 1716 1727 … … 1721 1732 static void term_data_destroy(term_data *td) 1722 1733 { 1723 if GTK_IS_WIDGET(td->window)1734 if (GTK_IS_WIDGET(td->window)) 1724 1735 gtk_widget_destroy(td->window); 1725 if GTK_IS_WIDGET(td->drawing_area)1736 if (GTK_IS_WIDGET(td->drawing_area)) 1726 1737 gtk_widget_destroy(td->drawing_area); 1727 1738 … … 1741 1752 { 1742 1753 xtra_win_data *xd = &xdata[i]; 1743 1754 1744 1755 xtra_data_destroy(xd); 1745 1756 } … … 1749 1760 { 1750 1761 term_data *td = &data[i]; 1751 1762 1752 1763 term_data_destroy(td); 1753 1764 } … … 1829 1840 { 1830 1841 int i; 1831 char *c = NULL, colorname[10] = "color-00",str[10] = "#FFFFFF"; 1842 char colorname[10] = "color-00"; 1843 char str[10] = "#FFFFFF"; 1844 1832 1845 GtkTextTagTable *tags; 1833 c = str; 1846 1834 1847 tags = gtk_text_buffer_get_tag_table(xd->buf); 1835 1848 1836 1849 for (i = 0; i <= 15; i++) 1837 1850 { 1838 strnfmt(colorname, 8 + 1, "color-%d", i);1839 strnfmt( c, 14, "#%02x%02x%02x", angband_color_table[i][1], angband_color_table[i][2], angband_color_table[i][3]);1840 1851 strnfmt(colorname, sizeof(colorname), "color-%d", i); 1852 strnfmt(str, sizeof(str), "#%02x%02x%02x", angband_color_table[i][1], angband_color_table[i][2], angband_color_table[i][3]); 1853 1841 1854 if (gtk_text_tag_table_lookup(tags, colorname) != NULL) 1842 1855 gtk_text_tag_table_remove(tags, gtk_text_tag_table_lookup(tags, colorname)); 1843 1856 1844 1857 if (gtk_text_tag_table_lookup(tags, colorname) == NULL) 1845 gtk_text_buffer_create_tag(xd->buf, colorname, "foreground", c, NULL);1858 gtk_text_buffer_create_tag(xd->buf, colorname, "foreground", str, NULL); 1846 1859 } 1847 1860 } … … 1853 1866 1854 1867 /* Get the color tag ready, and tack a line feed on the line we're printing */ 1855 strnfmt(colorname, 8 + 1, "color-%d", color);1868 strnfmt(colorname, sizeof(colorname), "color-%d", color); 1856 1869 1857 1870 /* Print it at the end of the window */ … … 1861 1874 1862 1875 static void text_view_print(xtra_win_data *xd, const char *str, byte color) 1863 { 1864 strnfmt((char *)str, strlen(str) + 2, "%s\n", str); 1876 { 1865 1877 text_view_put(xd, str, color); 1878 text_view_put(xd, "\n", color); 1866 1879 } 1867 1880 … … 1870 1883 xtra_win_data *xd = &xdata[4]; 1871 1884 1872 char *res,str[80];1885 char str[80]; 1873 1886 va_list vp; 1874 int n;1875 1887 1876 1888 if (GTK_IS_TEXT_VIEW(xd->text_view)) … … 1885 1897 } 1886 1898 1887 /* Begin the Varargs Stuff */1888 1899 va_start(vp, fmt); 1889 1890 /* Format the args */ 1891 res = vformat(fmt, vp); 1892 1893 /* End the Varargs Stuff */ 1900 (void)vstrnfmt(str, sizeof(str), fmt, vp); 1894 1901 va_end(vp); 1895 1902 1896 n = my_strcpy(str, res, strlen(res) + 1);1897 1898 1903 #ifdef VERBOSE_DEBUG 1899 1904 if (GTK_IS_TEXT_VIEW(xd->text_view)) … … 1913 1918 { 1914 1919 xtra_win_data *xd = &xdata[0]; 1915 1920 1916 1921 u16b num; 1917 int i,c; 1918 char str[80]; 1919 1920 if (xd != NULL) 1921 { 1922 int i; 1923 1924 if (!xd) return; 1925 1922 1926 xd->buf = gtk_text_buffer_new(NULL); 1923 1927 gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); … … 1928 1932 1929 1933 for (i = 0; i < num; i++) 1930 { 1931 c = message_color(i); 1932 1933 strnfmt(str, strlen(message_str(i)) + 1, "%s", message_str(i)); 1934 text_view_print(xd, str, c); 1935 } 1936 } 1934 text_view_print(xd, message_str(i), message_color(i)); 1937 1935 } 1938 1936 … … 1960 1958 } 1961 1959 1962 static void inv_slot(char *str, int i, bool equip)1960 static void inv_slot(char *str, size_t len, int i, bool equip) 1963 1961 { 1964 1962 object_type *o_ptr; … … 1971 1969 1972 1970 /* Is this item "acceptable"? */ 1973 if (item_tester_okay(o_ptr) || equip )1971 if (item_tester_okay(o_ptr) || equip) 1974 1972 { 1975 1973 /* Obtain an item description */ … … 1978 1976 /* Obtain the length of the description */ 1979 1977 n = strlen(o_name); 1980 1981 strnfmt(label, 3 + 1, "%c) ",index_to_label(i));1978 1979 strnfmt(label, sizeof(label), "%c) ", index_to_label(i)); 1982 1980 1983 1981 if (equip && show_labels) … … 1987 1985 if (o_ptr->weight) 1988 1986 { 1989 1987 int wgt = o_ptr->weight * o_ptr->number; 1990 1988 name_size = name_size - 4 - 9 - 9 - 5; 1991 int wgt = o_ptr->weight * o_ptr->number;1992 1989 1993 1990 if (equip && show_labels) 1994 strnfmt(str, 80,"%s%-*s %3d.%1d lb <-- %s", label, name_size, o_name, wgt / 10, wgt % 10, mention_use(i));1991 strnfmt(str, len, "%s%-*s %3d.%1d lb <-- %s", label, name_size, o_name, wgt / 10, wgt % 10, mention_use(i)); 1995 1992 else 1996 strnfmt(str, 80, "%s%-*s %3d.%1d lb", label, name_size, o_name, wgt / 10, wgt % 10); 1997 1993 strnfmt(str, len, "%s%-*s %3d.%1d lb", label, name_size, o_name, wgt / 10, wgt % 10); 1998 1994 } 1999 1995 else 2000 1996 { 2001 1997 name_size = name_size - 4 - 9 - 5; 1998 2002 1999 if (equip && show_labels) 2003 strnfmt(str, 80, "%s%-*s <-- %s", label, name_size, o_name, mention_use(i));2000 strnfmt(str, len, "%s%-*s <-- %s", label, name_size, o_name, mention_use(i)); 2004 2001 else 2005 strnfmt(str, 80, "%s%-*s", label, name_size, o_name);2002 strnfmt(str, len, "%s%-*s", label, name_size, o_name); 2006 2003 } 2007 2004 } … … 2011 2008 { 2012 2009 xtra_win_data *xd = &xdata[1]; 2013 2010 2011 char str[80]; 2012 2014 2013 register int i, z; 2015 2014 byte attr; 2016 object_type *o_ptr; 2017 2018 if ( xd != NULL)2019 { 2015 2016 2017 if (!xd) return; 2018 2020 2019 xd->buf = gtk_text_buffer_new(NULL); 2021 gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf);2020 gtk_text_view_set_buffer(GTK_TEXT_VIEW(xd->text_view), xd->buf); 2022 2021 2023 2022 init_color_tags(xd); … … 2028 2027 for (i = 0; i < z; i++) 2029 2028 { 2030 char str[80];2031 2032 2029 /* Examine the item */ 2033 o _ptr = &inventory[i];2030 object_type *o_ptr = &inventory[i]; 2034 2031 2035 2032 /* Is this item "acceptable"? */ … … 2039 2036 attr = tval_to_attr[o_ptr->tval % N_ELEMENTS(tval_to_attr)]; 2040 2037 2041 inv_slot(str, i, FALSE);2038 inv_slot(str, sizeof(str), i, FALSE); 2042 2039 text_view_print(xd, str, attr); 2043 2040 } 2044 2041 } 2045 2042 } 2046 }2047 2043 2048 2044 static void handle_equip(game_event_type type, game_event_data *data, void *user) … … 2052 2048 register int i; 2053 2049 byte attr; 2054 object_type *o_ptr;2055 2056 if ( xd != NULL)2057 { 2050 char str[80]; 2051 2052 if (!xd) return; 2053 2058 2054 xd->buf = gtk_text_buffer_new(NULL); 2059 gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf);2055 gtk_text_view_set_buffer(GTK_TEXT_VIEW(xd->text_view), xd->buf); 2060 2056 2061 2057 init_color_tags(xd); … … 2064 2060 for (i = INVEN_WIELD; i < INVEN_TOTAL; i++) 2065 2061 { 2066 char str[80]; 2067 2068 /* Examine the item */ 2069 o_ptr = &inventory[i]; 2070 2071 /* Is this item "acceptable"? */ 2062 object_type *o_ptr = &inventory[i]; 2063 2072 2064 attr = tval_to_attr[o_ptr->tval % N_ELEMENTS(tval_to_attr)]; 2073 2074 inv_slot(str, i, TRUE); 2065 2066 inv_slot(str, sizeof(str), i, TRUE); 2067 2075 2068 text_view_print(xd, str, attr); 2076 2069 } 2077 }2078 } 2070 } 2071 2079 2072 static void handle_mons_list(game_event_type type, game_event_data *data, void *user) 2080 2073 { … … 2096 2089 u16b *race_count; 2097 2090 2098 if (xd != NULL) 2099 { 2091 2092 if (!xd) return; 2093 2094 2100 2095 xd->buf = gtk_text_buffer_new(NULL); 2101 2096 gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); … … 2122 2117 if (!total_count) 2123 2118 { 2124 strnfmt(str, 20 + 1, "You see no monsters.");2119 strnfmt(str, sizeof(str), "You see no monsters."); 2125 2120 text_view_print(xd, str, TERM_SLATE); 2126 2121 … … 2132 2127 } 2133 2128 2134 strnfmt(str, 25 + 1, "You can see %d monster%s:", total_count, (total_count > 1 ? "s" : ""));2129 strnfmt(str, sizeof(str), "You can see %d monster%s:", total_count, PLURAL(total_count)); 2135 2130 text_view_print(xd, str, 1); 2136 2131 … … 2162 2157 else 2163 2158 strnfmt(buf, sizeof(buf), "%s (x%d) ", m_name, race_count[i]); 2164 2159 2165 2160 text_view_print(xd, buf, attr); 2166 2161 line++; … … 2169 2164 /* Free the race counters */ 2170 2165 FREE(race_count); 2171 } 2172 } 2173 2174 static byte monst_color(float percent) 2175 { 2176 int pct = percent * 100; 2166 } 2167 2168 static byte monst_color(const monster_type *m_ptr) 2169 { 2177 2170 byte attr = TERM_WHITE; 2178 monster_type *m_ptr = &mon_list[p_ptr->health_who]; 2179 2171 int pct = 0; 2172 2173 if (m_ptr->maxhp) 2174 pct = (m_ptr->hp * 100) / m_ptr->maxhp; 2175 2176 2180 2177 /* Badly wounded */ 2181 2178 if (pct >= 10) attr = TERM_L_RED; … … 2189 2186 /* Healthy */ 2190 2187 if (pct >= 100) attr = TERM_L_GREEN; 2188 2191 2189 2192 2190 /* Afraid */ … … 2296 2294 char str[80], str2[80]; 2297 2295 byte color; 2298 float m_cur_hp, m_max_hp, percent;2299 2296 cairo_rectangle_t r; 2300 2297 … … 2392 2389 else 2393 2390 color = TERM_RED; 2394 2395 percent = 0; 2396 if (p_ptr->mhp > 0.0) 2397 percent = (p_ptr->chp / p_ptr->mhp); 2398 2391 2399 2392 cr_aligned_text_print(xd, 0, 16, str, TERM_WHITE, str2, color, sidebar_length); 2400 2393 xtra_drawn_progress_bar(xd, 0, 17, p_ptr->chp, p_ptr->mhp, color, 13); … … 2411 2404 cr_aligned_text_print(xd, 0, 18, str, TERM_WHITE, str2, color, sidebar_length); 2412 2405 2413 percent = 0;2414 if (p_ptr->msp > 0)2415 percent = p_ptr->csp/p_ptr->msp;2416 2417 2406 xtra_drawn_progress_bar(xd, 0, 19, p_ptr->csp, p_ptr->msp, color, 13); 2418 2407 2419 2408 /* 20 is blank */ 2420 2409 2421 m_cur_hp = m_ptr->hp; 2422 m_max_hp = m_ptr->maxhp; 2423 if ((m_max_hp > 0.0) && (m_cur_hp > 0.0)) 2424 percent = m_cur_hp / m_max_hp; 2425 else 2426 percent = 0; 2427 2428 xtra_drawn_progress_bar(xd, 0, 21, m_cur_hp, m_max_hp, monst_color(percent), 13); 2429 2430 /* 20 is blank */ 2431 2410 xtra_drawn_progress_bar(xd, 0, 21, m_ptr->hp, m_ptr->maxhp, monst_color(m_ptr), 13); 2411 2432 2412 /* Print the level */ 2433 2413 strnfmt(str, sizeof(str), "%d' (L%d)", p_ptr->depth * 50, p_ptr->depth); 2434 strnfmt(str , sizeof(str), "%-*s", sidebar_length, str);2435 draw_xtra_cr_text(xd, 0, 22, TERM_WHITE, str );2414 strnfmt(str2, sizeof(str2), "%-*s", sidebar_length, str); 2415 draw_xtra_cr_text(xd, 0, 22, TERM_WHITE, str2); 2436 2416 2437 2417 invalidate_drawing_area(xd->drawing_area, r); … … 2480 2460 /* Set command hook */ 2481 2461 get_game_command = get_init_cmd; 2482 2462 2483 2463 /* I plan to put everything on the sidebar together, so... */ 2484 2464 event_add_handler_set(my_player_events, N_ELEMENTS(my_player_events), handle_sidebar, NULL); … … 2608 2588 } 2609 2589 2610 #endif /*USE_GTK */2590 #endif /* USE_GTK */ trunk/src/main-gtk.h
r578 r588 377 377 378 378 /* Return an inventory slot */ 379 static void inv_slot(char *str, int i, bool equip);379 static void inv_slot(char *str, size_t len, int i, bool equip); 380 380 381 381 /* Print the inventory */ … … 389 389 390 390 /* Return the color of the monster bar */ 391 static byte monst_color( float percent);391 static byte monst_color(const monster_type *m_ptr); 392 392 393 393 /* Print the sidebar */
