diff --git a/gnome/ChangeLog b/gnome/ChangeLog index b7e26a22a..7e3225b31 100644 --- a/gnome/ChangeLog +++ b/gnome/ChangeLog @@ -1,3 +1,20 @@ +1999-03-11 Federico Mena Quintero + + Fix bug #261: inconsistent labels in view menu and toolbar, + unsynchronized items. + + * glayout.c (panel_view_menu_uiinfo panel_view_toolbar_uiinfo): + Made the view names consistent with the toolbar names. Also, + added underscore accelerators to the menu items. + (copy_uiinfo_widgets): New function to copy the widgets from an + uiinfo array into a widget array. + (create_container): Copy the uiinfo widgets to the panel + structure. + + * gcmd.c (set_view_type): New function to set the list view type + and synchronize the menu and toolbar items. + (gnome_close_panel): Free the view menu/toolbar item arrays. + 1999-03-11 Federico Mena Quintero * gpopup2.c (perform_mount_unmount): Set the icon's cursor while it is diff --git a/gnome/gcmd.c b/gnome/gcmd.c index e921eaf41..76c2b2174 100644 --- a/gnome/gcmd.c +++ b/gnome/gcmd.c @@ -160,49 +160,91 @@ gnome_close_panel (GtkWidget *widget, WPanel *panel) layout_panel_gone (panel); + g_free (panel->view_menu_items); + g_free (panel->view_toolbar_items); + mc_chdir ("/"); } +static void +set_view_type (GtkWidget *widget, WPanel *panel, enum list_types type) +{ + int i; + + /* This is kind of a hack to see whether we need to do something or not. + * This function (or at least the callback that calls it) can refer to a + * radio menu item or a radio button, so we need to see if it is active. + */ + + if (GTK_OBJECT_TYPE (widget) == gtk_radio_menu_item_get_type ()) { + if (!GTK_CHECK_MENU_ITEM (widget)->active) + return; + } else if (GTK_OBJECT_TYPE (widget) == gtk_radio_button_get_type ()) { + if (!GTK_TOGGLE_BUTTON (widget)->active) + return; + } else + g_assert_not_reached (); + + /* Worth the effort? */ + + if (panel->list_type == type) + return; + + /* Set the list type */ + + panel->list_type = type; + set_panel_formats (panel); + paint_panel (panel); + do_refresh (); + + /* Synchronize the widgets */ + + for (i = 0; ; i++) + if (widget == panel->view_menu_items[i]) { + gtk_signal_handler_block_by_data ( + GTK_OBJECT (panel->view_toolbar_items[i]), panel); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (panel->view_toolbar_items[i]), TRUE); + gtk_signal_handler_unblock_by_data ( + GTK_OBJECT (panel->view_toolbar_items[i]), panel); + return; + } else if (widget == panel->view_toolbar_items[i]) { + gtk_signal_handler_block_by_data ( + GTK_OBJECT (panel->view_menu_items[i]), panel); + gtk_check_menu_item_set_active ( + GTK_CHECK_MENU_ITEM (panel->view_menu_items[i]), TRUE); + gtk_signal_handler_unblock_by_data ( + GTK_OBJECT (panel->view_menu_items[i]), panel); + return; + } + + g_assert_not_reached (); +} + void gnome_icon_view_cmd (GtkWidget *widget, WPanel *panel) { - if (panel->list_type == list_icons) - return; - panel->list_type = list_icons; - set_panel_formats (panel); - paint_panel (panel); - do_refresh (); + set_view_type (widget, panel, list_icons); } + void -gnome_partial_view_cmd (GtkWidget *widget, WPanel *panel) +gnome_brief_view_cmd (GtkWidget *widget, WPanel *panel) { - if (panel->list_type == list_brief) - return; - panel->list_type = list_brief; - set_panel_formats (panel); - paint_panel (panel); - do_refresh (); + set_view_type (widget, panel, list_brief); } + void -gnome_full_view_cmd (GtkWidget *widget, WPanel *panel) +gnome_detailed_view_cmd (GtkWidget *widget, WPanel *panel) { - if (panel->list_type == list_full) - return; - panel->list_type = list_full; - set_panel_formats (panel); - paint_panel (panel); - do_refresh (); + set_view_type (widget, panel, list_full); } + void gnome_custom_view_cmd (GtkWidget *widget, WPanel *panel) { - if (panel->list_type == list_user) - return; - panel->list_type = list_user; - set_panel_formats (panel); - paint_panel (panel); - do_refresh (); + set_view_type (widget, panel, list_user); } + static void sort_callback (GtkWidget *menu_item, GtkWidget *cbox1) { @@ -211,6 +253,7 @@ sort_callback (GtkWidget *menu_item, GtkWidget *cbox1) else gtk_widget_set_sensitive (cbox1, FALSE); } + void gnome_sort_cmd (GtkWidget *widget, WPanel *panel) { @@ -324,6 +367,7 @@ gnome_sort_cmd (GtkWidget *widget, WPanel *panel) } gtk_widget_destroy (sort_box); } + typedef struct ep_dlg_data { GtkWidget *ep_dlg; GtkWidget *clist; @@ -365,6 +409,7 @@ get_nickname (gchar *text) gtk_widget_destroy (dlg); return retval; } + static void ep_add_callback (GtkWidget *widget, ep_dlg_data *data) { @@ -382,6 +427,7 @@ ep_add_callback (GtkWidget *widget, ep_dlg_data *data) gtk_widget_set_sensitive (data->add_button, FALSE); gtk_entry_set_text (GTK_ENTRY (data->entry), ""); } + static void ep_remove_callback (GtkWidget *widget, ep_dlg_data *data) { @@ -419,6 +465,7 @@ ep_select_callback (GtkWidget *widget, gtk_widget_set_sensitive (data->add_button, FALSE); } } + static void ep_text_changed_callback (GtkWidget *widget, ep_dlg_data *data) { @@ -432,6 +479,7 @@ ep_text_changed_callback (GtkWidget *widget, ep_dlg_data *data) gtk_widget_set_sensitive (data->remove_button, FALSE); gtk_widget_set_sensitive (data->add_button, TRUE); } + static void load_settings (GtkCList *clist) { @@ -458,6 +506,7 @@ load_settings (GtkCList *clist) } } } + static void save_settings (GtkCList *clist) { @@ -474,6 +523,7 @@ save_settings (GtkCList *clist) } sync_profiles (); } + void gnome_external_panelize (GtkWidget *widget, WPanel *panel) { @@ -553,6 +603,7 @@ gnome_external_panelize (GtkWidget *widget, WPanel *panel) gtk_widget_destroy (GTK_WIDGET (data->ep_dlg)); g_free (data); } + void gnome_select_all_cmd (GtkWidget *widget, WPanel *panel) { @@ -566,6 +617,7 @@ gnome_select_all_cmd (GtkWidget *widget, WPanel *panel) paint_panel (panel); do_refresh (); } + void gnome_reverse_selection_cmd_panel (WPanel *panel) { diff --git a/gnome/gcmd.h b/gnome/gcmd.h index 9c4f37d52..b58324d0e 100644 --- a/gnome/gcmd.h +++ b/gnome/gcmd.h @@ -9,10 +9,12 @@ void gnome_about_cmd (void); void gnome_quit_cmd (void); void gnome_open_panel (GtkWidget *widget, WPanel *panel); void gnome_close_panel (GtkWidget *widget, WPanel *panel); + void gnome_icon_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_partial_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_full_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_brief_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_detailed_view_cmd (GtkWidget *widget, WPanel *panel); void gnome_custom_view_cmd (GtkWidget *widget, WPanel *panel); + void gnome_sort_cmd (GtkWidget *widget, WPanel *panel); void gnome_select_all_cmd (GtkWidget *widget, WPanel *panel); void gnome_filter_cmd (GtkWidget *widget, WPanel *panel); diff --git a/gnome/glayout.c b/gnome/glayout.c index 5a9fc1b47..7b2a386e6 100644 --- a/gnome/glayout.c +++ b/gnome/glayout.c @@ -26,11 +26,48 @@ #include "setup.h" #include "../vfs/vfs.h" #include "gprefs.h" - +#include "listing-iconic.xpm" +#include "listing-brief-list.xpm" +#include "listing-list.xpm" +#include "listing-custom.xpm" #define UNDEFINED_INDEX -1 +/* Keep these two arrays in sync! */ + +GnomeUIInfo panel_view_menu_uiinfo[] = { + GNOMEUIINFO_RADIOITEM (N_("_Icon View"), + N_("Switch view to an icon display"), + gnome_icon_view_cmd, NULL), + GNOMEUIINFO_RADIOITEM (N_("_Brief View"), + N_("Switch view to show just file name and type"), + gnome_brief_view_cmd, NULL), + GNOMEUIINFO_RADIOITEM (N_("_Detailed View"), + N_("Switch view to show detailed file statistics"), + gnome_detailed_view_cmd, NULL), + GNOMEUIINFO_RADIOITEM (N_("_Custom View"), + N_("Switch view to show user-defined statistics"), + gnome_custom_view_cmd, NULL), + GNOMEUIINFO_END +}; + +GnomeUIInfo panel_view_toolbar_uiinfo[] = { + GNOMEUIINFO_RADIOITEM (N_("Icons"), + N_("Switch view to an icon display"), + gnome_icon_view_cmd, listing_iconic_xpm), + GNOMEUIINFO_RADIOITEM (N_("Brief"), + N_("Switch view to show just file name and type"), + gnome_brief_view_cmd, listing_brief_list_xpm), + GNOMEUIINFO_RADIOITEM (N_("Detailed"), + N_("Switch view to show detailed file statistics"), + gnome_detailed_view_cmd, listing_list_xpm), + GNOMEUIINFO_RADIOITEM (N_("Custom"), + N_("Switch view to show user-defined statistics"), + gnome_custom_view_cmd, listing_custom_xpm), + GNOMEUIINFO_END +}; + GList *containers = 0; int output_lines = 0; @@ -317,7 +354,7 @@ GtkCheckMenuItem *gnome_toggle_snap (void); static GnomeUIInfo gnome_panel_new_menu [] = { GNOMEUIINFO_ITEM_NONE(N_("_Terminal"), N_("Launch a new terminal in the current directory"), gnome_open_terminal), /* If this ever changes, make sure you update create_new_menu accordingly. */ - GNOMEUIINFO_ITEM_NONE( N_("_Directory..."), N_("Creates a new directory"), gnome_mkdir_cmd ), + GNOMEUIINFO_ITEM_NONE(N_("_Directory..."), N_("Creates a new directory"), gnome_mkdir_cmd), GNOMEUIINFO_END }; @@ -336,8 +373,8 @@ GnomeUIInfo gnome_panel_file_menu [] = { /* etc... */ GNOMEUIINFO_MENU_NEW_SUBTREE(gnome_panel_new_menu), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_MENU_OPEN_ITEM( gnome_open_files, NULL), -/* GNOMEUIINFO_ITEM_NONE( N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd },*/ + GNOMEUIINFO_MENU_OPEN_ITEM(gnome_open_files, NULL), +/* GNOMEUIINFO_ITEM_NONE(N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd },*/ GNOMEUIINFO_ITEM_STOCK(N_("_Copy..."), N_("Copy files"), copy_cmd, GNOME_STOCK_PIXMAP_COPY), GNOMEUIINFO_ITEM_STOCK(N_("_Delete..."), N_("Delete files"), delete_cmd, GNOME_STOCK_PIXMAP_REMOVE), GNOMEUIINFO_ITEM_NONE(N_("_Move..."), N_("Rename or move files"), ren_cmd), @@ -351,28 +388,20 @@ GnomeUIInfo gnome_panel_file_menu [] = { GnomeUIInfo gnome_panel_edit_menu [] = { { GNOME_APP_UI_ITEM, N_("Select _All"), N_("Select all files in the current Panel"), gnome_select_all_cmd, NULL, NULL, 0, NULL, 'a', GDK_CONTROL_MASK }, - GNOMEUIINFO_ITEM_NONE( N_("_Select Files..."), N_("Select a group of files"), select_cmd ), - GNOMEUIINFO_ITEM_NONE( N_("_Invert Selection"), N_("Reverses the list of tagged files"), reverse_selection_cmd ), + GNOMEUIINFO_ITEM_NONE(N_("_Select Files..."), N_("Select a group of files"), select_cmd), + GNOMEUIINFO_ITEM_NONE(N_("_Invert Selection"), N_("Reverses the list of tagged files"), reverse_selection_cmd), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM_NONE( N_("_Rescan Directory"), N_("Rescan the directory contents"), reread_cmd ), + GNOMEUIINFO_ITEM_NONE(N_("_Rescan Directory"), N_("Rescan the directory contents"), reread_cmd), GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_MENU_PREFERENCES_ITEM(gnome_configure_box, NULL), GNOMEUIINFO_END }; -GnomeUIInfo gnome_panel_view_menu [] = { - GNOMEUIINFO_RADIOITEM(N_("Icon View"), NULL, gnome_icon_view_cmd,NULL), - GNOMEUIINFO_RADIOITEM(N_("Partial View"), NULL, gnome_partial_view_cmd,NULL), - GNOMEUIINFO_RADIOITEM(N_("Full View"), NULL, gnome_full_view_cmd,NULL), - GNOMEUIINFO_RADIOITEM(N_("Custom View"), NULL, gnome_custom_view_cmd,NULL), - GNOMEUIINFO_END -}; - GnomeUIInfo gnome_panel_layout_menu [] = { - GNOMEUIINFO_ITEM_NONE( N_("_Sort By..."), N_("Confirmation settings"), gnome_sort_cmd ), - GNOMEUIINFO_ITEM_NONE( N_("_Filter View..."), N_("Global option settings"), gnome_filter_cmd ), + GNOMEUIINFO_ITEM_NONE(N_("_Sort By..."), N_("Confirmation settings"), gnome_sort_cmd), + GNOMEUIINFO_ITEM_NONE(N_("_Filter View..."), N_("Global option settings"), gnome_filter_cmd), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_RADIOLIST( gnome_panel_view_menu), + GNOMEUIINFO_RADIOLIST(panel_view_menu_uiinfo), GNOMEUIINFO_END }; @@ -389,10 +418,10 @@ GnomeUIInfo gnome_panel_commands_menu [] = { #endif #ifdef USE_EXT2FSLIB /*does this do anything?*/ -/* GNOMEUIINFO_ITEM_NONE(N_("_Undelete files (ext2fs only)..."), N_("Recover deleted files"), undelete_cmd ),*/ +/* GNOMEUIINFO_ITEM_NONE(N_("_Undelete files (ext2fs only)..."), N_("Recover deleted files"), undelete_cmd),*/ #endif #ifdef WITH_BACKGROUND - GNOMEUIINFO_ITEM_NONE( N_("_Background jobs..."), N_("List of background operations"), jobs_cmd ), + GNOMEUIINFO_ITEM_NONE(N_("_Background jobs..."), N_("List of background operations"), jobs_cmd), #endif GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_ITEM_STOCK (N_("Exit"), N_("Terminates the file manager and the desktop"), @@ -403,7 +432,7 @@ GnomeUIInfo gnome_panel_commands_menu [] = { GnomeUIInfo gnome_panel_about_menu [] = { /* GNOMEUIINFO_HELP ("midnight-commander"), */ - GNOMEUIINFO_MENU_ABOUT_ITEM( gnome_about_cmd,NULL), + GNOMEUIINFO_MENU_ABOUT_ITEM(gnome_about_cmd, NULL), GNOMEUIINFO_END }; @@ -632,6 +661,37 @@ my_app_create_menus (GnomeApp *app, GnomeUIInfo *uiinfo, void *data) gnome_app_create_menus_custom (app, uiinfo, &uibdata); } +/** + * copy_uiinfo_widgets: + * @uiinfo: A GnomeUIInfo array + * @dest: The destination array will be placed here + * + * Allocates an array of widgets and copies the widgets from the uiinfo array to + * it. The array will be NULL-terminated. + **/ +void +copy_uiinfo_widgets (GnomeUIInfo *uiinfo, gpointer **dest) +{ + int n; + int i; + + g_return_if_fail (uiinfo != NULL); + g_return_if_fail (dest != NULL); + + /* Count number of items */ + + for (n = 0; uiinfo[n].type != GNOME_APP_UI_ENDOFINFO; n++); + + /* Copy the widgets */ + + *dest = g_new (gpointer, n + 1); + + for (i = 0; i < n; i++) + (*dest)[i] = uiinfo[i].widget; + + (*dest)[i] = NULL; +} + WPanel * create_container (Dlg_head *h, char *name, char *geometry) { @@ -667,8 +727,8 @@ create_container (Dlg_head *h, char *name, char *geometry) else uiinfo = gnome_panel_menu_with_desktop; - my_app_create_menus (GNOME_APP (app), uiinfo, panel); + copy_uiinfo_widgets (panel_view_menu_uiinfo, &panel->view_menu_items); create_new_menu (GNOME_APP (app), panel); diff --git a/gnome/gscreen.c b/gnome/gscreen.c index fdd3bc996..78095089a 100644 --- a/gnome/gscreen.c +++ b/gnome/gscreen.c @@ -44,10 +44,6 @@ int tree_panel_visible = -1; #include "dir-close.xpm" #include "link.xpm" #include "dev.xpm" -#include "listing-list.xpm" -#include "listing-iconic.xpm" -#include "listing-custom.xpm" -#include "listing-brief-list.xpm" /* This is used to initialize our pixmaps */ @@ -2325,54 +2321,6 @@ panel_up (GtkWidget *button, WPanel *panel) do_panel_cd (panel, "..", cd_exact); } -static void -do_switch_to_iconic (GtkWidget *widget, WPanel *panel) -{ - if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) - return; - if (panel->list_type == list_icons) - return; - panel->list_type = list_icons; - set_panel_formats (panel); - panel_update_contents (panel); -} - -static void -do_switch_to_brief_listing (GtkWidget *widget, WPanel *panel) -{ - if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) - return; - if (panel->list_type == list_brief) - return; - panel->list_type = list_brief; - set_panel_formats (panel); - panel_update_contents (panel); -} - -static void -do_switch_to_full_listing (GtkWidget *widget, WPanel *panel) -{ - if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) - return; - if (panel->list_type == list_full) - return; - panel->list_type = list_full; - set_panel_formats (panel); - panel_update_contents (panel); -} - -static void -do_switch_to_custom_listing (GtkWidget *widget, WPanel *panel) -{ - if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) - return; - if (panel->list_type == list_user) - return; - panel->list_type = list_user; - set_panel_formats (panel); - panel_update_contents (panel); -} - static void rescan_panel (GtkWidget *widget, gpointer data) { @@ -2385,20 +2333,6 @@ go_home (GtkWidget *widget, WPanel *panel) do_panel_cd (panel, "~", cd_exact); } -/* View mode radio buttons for toolbar */ - -static GnomeUIInfo viewbar[] = { - { GNOME_APP_UI_ITEM, N_("Icon"), N_("Switch view to an Icon view"), do_switch_to_iconic, NULL, NULL, \ - GNOME_APP_PIXMAP_DATA, listing_iconic_xpm, 0, (GdkModifierType) 0, NULL }, - { GNOME_APP_UI_ITEM, N_("Brief"), N_("Switch view to show just file name and type"), do_switch_to_brief_listing, NULL, NULL, \ - GNOME_APP_PIXMAP_DATA, listing_brief_list_xpm, 0, (GdkModifierType) 0, NULL }, - { GNOME_APP_UI_ITEM, N_("Detailed"), N_("Switch view to show detailed file statistics"), do_switch_to_full_listing, NULL, NULL, \ - GNOME_APP_PIXMAP_DATA, listing_list_xpm, 0, (GdkModifierType) 0, NULL }, - { GNOME_APP_UI_ITEM, N_("Custom"), N_("Switch view to show custom determined statistics."), do_switch_to_custom_listing, NULL, NULL, \ - GNOME_APP_PIXMAP_DATA, listing_custom_xpm, 0, (GdkModifierType) 0, NULL }, - GNOMEUIINFO_END -}; - /* The toolbar */ static GnomeUIInfo toolbar[] = { @@ -2415,9 +2349,10 @@ static GnomeUIInfo toolbar[] = { GNOMEUIINFO_ITEM_STOCK (N_("Home"), N_("Go to your home directory"), go_home, GNOME_STOCK_PIXMAP_HOME), GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_RADIOLIST(viewbar), + GNOMEUIINFO_RADIOLIST(panel_view_toolbar_uiinfo), GNOMEUIINFO_END }; + static void do_ui_signal_connect (GnomeUIInfo *uiinfo, gchar *signal_name, GnomeUIBuilderData *uibdata) @@ -2428,8 +2363,6 @@ do_ui_signal_connect (GnomeUIInfo *uiinfo, gchar *signal_name, uibdata->data : uiinfo->user_data); } - - static void tree_size_allocate (GtkWidget *widget, GtkAllocation *allocation, WPanel *panel) { @@ -2470,7 +2403,7 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) panel->notebook = gtk_notebook_new (); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (panel->notebook), FALSE); gtk_widget_show (panel->notebook); - + panel->icons = panel_create_icon_display (panel); gtk_widget_show (panel->icons); @@ -2490,7 +2423,7 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) gtk_widget_show (panel->icons); gtk_widget_show (panel->list); gtk_widget_show (panel->notebook); - + /* * Pane */ @@ -2498,7 +2431,7 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) gtk_paned_add1 (GTK_PANED (panel->pane), panel->tree_scrolled_window); gtk_signal_connect (GTK_OBJECT (panel->tree_scrolled_window), "size_allocate", GTK_SIGNAL_FUNC (tree_size_allocate), panel); - + /* * Filter */ @@ -2511,7 +2444,7 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) /* We do not want the focus by default (and the previos add_widget just gave it to us) */ h->current = h->current->prev; - + /* * We go through a lot of pain, wrestling with gnome_app* and gmc's @#$&*#$ internal structure and * make the #@$*&@#$ toolbars here... @@ -2531,17 +2464,30 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) GNOME_DOCK_ITEM_BEH_EXCLUSIVE, GNOME_DOCK_TOP, 2, 0, 0); - + copy_uiinfo_widgets (panel_view_toolbar_uiinfo, &panel->view_toolbar_items); + panel->back_b = toolbar[0].widget; panel->up_b = toolbar[1].widget; panel->fwd_b = toolbar[2].widget; panel_update_marks (panel); + + /* Set the list type by poking a toolbar item. Yes, this is hackish. + * We fall back to icon view if a certain listing type is not supported. + * Be sure to keep this in sync with the uiinfo arrays in glayout.c. + */ + if (panel->list_type == list_brief) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (viewbar[1].widget), TRUE); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (panel_view_toolbar_uiinfo[1].widget), TRUE); else if (panel->list_type == list_full) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (viewbar[2].widget), TRUE); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (panel_view_toolbar_uiinfo[2].widget), TRUE); else if (panel->list_type == list_user) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (viewbar[3].widget), TRUE); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (panel_view_toolbar_uiinfo[3].widget), TRUE); + else + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (panel_view_toolbar_uiinfo[0].widget), TRUE); status_line = gtk_hbox_new (FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (status_line), 3); @@ -2549,65 +2495,32 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) gtk_label_new (_("Location:")), FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (status_line), cwd, TRUE, TRUE, 0); - + dock = gnome_dock_item_new ("gmc-toolbar1", (GNOME_DOCK_ITEM_BEH_EXCLUSIVE | GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL)); gtk_container_add (GTK_CONTAINER(dock), status_line); gnome_dock_add_item (GNOME_DOCK(GNOME_APP (panel->xwindow)->dock), GNOME_DOCK_ITEM (dock), GNOME_DOCK_TOP, 1, 0, 0, FALSE); - + gtk_widget_show_all (dock); -#if 0 - status_line = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - panel->back_b, - "Go to the previous directory", NULL); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - panel->up_b, - "Go up a level in the directory heirarchy", NULL); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - panel->fwd_b, - "Go to the next directory", NULL); - gtk_toolbar_append_space (GTK_TOOLBAR (status_line)); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - button_switch_to_icon (panel), - "Icon view", NULL); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - button_switch_to_brief_listing (panel), - "Brief view", NULL); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - button_switch_to_full_listing (panel), - "Detailed view", NULL); - gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), - button_switch_to_custom_listing (panel), - "Custom view", NULL); - gnome_app_add_toolbar (GNOME_APP (panel->xwindow), - GTK_TOOLBAR (status_line), - "gmc-toolbar2", - GNOME_DOCK_ITEM_BEH_EXCLUSIVE, - GNOME_DOCK_TOP, - 2, 0, 0); - gtk_widget_show_all (status_line); -#endif panel->view_table = gtk_table_new (1, 1, 0); gtk_widget_show (panel->view_table); - /* * The status bar. */ ministatus_box = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME(ministatus_box), GTK_SHADOW_IN); - + panel->status = gtk_label_new (_("Show all files")); gtk_misc_set_alignment (GTK_MISC (panel->status), 0.0, 0.0); gtk_misc_set_padding (GTK_MISC (panel->status), 2, 0); - + gtk_box_pack_start (GTK_BOX (panel->ministatus), ministatus_box, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER(ministatus_box), panel->status); - + gtk_widget_show (ministatus_box); gtk_widget_show (panel->status); @@ -2628,10 +2541,6 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) gtk_paned_add2 (GTK_PANED (panel->pane), panel->view_table); -#if 0 - gtk_table_attach (GTK_TABLE (panel->table), status_line, 0, 1, 0, 1, - GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); -#endif /* * ministatus_box is a container created just to put the * panel->ministatus inside. diff --git a/gnome/gscreen.h b/gnome/gscreen.h index d6dad3a2e..94cfbeb86 100644 --- a/gnome/gscreen.h +++ b/gnome/gscreen.h @@ -2,8 +2,14 @@ #define __GSCREEN_H +/* GnomeUIInfo information for view types */ +extern GnomeUIInfo panel_view_menu_uiinfo[]; +extern GnomeUIInfo panel_view_toolbar_uiinfo[]; + WPanel *create_container (Dlg_head *h, char *str, char *geometry); +void copy_uiinfo_widgets (GnomeUIInfo *uiinfo, gpointer **dest); + typedef struct { int splitted; diff --git a/po/mc.pot b/po/mc.pot index 6cc57958b..fbe5932f1 100644 --- a/po/mc.pot +++ b/po/mc.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-03-11 14:23-0500\n" +"POT-Creation-Date: 1999-03-11 17:13-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -69,99 +69,99 @@ msgstr "" msgid "&No" msgstr "" -#: gnome/gcmd.c:225 +#: gnome/gcmd.c:268 msgid "Sort By" msgstr "" #. we define this up here so we can pass it in to our callback -#: gnome/gcmd.c:230 +#: gnome/gcmd.c:273 msgid "Ignore case sensitivity." msgstr "" -#: gnome/gcmd.c:238 src/chmod.c:150 src/screen.c:425 +#: gnome/gcmd.c:281 src/chmod.c:150 src/screen.c:425 msgid "Name" msgstr "" -#: gnome/gcmd.c:245 +#: gnome/gcmd.c:288 msgid "File Type" msgstr "" -#: gnome/gcmd.c:251 src/screen.c:426 src/screen.c:427 +#: gnome/gcmd.c:294 src/screen.c:426 src/screen.c:427 msgid "Size" msgstr "" -#: gnome/gcmd.c:257 +#: gnome/gcmd.c:300 msgid "Time Last Accessed" msgstr "" -#: gnome/gcmd.c:263 +#: gnome/gcmd.c:306 msgid "Time Last Modified" msgstr "" -#: gnome/gcmd.c:269 +#: gnome/gcmd.c:312 msgid "Time Last Changed" msgstr "" -#: gnome/gcmd.c:283 +#: gnome/gcmd.c:326 msgid "Reverse the order." msgstr "" -#: gnome/gcmd.c:345 +#: gnome/gcmd.c:389 msgid "Enter name." msgstr "" -#: gnome/gcmd.c:351 +#: gnome/gcmd.c:395 msgid "Enter label for command:" msgstr "" -#: gnome/gcmd.c:446 +#: gnome/gcmd.c:494 msgid "Find all core files" msgstr "" -#: gnome/gcmd.c:449 src/panelize.c:350 +#: gnome/gcmd.c:497 src/panelize.c:350 msgid "Find rejects after patching" msgstr "" -#: gnome/gcmd.c:491 +#: gnome/gcmd.c:541 msgid "Run Command" msgstr "" #. Frame 1 -#: gnome/gcmd.c:496 +#: gnome/gcmd.c:546 msgid "Preset Commands" msgstr "" -#: gnome/gcmd.c:513 +#: gnome/gcmd.c:563 msgid "Add" msgstr "" -#: gnome/gcmd.c:517 +#: gnome/gcmd.c:567 msgid "Remove" msgstr "" #. Frame 2 -#: gnome/gcmd.c:525 +#: gnome/gcmd.c:575 msgid "Run this Command" msgstr "" -#: gnome/gcmd.c:532 +#: gnome/gcmd.c:582 msgid "Command: " msgstr "" -#: gnome/gcmd.c:593 +#: gnome/gcmd.c:645 msgid "Set Filter" msgstr "" -#: gnome/gcmd.c:598 gnome/gcmd.c:639 gnome/gcmd.c:644 gnome/gcmd.c:648 -#: gnome/gscreen.c:2604 +#: gnome/gcmd.c:650 gnome/gcmd.c:691 gnome/gcmd.c:696 gnome/gcmd.c:700 +#: gnome/gscreen.c:2517 msgid "Show all files" msgstr "" -#: gnome/gcmd.c:605 +#: gnome/gcmd.c:657 msgid "." msgstr "" -#: gnome/gcmd.c:621 +#: gnome/gcmd.c:673 msgid "" "Enter a filter here for files in the panel view.\n" "\n" @@ -169,19 +169,19 @@ msgid "" "*.gif will show just gif images" msgstr "" -#: gnome/gcmd.c:623 +#: gnome/gcmd.c:675 msgid "Enter a Regular Expression to filter files in the panel view." msgstr "" -#: gnome/gcmd.c:680 gnome/gpopup.c:53 +#: gnome/gcmd.c:732 gnome/gpopup.c:53 msgid " Open with..." msgstr "" -#: gnome/gcmd.c:681 gnome/gpopup.c:54 +#: gnome/gcmd.c:733 gnome/gpopup.c:54 msgid "Enter extra arguments:" msgstr "" -#: gnome/gdesktop.c:420 gnome/gdesktop.c:2051 +#: gnome/gdesktop.c:420 gnome/gdesktop.c:2067 msgid "Warning" msgstr "" @@ -198,50 +198,50 @@ msgstr "" msgid "While running the eject command" msgstr "" -#: gnome/gdesktop.c:1135 gnome/gicon.c:154 gnome/gtools.c:52 +#: gnome/gdesktop.c:1131 gnome/gicon.c:154 gnome/gtools.c:52 msgid "Error" msgstr "" #. Create the link to the user's home directory so that he will have an icon -#: gnome/gdesktop.c:2047 +#: gnome/gdesktop.c:2063 msgid "Home directory" msgstr "" -#: gnome/gdesktop.c:2052 +#: gnome/gdesktop.c:2068 #, c-format msgid "Could not symlink %s to %s; will not have initial desktop icons." msgstr "" -#: gnome/gdesktop.c:2381 gnome/glayout.c:318 +#: gnome/gdesktop.c:2397 gnome/glayout.c:355 msgid "_Terminal" msgstr "" -#: gnome/gdesktop.c:2381 gnome/glayout.c:318 +#: gnome/gdesktop.c:2397 gnome/glayout.c:355 msgid "Launch a new terminal in the current directory" msgstr "" #. If this ever changes, make sure you update create_new_menu accordingly. -#: gnome/gdesktop.c:2383 gnome/glayout.c:320 +#: gnome/gdesktop.c:2399 gnome/glayout.c:357 msgid "_Directory..." msgstr "" -#: gnome/gdesktop.c:2383 gnome/glayout.c:320 +#: gnome/gdesktop.c:2399 gnome/glayout.c:357 msgid "Creates a new directory" msgstr "" -#: gnome/gdesktop.c:2391 gnome/glayout.c:411 +#: gnome/gdesktop.c:2407 gnome/glayout.c:440 msgid "Arrange Icons" msgstr "" -#: gnome/gdesktop.c:2392 +#: gnome/gdesktop.c:2408 msgid "Create New Window" msgstr "" -#: gnome/gdesktop.c:2394 +#: gnome/gdesktop.c:2410 msgid "Rescan Mountable Devices" msgstr "" -#: gnome/gdesktop.c:2395 gnome/glayout.c:414 +#: gnome/gdesktop.c:2411 gnome/glayout.c:443 msgid "Rescan Desktop" msgstr "" @@ -427,11 +427,59 @@ msgstr "" msgid "Default set of icons not found, please check your installation" msgstr "" -#: gnome/glayout.c:265 +#: gnome/glayout.c:40 +msgid "_Icon View" +msgstr "" + +#: gnome/glayout.c:41 gnome/glayout.c:57 +msgid "Switch view to an icon display" +msgstr "" + +#: gnome/glayout.c:43 +msgid "_Brief View" +msgstr "" + +#: gnome/glayout.c:44 gnome/glayout.c:60 +msgid "Switch view to show just file name and type" +msgstr "" + +#: gnome/glayout.c:46 +msgid "_Detailed View" +msgstr "" + +#: gnome/glayout.c:47 gnome/glayout.c:63 +msgid "Switch view to show detailed file statistics" +msgstr "" + +#: gnome/glayout.c:49 +msgid "_Custom View" +msgstr "" + +#: gnome/glayout.c:50 gnome/glayout.c:66 +msgid "Switch view to show user-defined statistics" +msgstr "" + +#: gnome/glayout.c:56 +msgid "Icons" +msgstr "" + +#: gnome/glayout.c:59 +msgid "Brief" +msgstr "" + +#: gnome/glayout.c:62 +msgid "Detailed" +msgstr "" + +#: gnome/glayout.c:65 +msgid "Custom" +msgstr "" + +#: gnome/glayout.c:302 msgid "Enter command to run" msgstr "" -#: gnome/glayout.c:278 +#: gnome/glayout.c:315 msgid "" "Notice that if you choose to terminate the file manager, you will\n" "also terminate the GNOME desktop handler.\n" @@ -439,7 +487,7 @@ msgid "" "Are you sure you want to quit?" msgstr "" -#: gnome/glayout.c:290 +#: gnome/glayout.c:327 msgid "" "The file manager and the desktop handler are now terminating\n" "\n" @@ -449,165 +497,149 @@ msgid "" "Press OK to terminate the application, or cancel to continue using it." msgstr "" -#. GNOMEUIINFO_ITEM_NONE( N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd }, -#: gnome/glayout.c:341 +#. GNOMEUIINFO_ITEM_NONE(N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd }, +#: gnome/glayout.c:378 msgid "_Copy..." msgstr "" -#: gnome/glayout.c:341 +#: gnome/glayout.c:378 msgid "Copy files" msgstr "" -#: gnome/glayout.c:342 +#: gnome/glayout.c:379 msgid "_Delete..." msgstr "" -#: gnome/glayout.c:342 +#: gnome/glayout.c:379 msgid "Delete files" msgstr "" -#: gnome/glayout.c:343 +#: gnome/glayout.c:380 msgid "_Move..." msgstr "" -#: gnome/glayout.c:343 +#: gnome/glayout.c:380 msgid "Rename or move files" msgstr "" -#: gnome/glayout.c:345 +#: gnome/glayout.c:382 msgid "Show directory sizes" msgstr "" -#: gnome/glayout.c:345 +#: gnome/glayout.c:382 msgid "Shows the disk space used by each directory" msgstr "" -#: gnome/glayout.c:352 +#: gnome/glayout.c:389 msgid "Select _All" msgstr "" -#: gnome/glayout.c:352 +#: gnome/glayout.c:389 msgid "Select all files in the current Panel" msgstr "" -#: gnome/glayout.c:354 +#: gnome/glayout.c:391 msgid "_Select Files..." msgstr "" -#: gnome/glayout.c:354 +#: gnome/glayout.c:391 msgid "Select a group of files" msgstr "" -#: gnome/glayout.c:355 +#: gnome/glayout.c:392 msgid "_Invert Selection" msgstr "" -#: gnome/glayout.c:355 +#: gnome/glayout.c:392 msgid "Reverses the list of tagged files" msgstr "" -#: gnome/glayout.c:357 +#: gnome/glayout.c:394 msgid "_Rescan Directory" msgstr "" -#: gnome/glayout.c:357 +#: gnome/glayout.c:394 msgid "Rescan the directory contents" msgstr "" -#: gnome/glayout.c:364 -msgid "Icon View" -msgstr "" - -#: gnome/glayout.c:365 -msgid "Partial View" -msgstr "" - -#: gnome/glayout.c:366 -msgid "Full View" -msgstr "" - -#: gnome/glayout.c:367 -msgid "Custom View" -msgstr "" - -#: gnome/glayout.c:372 +#: gnome/glayout.c:401 msgid "_Sort By..." msgstr "" -#: gnome/glayout.c:372 +#: gnome/glayout.c:401 msgid "Confirmation settings" msgstr "" -#: gnome/glayout.c:373 +#: gnome/glayout.c:402 msgid "_Filter View..." msgstr "" -#: gnome/glayout.c:373 +#: gnome/glayout.c:402 msgid "Global option settings" msgstr "" -#: gnome/glayout.c:380 +#: gnome/glayout.c:409 msgid "_Find File..." msgstr "" -#: gnome/glayout.c:380 +#: gnome/glayout.c:409 msgid "Locate files on disk" msgstr "" #. { GNOME_APP_UI_ITEM, N_("_Compare panels..."), N_("Compare two panel contents"), gnome_compare_panels }, -#: gnome/glayout.c:383 +#: gnome/glayout.c:412 msgid "_Run Command..." msgstr "" -#: gnome/glayout.c:383 +#: gnome/glayout.c:412 msgid "Runs a command" msgstr "" -#: gnome/glayout.c:385 +#: gnome/glayout.c:414 msgid "_Run Command in panel..." msgstr "" -#: gnome/glayout.c:385 +#: gnome/glayout.c:414 msgid "Run a command and put the results in a panel" msgstr "" -#: gnome/glayout.c:395 +#: gnome/glayout.c:424 msgid "_Background jobs..." msgstr "" -#: gnome/glayout.c:395 +#: gnome/glayout.c:424 msgid "List of background operations" msgstr "" -#: gnome/glayout.c:398 +#: gnome/glayout.c:427 msgid "Exit" msgstr "" -#: gnome/glayout.c:398 +#: gnome/glayout.c:427 msgid "Terminates the file manager and the desktop" msgstr "" -#: gnome/glayout.c:413 +#: gnome/glayout.c:442 msgid "Rescan System Devices" msgstr "" -#: gnome/glayout.c:421 gnome/glayout.c:431 +#: gnome/glayout.c:450 gnome/glayout.c:460 msgid "_Layout" msgstr "" -#: gnome/glayout.c:422 gnome/glayout.c:432 +#: gnome/glayout.c:451 gnome/glayout.c:461 msgid "_Commands" msgstr "" -#: gnome/glayout.c:423 +#: gnome/glayout.c:452 msgid "_Desktop" msgstr "" -#: gnome/glayout.c:424 gnome/glayout.c:433 +#: gnome/glayout.c:453 gnome/glayout.c:462 msgid "_Help" msgstr "" -#: gnome/glayout.c:571 +#: gnome/glayout.c:600 msgid "File/New/Directory..." msgstr "" @@ -845,7 +877,7 @@ msgstr "" msgid "Title" msgstr "" -#: gnome/gprop.c:521 gnome/gscreen.c:2391 +#: gnome/gprop.c:521 msgid "Icon" msgstr "" @@ -853,182 +885,154 @@ msgstr "" msgid "Select icon" msgstr "" -#: gnome/gscreen.c:1473 +#: gnome/gscreen.c:1469 msgid "Rescan Directory" msgstr "" -#: gnome/gscreen.c:1473 +#: gnome/gscreen.c:1469 msgid "Reloads the current directory" msgstr "" -#: gnome/gscreen.c:1475 +#: gnome/gscreen.c:1471 msgid "New folder" msgstr "" -#: gnome/gscreen.c:1475 +#: gnome/gscreen.c:1471 msgid "Creates a new folder here" msgstr "" -#: gnome/gscreen.c:1653 +#: gnome/gscreen.c:1649 msgid "All files" msgstr "" -#: gnome/gscreen.c:1655 +#: gnome/gscreen.c:1651 msgid "Archives and compressed files" msgstr "" -#: gnome/gscreen.c:1657 +#: gnome/gscreen.c:1653 msgid "RPM/DEB files" msgstr "" -#: gnome/gscreen.c:1659 +#: gnome/gscreen.c:1655 msgid "Text/Document files" msgstr "" -#: gnome/gscreen.c:1661 +#: gnome/gscreen.c:1657 msgid "HTML and SGML files" msgstr "" -#: gnome/gscreen.c:1663 +#: gnome/gscreen.c:1659 msgid "Postscript and PDF files" msgstr "" -#: gnome/gscreen.c:1665 +#: gnome/gscreen.c:1661 msgid "Spreadsheet files" msgstr "" -#: gnome/gscreen.c:1667 +#: gnome/gscreen.c:1663 msgid "Image files" msgstr "" -#: gnome/gscreen.c:1670 +#: gnome/gscreen.c:1666 msgid "Video/animation files" msgstr "" -#: gnome/gscreen.c:1672 +#: gnome/gscreen.c:1668 msgid "Audio files" msgstr "" -#: gnome/gscreen.c:1674 +#: gnome/gscreen.c:1670 msgid "C program files" msgstr "" -#: gnome/gscreen.c:1676 +#: gnome/gscreen.c:1672 msgid "C++ program files" msgstr "" -#: gnome/gscreen.c:1678 +#: gnome/gscreen.c:1674 msgid "Objective-C program files" msgstr "" -#: gnome/gscreen.c:1680 +#: gnome/gscreen.c:1676 msgid "Scheme program files" msgstr "" -#: gnome/gscreen.c:1682 +#: gnome/gscreen.c:1678 msgid "Assembler program files" msgstr "" -#: gnome/gscreen.c:1684 +#: gnome/gscreen.c:1680 msgid "Misc. program files" msgstr "" -#: gnome/gscreen.c:1686 +#: gnome/gscreen.c:1682 msgid "Font files" msgstr "" -#: gnome/gscreen.c:1813 +#: gnome/gscreen.c:1809 #, c-format msgid "Search: %s" msgstr "" -#: gnome/gscreen.c:1823 +#: gnome/gscreen.c:1819 #, c-format msgid "%s bytes in %d file" msgstr "" -#: gnome/gscreen.c:1823 +#: gnome/gscreen.c:1819 #, c-format msgid "%s bytes in %d files" msgstr "" -#: gnome/gscreen.c:1849 src/screen.c:677 +#: gnome/gscreen.c:1845 src/screen.c:677 msgid "" msgstr "" -#: gnome/gscreen.c:1903 +#: gnome/gscreen.c:1899 msgid "Filter" msgstr "" -#: gnome/gscreen.c:2391 -msgid "Switch view to an Icon view" -msgstr "" - -#: gnome/gscreen.c:2393 -msgid "Brief" -msgstr "" - -#: gnome/gscreen.c:2393 -msgid "Switch view to show just file name and type" -msgstr "" - -#: gnome/gscreen.c:2395 -msgid "Detailed" -msgstr "" - -#: gnome/gscreen.c:2395 -msgid "Switch view to show detailed file statistics" -msgstr "" - -#: gnome/gscreen.c:2397 -msgid "Custom" -msgstr "" - -#: gnome/gscreen.c:2397 -msgid "Switch view to show custom determined statistics." -msgstr "" - -#: gnome/gscreen.c:2405 +#: gnome/gscreen.c:2339 msgid "Back" msgstr "" -#: gnome/gscreen.c:2405 +#: gnome/gscreen.c:2339 msgid "Go to the previously visited directory" msgstr "" -#: gnome/gscreen.c:2407 +#: gnome/gscreen.c:2341 msgid "Up" msgstr "" -#: gnome/gscreen.c:2407 +#: gnome/gscreen.c:2341 msgid "Go up a level in the directory heirarchy" msgstr "" -#: gnome/gscreen.c:2409 +#: gnome/gscreen.c:2343 msgid "Forward" msgstr "" -#: gnome/gscreen.c:2409 +#: gnome/gscreen.c:2343 msgid "Go to the next directory" msgstr "" -#: gnome/gscreen.c:2412 src/tree.c:1020 +#: gnome/gscreen.c:2346 src/tree.c:1020 msgid "Rescan" msgstr "" -#: gnome/gscreen.c:2412 +#: gnome/gscreen.c:2346 msgid "Rescan the current directory" msgstr "" -#: gnome/gscreen.c:2415 +#: gnome/gscreen.c:2349 msgid "Home" msgstr "" -#: gnome/gscreen.c:2415 +#: gnome/gscreen.c:2349 msgid "Go to your home directory" msgstr "" -#: gnome/gscreen.c:2549 +#: gnome/gscreen.c:2495 msgid "Location:" msgstr "" diff --git a/src/panel.h b/src/panel.h index a8b559097..085c67830 100644 --- a/src/panel.h +++ b/src/panel.h @@ -151,6 +151,10 @@ typedef struct { int maybe_start_drag; int click_x, click_y; + /* View menu and toolbar items */ + void **view_menu_items; + void **view_toolbar_items; + int dragging; /* Used for scrolling nicely during drags */