From a416ee4f7bd38022f8866036d27aea22f2111030 Mon Sep 17 00:00:00 2001 From: Miguel de Icaza Date: Sat, 23 May 1998 00:55:03 +0000 Subject: [PATCH] Cool changes: 1998-05-22 Miguel de Icaza * gwidget.c (x_create_input): Disable the use of the GNOME entries for now, as they are very slow. We need to figure out what is wrong with this. With this change, dialog boxes close quickly instead of taking ages to close. * gscreen.c, gdesktop.c (file_popup_add_context, file_popup): Share the context menu code in gdesktop.c and gscreen.c. The desktop pop up menus now include all of the stuff that would have appeared in the Panel. * gdesktop.c (desktop_icon_remove): Remove the file associated with this desktop entry if it is on the ~/desktop directory. --- gnome/ChangeLog | 17 ++++++ gnome/gdesktop.c | 33 ++++++----- gnome/gdesktop.h | 8 +++ gnome/gscreen.c | 149 ++++++++++++++++++++++++++++++++++------------- gnome/gwidget.c | 17 +++++- lib/mc.ext.in | 2 +- po/mc.pot | 67 +++++++++++---------- src/ChangeLog | 121 ++++++++++++++++++++++++++++++++++++++ vfs/ChangeLog | 5 ++ 9 files changed, 331 insertions(+), 88 deletions(-) diff --git a/gnome/ChangeLog b/gnome/ChangeLog index e036b4953..653760a69 100644 --- a/gnome/ChangeLog +++ b/gnome/ChangeLog @@ -1,3 +1,20 @@ +1998-05-22 Miguel de Icaza + + * gwidget.c (x_create_input): Disable the use of the GNOME entries + for now, as they are very slow. We need to figure out what is + wrong with this. + + With this change, dialog boxes close quickly instead of taking + ages to close. + + * gscreen.c, gdesktop.c (file_popup_add_context, file_popup): + Share the context menu code in gdesktop.c and gscreen.c. The + desktop pop up menus now include all of the stuff that would have + appeared in the Panel. + + * gdesktop.c (desktop_icon_remove): Remove the file associated + with this desktop entry if it is on the ~/desktop directory. + 1998-05-21 Miguel de Icaza * gscreen.c (load_dnd_icons): Remove the code and the icons that diff --git a/gnome/gdesktop.c b/gnome/gdesktop.c index 1e5a216fb..e7a4fa727 100644 --- a/gnome/gdesktop.c +++ b/gnome/gdesktop.c @@ -637,7 +637,7 @@ desktop_icon_remove (desktop_icon_t *di) /* a .destop file or a directory */ /* Remove the .desktop */ mc_unlink (di->dentry->location); - + if (strcmp (di->dentry->type, "Directory") == 0){ struct stat s; @@ -648,6 +648,9 @@ desktop_icon_remove (desktop_icon_t *di) if (!remove_directory (di->dentry->exec[0])) return; } + } else { + if (strncmp (di->dentry->exec [0], desktop_directory, strlen (desktop_directory)) == 0) + mc_unlink (di->dentry->exec [0]); } } desktop_release_desktop_icon_t (di); @@ -732,19 +735,17 @@ connect_drop_signals (GtkWidget *widget, desktop_icon_t *di) gtk_signal_connect (o, "drop_data_available_event", GTK_SIGNAL_FUNC (drop_cb), di); } -static void -dentry_execute (desktop_icon_t *di) +void +desktop_icon_execute (GtkWidget *ignored, desktop_icon_t *di) { - GnomeDesktopEntry *dentry = di->dentry; - /* Ultra lame-o execute. This should be replaced by the fixed regexp_command * invocation */ - if (strcmp (di->dentry->type, "Directory") == 0){ + if (strcmp (di->dentry->type, "Directory") == 0) new_panel_at (di->dentry->exec[0]); - } else - gnome_desktop_entry_launch (dentry); + else + gnome_desktop_entry_launch (di->dentry); } static void @@ -902,8 +903,8 @@ desktop_icon_make_draggable (desktop_icon_t *di) } /* Called by the pop up menu: removes the icon from the desktop */ -static void -icon_delete (GtkWidget *widget, desktop_icon_t *di) +void +desktop_icon_delete (GtkWidget *widget, desktop_icon_t *di) { desktop_icon_remove (di); } @@ -935,8 +936,11 @@ my_create_transparent_text_window (char *file, char *text) if (!w) return NULL; } +#if 0 + /* Useless, really, we need to use the WM hints */ gtk_signal_connect(GTK_OBJECT(w), "expose_event", lower_window, NULL); +#endif return w; } @@ -990,7 +994,7 @@ dentry_button_click (GtkWidget *widget, GdkEventButton *event, desktop_icon_t *d { if (event->button == 1){ if (event->type == GDK_2BUTTON_PRESS) - dentry_execute (di); + desktop_icon_execute (widget, di); return TRUE; } @@ -1029,8 +1033,8 @@ post_setup_desktop_icon (desktop_icon_t *di, int show) } /* Pops up the icon properties pages */ -static void -icon_properties (GtkWidget *widget, desktop_icon_t *di) +void +desktop_icon_properties (GtkWidget *widget, desktop_icon_t *di) { int retval; @@ -1072,6 +1076,8 @@ desktop_icon_context_popup (GdkEventButton *event, desktop_icon_t *di) * the menu at the proper time. */ + file_popup (event, NULL, di, 0, di->dentry->exec [0]); +#if 0 item = gtk_menu_item_new_with_label (_("Properties")); gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (icon_properties), di); gtk_signal_connect_object_after (GTK_OBJECT (item), "activate", @@ -1087,6 +1093,7 @@ desktop_icon_context_popup (GdkEventButton *event, desktop_icon_t *di) gtk_widget_show (item); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, 0, NULL, 3, event->time); +#endif } char *root_drop_types [] = { diff --git a/gnome/gdesktop.h b/gnome/gdesktop.h index 93403142f..e142f2be6 100644 --- a/gnome/gdesktop.h +++ b/gnome/gdesktop.h @@ -50,6 +50,14 @@ void artificial_drag_start (GdkWindow *source_window, int x, int y); void start_desktop (void); void stop_desktop (void); +/* These get invoked by the context sensitive popup menu in gscreen.c */ +void desktop_icon_properties (GtkWidget *widget, desktop_icon_t *di); +void desktop_icon_execute (GtkWidget *widget, desktop_icon_t *di); +void desktop_icon_delete (GtkWidget *widget, desktop_icon_t *di); + +/* Pops up the context sensitive menu for a WPanel or a desktop_icon_t */ +void file_popup (GdkEventButton *event, void *WPanel_pointer, void *desktop_icon_t_pointer, int row, char *filename); + extern int icons_snap_to_grid; #endif diff --git a/gnome/gscreen.c b/gnome/gscreen.c index 75e0c5ee5..1c8b1321d 100644 --- a/gnome/gscreen.c +++ b/gnome/gscreen.c @@ -69,7 +69,7 @@ GtkWidget *drag_directory_ok = NULL; GtkWidget *drag_multiple = NULL; GtkWidget *drag_multiple_ok = NULL; -typedef void (*context_menu_callback)(GtkWidget *, WPanel *); +typedef void (*context_menu_callback)(GtkWidget *, void *); /* * Flags for the context-sensitive popup menus @@ -79,6 +79,8 @@ typedef void (*context_menu_callback)(GtkWidget *, WPanel *); #define F_SYMLINK 4 #define F_SINGLE 8 #define F_NOTDIR 16 +#define F_DICON 32 /* Only applies to desktop_icon_t */ +#define F_PANEL 64 /* Only applies to WPanel */ static void panel_file_list_configure_contents (GtkWidget *file_list, WPanel *panel, int main_width, int height); @@ -509,37 +511,50 @@ static struct { int flags; context_menu_callback callback; } file_actions [] = { - { N_("Properties"), F_SINGLE, panel_action_properties }, - { "", F_SINGLE, NULL }, - { N_("Open"), F_ALL, panel_action_open }, - { N_("Open with"), F_ALL, panel_action_open_with }, - { N_("View"), F_NOTDIR, panel_action_view }, - { N_("View unfiltered"), F_NOTDIR, panel_action_view_unfiltered }, - { "", 0, NULL }, - { N_("Link..."), F_REGULAR | F_SINGLE, (context_menu_callback) link_cmd }, - { N_("Symlink..."), F_SINGLE, (context_menu_callback) symlink_cmd }, - { N_("Edit symlink..."), F_SYMLINK, (context_menu_callback) edit_symlink_cmd }, + { N_("Properties"), F_SINGLE | F_PANEL, (context_menu_callback) panel_action_properties }, + { N_("Properties"), F_SINGLE | F_DICON, (context_menu_callback) desktop_icon_properties }, + { "", F_SINGLE, NULL }, + { N_("Open"), F_PANEL | F_ALL, (context_menu_callback) panel_action_open }, + { N_("Open"), F_DICON | F_ALL, (context_menu_callback) desktop_icon_execute }, + { N_("Open with"), F_PANEL | F_ALL, (context_menu_callback) panel_action_open_with }, + { N_("View"), F_PANEL | F_NOTDIR, (context_menu_callback) panel_action_view }, + { N_("View unfiltered"), F_PANEL | F_NOTDIR, (context_menu_callback) panel_action_view_unfiltered }, + { "", 0, NULL }, + { N_("Link..."), F_PANEL | F_REGULAR | F_SINGLE, (context_menu_callback) link_cmd }, + { N_("Symlink..."), F_PANEL | F_SINGLE, (context_menu_callback) symlink_cmd }, + { N_("Edit symlink..."), F_PANEL | F_SYMLINK, (context_menu_callback) edit_symlink_cmd }, { NULL, 0, NULL }, }; -/* - * context menu, constant entries */ -static struct { +typedef struct { char *text; context_menu_callback callback; -} common_actions [] = { +} common_menu_t; + +/* + * context menu, constant entries + */ +common_menu_t common_panel_actions [] = { { N_("Copy..."), (context_menu_callback) copy_cmd }, { N_("Rename/move.."), (context_menu_callback) ren_cmd }, { N_("Delete..."), (context_menu_callback) delete_cmd }, { NULL, NULL } }; +common_menu_t common_dicon_actions [] = { + { N_("Delete"), (context_menu_callback) desktop_icon_delete }, + { NULL, NULL } +}; + static GtkWidget * -create_popup_submenu (WPanel *panel, int row, char *filename) +create_popup_submenu (WPanel *panel, desktop_icon_t *di, int row, char *filename) { static int submenu_translated; GtkWidget *menu; int i; + void *closure; + + closure = (panel != 0 ? (void *) panel : (void *)di); if (!submenu_translated){ /* FIXME translate it */ @@ -550,17 +565,24 @@ create_popup_submenu (WPanel *panel, int row, char *filename) for (i = 0; file_actions [i].text; i++){ GtkWidget *item; + /* First, try F_PANEL and F_DICON flags */ + if (di && (file_actions [i].flags & F_PANEL)) + continue; + + if (panel && (file_actions [i].flags & F_DICON)) + continue; + /* Items with F_ALL bypass any other condition */ if (!(file_actions [i].flags & F_ALL)){ /* Items with F_SINGLE require that ONLY ONE marked files exist */ - if (file_actions [i].flags & F_SINGLE){ + if (panel && file_actions [i].flags & F_SINGLE){ if (panel->marked > 1) continue; } /* Items with F_NOTDIR requiere that the selection is not a directory */ - if (file_actions [i].flags & F_NOTDIR){ + if (panel && file_actions [i].flags & F_NOTDIR){ struct stat *s = &panel->dir.list [row].buf; if (panel->dir.list [row].f.link_to_dir) @@ -571,7 +593,7 @@ create_popup_submenu (WPanel *panel, int row, char *filename) } /* Items with F_REGULAR do not accept any strange file types */ - if (file_actions [i].flags & F_REGULAR){ + if (panel && file_actions [i].flags & F_REGULAR){ struct stat *s = &panel->dir.list [row].buf; if (S_ISLNK (panel->dir.list [row].f.link_to_dir)) @@ -582,7 +604,7 @@ create_popup_submenu (WPanel *panel, int row, char *filename) } /* Items with F_SYMLINK only operate on symbolic links */ - if (file_actions [i].flags & F_SYMLINK){ + if (panel && file_actions [i].flags & F_SYMLINK){ if (!S_ISLNK (panel->dir.list [row].buf.st_mode)) continue; } @@ -595,7 +617,7 @@ create_popup_submenu (WPanel *panel, int row, char *filename) gtk_widget_show (item); if (file_actions [i].callback){ gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC(file_actions [i].callback), panel); + GTK_SIGNAL_FUNC(file_actions [i].callback), closure); } gtk_menu_append (GTK_MENU (menu), item); @@ -624,19 +646,45 @@ popup_activate_by_string (GtkMenuItem *item, WPanel *panel) } static void -file_popup_add_context (GtkMenu *menu, WPanel *panel, char *filename) +popup_activate_desktop_icon (GtkMenuItem *item, char *filename) +{ + char *action; + int movedir; + + action = GTK_LABEL (GTK_BIN (item)->child)->label; + + regex_command (filename, action, NULL, &movedir); +} + +static void +file_popup_add_context (GtkMenu *menu, WPanel *panel, desktop_icon_t *di, char *filename) { GtkWidget *item; char *p, *q; int c, i; - - for (i = 0; common_actions [i].text; i++){ + void *closure, *regex_closure; + common_menu_t *menu_p; + GtkSignalFunc regex_func; + + if (panel){ + menu_p = common_panel_actions; + closure = panel; + regex_func = GTK_SIGNAL_FUNC (popup_activate_by_string); + regex_closure = panel; + } else { + menu_p = common_dicon_actions; + closure = di; + regex_func = GTK_SIGNAL_FUNC (popup_activate_desktop_icon); + regex_closure = di->dentry->exec [0]; + } + + for (i = 0; menu_p [i].text; i++){ GtkWidget *item; - item = gtk_menu_item_new_with_label (_(common_actions [i].text)); + item = gtk_menu_item_new_with_label (_(menu_p [i].text)); gtk_widget_show (item); gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC (common_actions [i].callback), panel); + GTK_SIGNAL_FUNC (menu_p [i].callback), closure); gtk_menu_append (GTK_MENU (menu), item); } @@ -661,8 +709,8 @@ file_popup_add_context (GtkMenu *menu, WPanel *panel, char *filename) item = gtk_menu_item_new_with_label (p); gtk_widget_show (item); - gtk_signal_connect (GTK_OBJECT(item), "activate", - GTK_SIGNAL_FUNC(popup_activate_by_string), panel); + + gtk_signal_connect (GTK_OBJECT(item), "activate", regex_func, regex_closure); gtk_menu_append (menu, item); if (!c) break; @@ -670,23 +718,41 @@ file_popup_add_context (GtkMenu *menu, WPanel *panel, char *filename) } } -static void -file_popup (GdkEvent *event, WPanel *panel, int row, char *filename) +/* + * Create a context menu + * It can take either a WPanel or a GnomeDesktopEntry. One of them should + * be set to NULL. + */ +void +file_popup (GdkEventButton *event, void *WPanel_pointer, void *desktop_icon_t_pointer, int row, char *filename) { GtkWidget *menu = gtk_menu_new (); GtkWidget *submenu; GtkWidget *item; - - item = gtk_menu_item_new_with_label ( (panel->marked > 1)?"...":filename ); - gtk_widget_show (item); - gtk_menu_append (GTK_MENU (menu), item); + WPanel *panel = WPanel_pointer; + desktop_icon_t *di = desktop_icon_t_pointer; + char *str; + + g_return_if_fail (((panel != NULL) ^ (di != NULL))); - submenu = create_popup_submenu (panel, row, filename); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + if (panel) + str = (panel->marked > 1) ? "..." : filename; + else + str = filename; - file_popup_add_context (GTK_MENU (menu), panel, filename); + if (panel){ + item = gtk_menu_item_new_with_label (str); + gtk_widget_show (item); + gtk_menu_append (GTK_MENU (menu), item); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 3, event->button.time); + submenu = create_popup_submenu (panel, di, row, filename); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + } else + menu = create_popup_submenu (panel, di, row, filename); + + file_popup_add_context (GTK_MENU (menu), panel, di, filename); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 3, event->time); } static void @@ -728,7 +794,7 @@ panel_file_list_select_row (GtkWidget *file_list, int row, int column, GdkEvent break; case 3: - file_popup (event, panel, row, panel->dir.list[row].fname); + file_popup (&event->button, panel, NULL, row, panel->dir.list[row].fname); break; } @@ -1172,7 +1238,7 @@ panel_icon_list_select_icon (GtkWidget *widget, int index, GdkEvent *event, WPan switch (event->type){ case GDK_BUTTON_PRESS: if (event->button.button == 3){ - file_popup (event, panel, index, panel->dir.list [index].fname); + file_popup (&event->button, panel, NULL, index, panel->dir.list [index].fname); return; } break; @@ -1891,3 +1957,6 @@ x_panel_destroy (WPanel *panel) { gtk_widget_destroy (GTK_WIDGET (panel->xwindow)); } + + + diff --git a/gnome/gwidget.c b/gnome/gwidget.c index cb096311d..e2eb17857 100644 --- a/gnome/gwidget.c +++ b/gnome/gwidget.c @@ -269,13 +269,18 @@ x_create_input (Dlg_head *h, widget_data parent, WInput *in) */ if (in->widget.wdata) return 1; - + +#ifdef USE_GNOME_ENTRY gnome_entry = gnome_entry_new (in->widget.tkname); +#else + entry = GTK_ENTRY (gnome_entry = gtk_entry_new ()); +#endif gtk_widget_show (gnome_entry); in->widget.wdata = (widget_data) gnome_entry; +#ifdef USE_GNOME_ENTRY entry = GTK_ENTRY (gnome_entry_gtk_entry (GNOME_ENTRY (gnome_entry))); - +#endif gtk_entry_set_text (entry, in->buffer); gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1); gtk_entry_set_position (entry, in->point); @@ -300,8 +305,12 @@ x_update_input (WInput *in) if (!in->widget.wdata) return; +#ifdef USE_GNOME_ENTRY gnome_entry = GNOME_ENTRY (in->widget.wdata); entry = GTK_ENTRY (gnome_entry_gtk_entry (gnome_entry)); +#else + entry = GTK_ENTRY (in->widget.wdata); +#endif if (in->first == -1){ gtk_editable_select_region (GTK_EDITABLE (entry), 0, 0); @@ -321,7 +330,11 @@ x_update_input (WInput *in) } if (draw){ +#ifdef USE_GNOME_ENTRY gtk_widget_draw (GTK_WIDGET (gnome_entry), NULL); +#else + gtk_widget_draw (GTK_WIDGET (entry), NULL); +#endif gtk_entry_adjust_scroll (GTK_ENTRY (entry)); gtk_widget_queue_draw (GTK_WIDGET (entry)); } diff --git a/lib/mc.ext.in b/lib/mc.ext.in index 6271bbda0..eb38d09d2 100644 --- a/lib/mc.ext.in +++ b/lib/mc.ext.in @@ -484,7 +484,7 @@ type/executable Open=./%f View=%view Drop=%f %q - Execute in XTerm=xterm -e ./%f & + Execute in XTerm=xterm -e %f & View Required Libraries=%view{ascii} ldd %f Strip binary=strip %f Icon=application.xpm diff --git a/po/mc.pot b/po/mc.pot index f58b63b85..1d40ea29e 100644 --- a/po/mc.pot +++ b/po/mc.pot @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Date: 1998-05-20 14:56:59-0500\n" +"Date: 1998-05-22 13:19:54-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" @@ -66,7 +66,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:1316 src/ext.c:295 src/help.c:320 src/main.c:685 src/subshell.c:700 src/subshell.c:726 src/utilunix.c:377 src/utilunix.c:381 src/utilunix.c:447 +#: edit/editcmd.c:413 edit/editcmd.c:722 edit/editcmd.c:734 edit/editcmd.c:835 edit/editcmd.c:918 gnome/gdesktop.c:1331 src/ext.c:295 src/help.c:320 src/main.c:685 src/subshell.c:700 src/subshell.c:726 src/utilunix.c:377 src/utilunix.c:381 src/utilunix.c:447 msgid " Warning " msgstr "" @@ -312,11 +312,11 @@ msgstr "" msgid "Cancel quit" msgstr "" -#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:613 gnome/gdesktop.c:1173 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:701 src/subshell.c:727 src/tree.c:1195 src/view.c:410 +#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:613 gnome/gdesktop.c:1188 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:701 src/subshell.c:727 src/tree.c:1195 src/view.c:410 msgid "&Yes" msgstr "" -#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:613 gnome/gdesktop.c:1173 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:701 src/subshell.c:727 src/tree.c:1195 src/view.c:410 +#: edit/editcmd.c:1969 gnome/gcmd.c:94 gnome/gdesktop.c:613 gnome/gdesktop.c:1188 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:701 src/subshell.c:727 src/tree.c:1195 src/view.c:410 msgid "&No" msgstr "" @@ -786,7 +786,7 @@ msgstr "" msgid "Search" msgstr "" -#: edit/editwidget.c:999 gnome/gdesktop.c:612 gnome/gdesktop.c:1070 src/screen.c:2263 src/screen.c:2297 +#: edit/editwidget.c:999 gnome/gdesktop.c:612 gnome/gdesktop.c:1085 src/screen.c:2263 src/screen.c:2297 msgid "Delete" msgstr "" @@ -2610,7 +2610,7 @@ msgstr "" msgid " The shell is already running a command " msgstr "" -#: gnome/gcmd.c:92 gnome/gdesktop.c:1171 src/main.c:838 src/screen.c:2038 +#: gnome/gcmd.c:92 gnome/gdesktop.c:1186 src/main.c:838 src/screen.c:2038 msgid " The Midnight Commander " msgstr "" @@ -3213,7 +3213,7 @@ msgstr "" msgid " %s bytes in %d file%s" msgstr "" -#: gnome/gscreen.c:1492 src/screen.c:671 +#: gnome/gscreen.c:1570 src/screen.c:671 msgid "" msgstr "" @@ -3221,7 +3221,7 @@ msgstr "" msgid "Unknow tag on display format: " msgstr "" -#: gnome/gdesktop.c:1172 src/screen.c:2039 +#: gnome/gdesktop.c:1187 src/screen.c:2039 msgid " Do you really want to execute? " msgstr "" @@ -3738,19 +3738,22 @@ msgstr "" msgid "Do you want to delete " msgstr "" -#: gnome/gdesktop.c:1063 gnome/gscreen.c:512 +#. We connect_object_after to the items so that we can destroy +#. * the menu at the proper time. +#. +#: gnome/gdesktop.c:1078 gnome/gscreen.c:512 msgid "Properties" msgstr "" -#: gnome/gdesktop.c:1182 +#: gnome/gdesktop.c:1197 msgid "Open with..." msgstr "" -#: gnome/gdesktop.c:1183 gnome/gscreen.c:464 +#: gnome/gdesktop.c:1198 gnome/gscreen.c:464 msgid "Enter extra arguments:" msgstr "" -#: gnome/gdesktop.c:1316 +#: gnome/gdesktop.c:1331 msgid " Could not open %s directory" msgstr "" @@ -4122,83 +4125,83 @@ msgstr "" msgid "Rename/move.." msgstr "" -#: gnome/gscreen.c:1300 +#: gnome/gscreen.c:1378 msgid "All files" msgstr "" -#: gnome/gscreen.c:1302 +#: gnome/gscreen.c:1380 msgid "Archives and compressed files" msgstr "" -#: gnome/gscreen.c:1304 +#: gnome/gscreen.c:1382 msgid "RPM/DEB files" msgstr "" -#: gnome/gscreen.c:1306 +#: gnome/gscreen.c:1384 msgid "Text/Document files" msgstr "" -#: gnome/gscreen.c:1308 +#: gnome/gscreen.c:1386 msgid "HTML and SGML files" msgstr "" -#: gnome/gscreen.c:1310 +#: gnome/gscreen.c:1388 msgid "Postscript and PDF files" msgstr "" -#: gnome/gscreen.c:1312 +#: gnome/gscreen.c:1390 msgid "Spreadsheet files" msgstr "" -#: gnome/gscreen.c:1314 +#: gnome/gscreen.c:1392 msgid "Image files" msgstr "" -#: gnome/gscreen.c:1317 +#: gnome/gscreen.c:1395 msgid "Video/animation files" msgstr "" -#: gnome/gscreen.c:1319 +#: gnome/gscreen.c:1397 msgid "Audio files" msgstr "" -#: gnome/gscreen.c:1321 +#: gnome/gscreen.c:1399 msgid "C program files" msgstr "" -#: gnome/gscreen.c:1323 +#: gnome/gscreen.c:1401 msgid "C++ program files" msgstr "" -#: gnome/gscreen.c:1325 +#: gnome/gscreen.c:1403 msgid "Objective-C program files" msgstr "" -#: gnome/gscreen.c:1327 +#: gnome/gscreen.c:1405 msgid "Scheme program files" msgstr "" -#: gnome/gscreen.c:1329 +#: gnome/gscreen.c:1407 msgid "Assembler program files" msgstr "" -#: gnome/gscreen.c:1331 +#: gnome/gscreen.c:1409 msgid "Misc. program files" msgstr "" -#: gnome/gscreen.c:1333 +#: gnome/gscreen.c:1411 msgid "Font files" msgstr "" -#: gnome/gscreen.c:1458 +#: gnome/gscreen.c:1536 msgid "Search: " msgstr "" -#: gnome/gscreen.c:1468 +#: gnome/gscreen.c:1546 msgid " %s bytes in %d file%s" msgstr "" -#: gnome/gscreen.c:1543 +#: gnome/gscreen.c:1621 msgid "Filter" msgstr "" diff --git a/src/ChangeLog b/src/ChangeLog index b9f89ba99..3cf1b82cb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,124 @@ +1998-maj-18 Tamasi Gyorgy (gt_cosy@usa.net) + + * lib/mc.menu: 'Z' on 'tar.Z' and 'tar.z' files: '%f' -> '$1'. + + * lib/mc.ext.in.qnx.diff, lib/mc.menu.qnx.diff (QNX): modified + 'mc.ext.in' (tar -t: output to stderr); modified 'mc.menu' (tar is + not GNU tar: doesn't know '-z'); support for '*.tar.F': + 'freeze'-compressed tar files [No automatic configure/install + implemented: patches must be applied before running 'configure' + (mc.ext.in.qnx.diff: this patch can be not only QNX-specific...)] + + * lib/Makefile.in: 'mc.ext.in.qnx.diff' and 'mc.menu.qnx.diff' added + to DISTLIB. + + * slang/sldisply.c: + + SLTT_TRANSP_ACS_PATCH dependant code: + + The problem: some terminals (QNX/qansi*, SCO OS5/ansi [?]) map the + whole upper half of the ASCII table to the lower half, when + alt-char-set is activated with the smacs/as string-sequence. This + means, that if 0 <= ch < 128 written to the terminal, it will be + translated to (ch+128) automatically by the terminal: so not only + the line-drawing characters can be written, when the alt-char-set + is activated. It implicitly means, that space, NL, CR, etc. + characters (exactly: anything besides the "standard" line drawing + characters) can not be written directly to the terminal, when the + alt-char-set is activated, because writing these characters + doesn't cause an implicit/temporary switching-back to the standard + char-set! + + The original code in SLang assumes that space, NL, CR, etc. can be + printed when alt-char-set is activated. If SLTT_TRANSP_ACS_PATCH + is defined, the modified code will not use this assumption. + [Remark: the patch-code is not the most exact solution, but + works...] + + QNX_QANSI_SLANG_COMPAT_ACS_PATCH dependant code: + + A more OS/terminal-specific solution for the problem mentioned + above (->SLTT_TRANSP_ACS_PATCH). + + If QNX_QANSI_SLANG_COMPAT_ACS is defined, the default smacs/sa, + rmacs/ae, acsc/ac [and sgr/sa, if it would be used!] command + sequences will be replaced internally with the "old style" + (pre-QNX 4.23) sequences in case of QNX/qansi terminals. Using + these optional command sequences the terminal remains compatible + with the original SLang code (without using the workaround-code + enabled by defining SLTT_TRANSP_ACS_PATCH). + + Remark: + + Currently SLTT_TRANSP_ACS_PATCH is not auto-configured by + 'configure'. (Must be manually defined...) + + There is some (QNX-specific) auto-configuration hand-coded in the + source: + + #ifdef SLTT_TRANSP_ACS_PATCH + # if defined(__QNX__) && defined(QNX_QANSI_SLANG_COMPAT_ACS) + # undef SLTT_TRANSP_ACS_PATCH + # endif + #else + # if defined(__QNX__) && !defined(QNX_QANSI_SLANG_COMPAT_ACS) + # define QNX_QANSI_SLANG_COMPAT_ACS 1 + # endif + #endif + + * slang/slutty.c: "newtty.c_iflag &= ~(ECHO | INLCR | ICRNL);" + ECHO(0x08) is a c_lflag bit, it means PARMRK(0x08) in c_iflag. (!?!) + + * src/file.c: 'do_reget' can be extern if (USE_VFS && USE_NETCODE), + not if (USE_VFS). + + * src/find.c (search_content()): Variable 'i' "must be" 'int', not + 'char'. ["i == -1": (buggy?) WCC 10.6 doesn't convert automatically + (int)(-1) to (char)(-1) (GCC does), so "comparison result always 0" + warning produced. It is cleaner to define 'i' as 'int', than cast + '-1' to 'char', because 'read()' returns 'int'.] + + * src/key.c (init_key()): Call load_xtra_key_defines() and clear + 'use_8th_bit_as_meta' by default under QNX, if a 'qnx*' terminal + detected. (A saved config file (mc.ini) can override it later...) + + * src/key.h: Declare load_xtra_key_defines(). + + * src/keyxdef.c: Provides a method to define some platform-specific + additional key mappings. (e.g. QNX terminals can handle most of + META-? combinations as ALT-?...) ('keyxdef.c' currently not listed + in doc/FILES...) + + * src/layout.c: TIOCGWINSZ must be available (so (?) + included), because window-resizing code doesn't work, if not defined. + + * src/main.c: 'print_usage()' is reserved name in the QNX run-time + library, so 'print_usage()' renamed to 'print_mc_usage()' + + * src/mouse.c (QNX): ncurses 1.9.8a ported to QNX doesn't provide the + 'SP' pointer as a global symbol in the library, so the keyok() + emulation currently can not be used under QNX (4.24 & Watcom C 10.6 + release version). + + * src/slint.c (QNX): 'qansi*' terminals added to the color_terminals[] + list. + + * src/subshell.c, src/utilunix.c (QNX): include to get + prototype for exec*()!!! [See README.QNX/Section 1.4 about the + dangerous "No prototype for " warnings emitted by Watcom C, + if is a 'printf()'-style function having variable number + of arguments and you compile your source with the default register + calling convention!!!] + + * Makefile.in: 'keyxdef' module added to SRCS and OBJS. + + * /README.QNX: QNX-specific notes. + + * /configure (line 3369), /configure.in (line 88): + 'test x$CCOPTS = x;' modified to 'test "x$CCOPTS" = x;' + + * /Makefile.in: README.QNX added to DISTMAIN. + Thu May 21 00:09:45 1998 Norbert Warmuth * menu.c (menubar_event): Don't set menubar->selected to the diff --git a/vfs/ChangeLog b/vfs/ChangeLog index cb6304121..a78be3c82 100644 --- a/vfs/ChangeLog +++ b/vfs/ChangeLog @@ -1,3 +1,8 @@ +1998-maj-18 Tamasi Gyorgy (gt_cosy@usa.net) + + * Makefile.in ('install' target): 'mcserv' not installed, if + net-code is not enabled by 'configure'. + Thu May 14 02:05:52 1998 Norbert Warmuth * Makefile.in (LIBS): add @LINTL@