jcs
/detritus
/amendments
/41
gopher: Add icon for menus pointing to other servers
Also tweak icon spacing to keep fixed-width text aligned
jcs made amendment 41 about 1 year ago
--- detritus.π.r Fri Nov 15 13:48:07 2024
+++ detritus.π.r Fri Nov 15 15:26:43 2024
@@ -106,6 +106,8 @@ data 'SICN' (1024, purgeable) {
$"4040 4040 7FC0 0000 0000 0000 0000 0000" /* @@@@.¿.......... */
$"0400 0A00 1100 2080 4340 84A0 4F40 2260" /* ...... ÄC@цO@"` */
$"11E0 0A60 0400 0000 0000 0000 0000 0000" /* ...`............ */
+ $"0000 7800 87C0 8020 8F20 8720 8D20 9C20" /* ..x.á¿Ä è á ç ú */
+ $"9820 FFE0 0000 0000 0000 0000 0000 0000" /* ò .............. */
};
data 'DLOG' (128) {
--- gopher.c Fri Nov 15 12:38:04 2024
+++ gopher.c Fri Nov 15 15:24:41 2024
@@ -20,8 +20,6 @@
#include "detritus.h"
-#define GOPHER_PORT 70
-
#define GOPHER_ICON_SICN_ID 1024
#define GOPHER_ICON_TEXT_ID 0
#define GOPHER_ICON_FOLDER_ID 1
@@ -32,10 +30,8 @@
#define GOPHER_ICON_SOUND_ID 6
#define GOPHER_ICON_IMAGE_ID 7
#define GOPHER_ICON_DOC_ID 8
+#define GOPHER_ICON_GOPHER_ID 10
-/* printing line-by-line is slow, so only recalc every n lines */
-#define RECALC_EVERY_N_LINES 25
-
static const char showable_types[] = "013i";
struct gopher_page {
@@ -226,7 +222,7 @@ gopher_process(page_handle pageh)
static void
gopher_print_menu(struct page *page, char *line, size_t len)
{
- static char uri[URI_MAX_STR_LEN + 1], prefix[5];
+ static char uri[URI_MAX_STR_LEN + 1];
struct gopher_page *gopher;
BitMap icon;
FontInfo sizing;
@@ -264,6 +260,12 @@ gopher_print_menu(struct page *page, char *line, size_
browser_print(page->browser, label, strlen(label), true);
break;
default:
+ if (type == 'h' && strncmp(selector, "URL:", 4) == 0)
+ tlen = strlcpy(uri, selector + 4, sizeof(uri));
+ else
+ tlen = snprintf(uri, sizeof(uri), "gopher://%s/%c%s", hostname,
+ type, selector);
+
switch (type) {
case '0':
/* text file */
@@ -271,7 +273,10 @@ gopher_print_menu(struct page *page, char *line, size_
break;
case '1':
/* submenu */
- icon_off = GOPHER_ICON_FOLDER_ID;
+ if (strcasecmp(hostname, page->uri->hostname) == 0)
+ icon_off = GOPHER_ICON_FOLDER_ID;
+ else
+ icon_off = GOPHER_ICON_GOPHER_ID;
break;
case '3':
/* error page */
@@ -340,17 +345,11 @@ gopher_print_menu(struct page *page, char *line, size_
sizing.ascent = 10;
sizing.descent = 2;
- sizing.widMax = 20;
+ sizing.widMax = 18;
browser_print_bitmap(page->browser, &icon, &sizing);
HUnlock(gopher->sicn);
- if (type == 'h' && strncmp(selector, "URL:", 4) == 0)
- tlen = strlcpy(uri, selector + 4, sizeof(uri));
- else
- tlen = snprintf(uri, sizeof(uri), "gopher://%s/%c%s", hostname,
- type, selector);
-
page->browser->style |= STYLE_BOLD;
browser_print_link(page->browser, uri, tlen, label, strlen(label),
true);