From f4a5f85ecf02c1dd1978dd8209868ffeae90b8ab Mon Sep 17 00:00:00 2001 From: Miguel de Icaza Date: Mon, 18 May 1998 22:48:48 +0000 Subject: [PATCH] Moved the text icon layout code from here. --- gnome/ChangeLog | 5 ++ gnome/gtrans.c | 168 ++++-------------------------------------------- po/mc.pot | 84 ++++++++++++------------ src/ChangeLog | 4 ++ 4 files changed, 62 insertions(+), 199 deletions(-) diff --git a/gnome/ChangeLog b/gnome/ChangeLog index ecbecaac3..d6df3f9e3 100644 --- a/gnome/ChangeLog +++ b/gnome/ChangeLog @@ -1,3 +1,8 @@ +1998-05-15 Miguel de Icaza + + * gscreen.c (create_popup_submenu): Use continue, not break on + this loop. + Sat May 16 02:29:51 1998 Tom Tromey * gdesktop.c (url_dropped): `exec' field of desktop entry now a diff --git a/gnome/gtrans.c b/gnome/gtrans.c index 82a47a164..9ed83a35e 100644 --- a/gnome/gtrans.c +++ b/gnome/gtrans.c @@ -23,154 +23,6 @@ int want_transparent_text = 0; * - Federico */ -struct text_info { - GList *rows; - GdkFont *font; - int width; - int height; - int baseline_skip; -}; - - -static void -free_string (gpointer data, gpointer user_data) -{ - if (data) - g_free (data); -} - -static void -text_info_free (struct text_info *ti) -{ - g_list_foreach (ti->rows, free_string, NULL); - g_list_free (ti->rows); - g_free (ti); -} - -static struct text_info * -layout_text (GtkWidget *widget, char *text) -{ - struct text_info *ti; - char *row_end, *row_text, *break_pos; - int i, row_width, window_width; - size_t len; - - ti = g_new (struct text_info, 1); - - ti->rows = NULL; - ti->font = widget->style->font; - ti->width = 0; - ti->height = 0; - - ti->baseline_skip = ti->font->ascent + ti->font->descent; - - window_width = 0; - - while (*text) { - row_end = strchr (text, '\n'); - if (!row_end) - row_end = strchr (text, '\0'); - - len = row_end - text + 1; - row_text = g_new (char, len); - memcpy (row_text, text, len - 1); - row_text[len - 1] = '\0'; - - /* Adjust the window's width or shorten the row until - * it fits in the window. - */ - - while (1) { - row_width = gdk_string_width (ti->font, row_text); - if (!window_width) { - /* make an initial guess at window's width */ - - if (row_width > SNAP_X) - window_width = SNAP_X; - else - window_width = row_width; - } - - if (row_width <= window_width) - break; - - if (strchr (row_text, ' ')) { - /* the row is currently too wide, but we have - * blanks in the row so we can break it into - * smaller pieces - */ - - int avg_width = row_width / strlen (row_text); - - i = window_width; - - if (avg_width != 0) - i /= avg_width; - - if ((size_t) i >= len) - i = len - 1; - - break_pos = strchr (row_text + i, ' '); - if (!break_pos) { - break_pos = row_text+ i; - while (*--break_pos != ' '); - } - - *break_pos = '\0'; - } else { - /* We can't break this row into any smaller - * pieces, so we have no choice but to widen - * the window - * - * For MC, we may want to modify the code above - * so that it can also split the string on the - * slahes of filenames. - */ - - window_width = row_width; - break; - } - } - - if (row_width > ti->width) - ti->width = row_width; - - ti->rows = g_list_append (ti->rows, row_text); - ti->height += ti->baseline_skip; - - text += strlen (row_text); - if (!*text) - break; - - if (text[0] == '\n' && text[1]) { - /* end of paragraph and there is more text to come */ - ti->rows = g_list_append (ti->rows, NULL); - ti->height += ti->baseline_skip / 2; - } - - text++; /* skip blank or newline */ - } - - return ti; -} - -static void -paint_text (struct text_info *ti, GdkDrawable *drawable, GdkGC *gc, int x_ofs, int y_ofs) -{ - int y, w; - GList *item; - - y = y_ofs + ti->font->ascent; - - for (item = ti->rows; item; item = item->next) { - if (item->data) { - w = gdk_string_width (ti->font, item->data); - gdk_draw_string (drawable, ti->font, gc, x_ofs + (ti->width - w) / 2, y, item->data); - y += ti->baseline_skip; - } else - y += ti->baseline_skip / 2; - } -} static void set_window_text (GtkWidget *window, GdkImlibImage *im, char *text) @@ -179,12 +31,12 @@ set_window_text (GtkWidget *window, GdkImlibImage *im, char *text) GdkPixmap *im_pixmap; GdkBitmap *mask; GdkBitmap *im_mask; - struct text_info *ti; + struct gnome_icon_text_info *ti; GdkColor color; GdkGC *p_gc, *m_gc; int width, height; - ti = layout_text (window, text); + ti = gnome_icon_layout_text (window->style->font, text, SNAP_X); width = MAX (ti->width, im->rgb_width); height = im->rgb_height + SPACING + ti->height; @@ -296,16 +148,18 @@ set_window_text (GtkWidget *window, GdkImlibImage *im, char *text) } else { color.pixel = 1; gdk_gc_set_foreground (m_gc, &color); - paint_text (ti, mask, m_gc, - (width - ti->width) / 2, - im->rgb_height + SPACING); + gnome_icon_paint_text (ti, mask, m_gc, + (width - ti->width) / 2, + im->rgb_height + SPACING, + ti->width); } gdk_color_white (gdk_imlib_get_colormap (), &color); gdk_gc_set_foreground (p_gc, &color); - paint_text (ti, pixmap, p_gc, - (width - ti->width) / 2, - im->rgb_height + SPACING); + gnome_icon_paint_text (ti, pixmap, p_gc, + (width - ti->width) / 2, + im->rgb_height + SPACING, + ti->width); /* Set contents of window */ @@ -319,7 +173,7 @@ set_window_text (GtkWidget *window, GdkImlibImage *im, char *text) gdk_pixmap_unref (pixmap); gdk_pixmap_unref (mask); - text_info_free (ti); + gnome_icon_text_info_free (ti); } static void diff --git a/po/mc.pot b/po/mc.pot index 9ecb01410..aa38837bc 100644 --- a/po/mc.pot +++ b/po/mc.pot @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Date: 1998-05-13 21:20:19-0500\n" +"Date: 1998-05-18 14:24:05-0500\n" "From: Miguel de Icaza,computo,622-4680 \n" "Content-Type: text/plain; charset=\n" "Xgettext-Options: --default-domain=mc --directory=.. --add-comments --keyword=_ --keyword=N_ --files-from=./POTFILES.in\n" @@ -62,7 +62,7 @@ msgstr "" msgid " Save As " msgstr "" -#: edit/editcmd.c:413 edit/editcmd.c:722 edit/editcmd.c:734 edit/editcmd.c:835 edit/editcmd.c:918 gnome/gdesktop.c:1303 src/ext.c:295 src/help.c:320 src/main.c:685 src/subshell.c:696 src/subshell.c:722 src/utilunix.c:374 src/utilunix.c:378 src/utilunix.c:444 +#: edit/editcmd.c:413 edit/editcmd.c:722 edit/editcmd.c:734 edit/editcmd.c:835 edit/editcmd.c:918 gnome/gdesktop.c:1306 src/ext.c:295 src/help.c:320 src/main.c:685 src/subshell.c:696 src/subshell.c:722 src/utilunix.c:374 src/utilunix.c:378 src/utilunix.c:444 msgid " Warning " msgstr "" @@ -308,11 +308,11 @@ msgstr "" msgid "Cancel quit" msgstr "" -#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:806 gnome/gdesktop.c:1118 src/cmd.c:248 src/file.c:2328 src/file.c:2654 src/file.c:2844 src/hotlist.c:1027 src/main.c:840 src/screen.c:2040 src/subshell.c:697 src/subshell.c:723 src/tree.c:1195 src/view.c:410 +#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:806 gnome/gdesktop.c:1121 src/cmd.c:248 src/file.c:2328 src/file.c:2654 src/file.c:2844 src/hotlist.c:1027 src/main.c:840 src/screen.c:2040 src/subshell.c:697 src/subshell.c:723 src/tree.c:1195 src/view.c:410 msgid "&Yes" msgstr "" -#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:806 gnome/gdesktop.c:1118 src/cmd.c:248 src/file.c:2328 src/file.c:2653 src/file.c:2844 src/hotlist.c:1027 src/main.c:840 src/screen.c:2040 src/subshell.c:697 src/subshell.c:723 src/tree.c:1195 src/view.c:410 +#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:806 gnome/gdesktop.c:1121 src/cmd.c:248 src/file.c:2328 src/file.c:2653 src/file.c:2844 src/hotlist.c:1027 src/main.c:840 src/screen.c:2040 src/subshell.c:697 src/subshell.c:723 src/tree.c:1195 src/view.c:410 msgid "&No" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "" msgid " The shell is already running a command " msgstr "" -#: gnome/gcmd.c:92 gnome/gdesktop.c:1116 src/main.c:838 src/screen.c:2038 +#: gnome/gcmd.c:92 gnome/gdesktop.c:1119 src/main.c:838 src/screen.c:2038 msgid " The Midnight Commander " msgstr "" @@ -3208,7 +3208,7 @@ msgstr "" msgid " %s bytes in %d file%s" msgstr "" -#: gnome/gscreen.c:1490 src/screen.c:671 +#: gnome/gscreen.c:1492 src/screen.c:671 msgid "" msgstr "" @@ -3216,11 +3216,11 @@ msgstr "" msgid "Unknow tag on display format: " msgstr "" -#: gnome/gdesktop.c:1117 src/screen.c:2039 +#: gnome/gdesktop.c:1120 src/screen.c:2039 msgid " Do you really want to execute? " msgstr "" -#: gnome/glayout.c:274 gnome/gscreen.c:515 src/screen.c:2258 src/screen.c:2292 +#: gnome/glayout.c:274 gnome/gscreen.c:516 src/screen.c:2258 src/screen.c:2292 msgid "View" msgstr "" @@ -3732,19 +3732,19 @@ msgstr "" msgid "Do you want to delete " msgstr "" -#: gnome/gdesktop.c:1008 gnome/gscreen.c:511 +#: gnome/gdesktop.c:1008 gnome/gscreen.c:512 msgid "Properties" msgstr "" -#: gnome/gdesktop.c:1127 +#: gnome/gdesktop.c:1130 msgid "Open with..." msgstr "" -#: gnome/gdesktop.c:1128 gnome/gscreen.c:463 +#: gnome/gdesktop.c:1131 gnome/gscreen.c:464 msgid "Enter extra arguments:" msgstr "" -#: gnome/gdesktop.c:1303 +#: gnome/gdesktop.c:1306 msgid " Could not open %s directory" msgstr "" @@ -3756,7 +3756,7 @@ msgstr "" msgid "Opens a terminal" msgstr "" -#: gnome/glayout.c:269 gnome/gscreen.c:530 +#: gnome/glayout.c:269 gnome/gscreen.c:531 msgid "Copy..." msgstr "" @@ -3780,7 +3780,7 @@ msgstr "" msgid "Creates a new folder" msgstr "" -#: gnome/glayout.c:272 gnome/gscreen.c:532 +#: gnome/glayout.c:272 gnome/gscreen.c:533 msgid "Delete..." msgstr "" @@ -4077,115 +4077,115 @@ msgstr "" msgid "Select icon" msgstr "" -#: gnome/gscreen.c:462 +#: gnome/gscreen.c:463 msgid " Open with..." msgstr "" -#: gnome/gscreen.c:513 +#: gnome/gscreen.c:514 msgid "Open" msgstr "" -#: gnome/gscreen.c:514 +#: gnome/gscreen.c:515 msgid "Open with" msgstr "" -#: gnome/gscreen.c:516 +#: gnome/gscreen.c:517 msgid "View unfiltered" msgstr "" -#: gnome/gscreen.c:518 +#: gnome/gscreen.c:519 msgid "Link..." msgstr "" -#: gnome/gscreen.c:519 +#: gnome/gscreen.c:520 msgid "Symlink..." msgstr "" -#: gnome/gscreen.c:520 +#: gnome/gscreen.c:521 msgid "Edit symlink..." msgstr "" -#: gnome/gscreen.c:531 +#: gnome/gscreen.c:532 msgid "Rename/move.." msgstr "" -#: gnome/gscreen.c:1298 +#: gnome/gscreen.c:1300 msgid "All files" msgstr "" -#: gnome/gscreen.c:1300 +#: gnome/gscreen.c:1302 msgid "Archives and compressed files" msgstr "" -#: gnome/gscreen.c:1302 +#: gnome/gscreen.c:1304 msgid "RPM/DEB files" msgstr "" -#: gnome/gscreen.c:1304 +#: gnome/gscreen.c:1306 msgid "Text/Document files" msgstr "" -#: gnome/gscreen.c:1306 +#: gnome/gscreen.c:1308 msgid "HTML and SGML files" msgstr "" -#: gnome/gscreen.c:1308 +#: gnome/gscreen.c:1310 msgid "Postscript and PDF files" msgstr "" -#: gnome/gscreen.c:1310 +#: gnome/gscreen.c:1312 msgid "Spreadsheet files" msgstr "" -#: gnome/gscreen.c:1312 +#: gnome/gscreen.c:1314 msgid "Image files" msgstr "" -#: gnome/gscreen.c:1315 +#: gnome/gscreen.c:1317 msgid "Video/animation files" msgstr "" -#: gnome/gscreen.c:1317 +#: gnome/gscreen.c:1319 msgid "Audio files" msgstr "" -#: gnome/gscreen.c:1319 +#: gnome/gscreen.c:1321 msgid "C program files" msgstr "" -#: gnome/gscreen.c:1321 +#: gnome/gscreen.c:1323 msgid "C++ program files" msgstr "" -#: gnome/gscreen.c:1323 +#: gnome/gscreen.c:1325 msgid "Objective-C program files" msgstr "" -#: gnome/gscreen.c:1325 +#: gnome/gscreen.c:1327 msgid "Scheme program files" msgstr "" -#: gnome/gscreen.c:1327 +#: gnome/gscreen.c:1329 msgid "Assembler program files" msgstr "" -#: gnome/gscreen.c:1329 +#: gnome/gscreen.c:1331 msgid "Misc. program files" msgstr "" -#: gnome/gscreen.c:1331 +#: gnome/gscreen.c:1333 msgid "Font files" msgstr "" -#: gnome/gscreen.c:1456 +#: gnome/gscreen.c:1458 msgid "Search: " msgstr "" -#: gnome/gscreen.c:1466 +#: gnome/gscreen.c:1468 msgid " %s bytes in %d file%s" msgstr "" -#: gnome/gscreen.c:1541 +#: gnome/gscreen.c:1543 msgid "Filter" msgstr "" diff --git a/src/ChangeLog b/src/ChangeLog index 33a23dfa1..5090bdaca 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +1998-05-18 Miguel de Icaza + + * menu.c (menubar_drop_compute): Check for inrange items. + 1998-05-15 Miguel de Icaza * color.c (init_colors): Provide X-only version of color