mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 10:04:32 +03:00
well, it does 'open' and 'properties' on the desktop icons, SLIGHTLY.
gmc is a big piece of junk.
This commit is contained in:
parent
a1d41bb385
commit
913f34276e
@ -48,19 +48,6 @@
|
|||||||
#define DESKTOP_DIR_NAME "desktop"
|
#define DESKTOP_DIR_NAME "desktop"
|
||||||
|
|
||||||
|
|
||||||
/* This structure defines the information carried by a desktop icon */
|
|
||||||
struct desktop_icon_info {
|
|
||||||
GtkWidget *dicon; /* The desktop icon widget */
|
|
||||||
int x, y; /* Position in the desktop */
|
|
||||||
int slot; /* Index of the slot the icon is in, or -1 for none */
|
|
||||||
char *filename; /* The file this icon refers to (relative to the desktop_directory) */
|
|
||||||
int selected : 1; /* Is the icon selected? */
|
|
||||||
int tmp_selected : 1; /* Temp storage for original selection while rubberbanding */
|
|
||||||
int finishing_selection : 1; /* Flag set while we are releasing
|
|
||||||
* button after selecting in the text
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
|
|
||||||
struct layout_slot {
|
struct layout_slot {
|
||||||
int num_icons; /* Number of icons in this slot */
|
int num_icons; /* Number of icons in this slot */
|
||||||
GList *icons; /* The list of icons in this slot */
|
GList *icons; /* The list of icons in this slot */
|
||||||
@ -696,7 +683,7 @@ do_popup_menu (struct desktop_icon_info *dii, GdkEventButton *event)
|
|||||||
|
|
||||||
filename = g_concat_dir_and_file (desktop_directory, dii->filename);
|
filename = g_concat_dir_and_file (desktop_directory, dii->filename);
|
||||||
|
|
||||||
if (gpopup_do_popup (event, NULL, 0, filename) != -1)
|
if (gpopup_do_popup (event, NULL, dii, 0, filename) != -1)
|
||||||
reload_desktop_icons (FALSE, 0, 0); /* bleah */
|
reload_desktop_icons (FALSE, 0, 0); /* bleah */
|
||||||
|
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
|
@ -32,7 +32,18 @@ void desktop_init (void);
|
|||||||
/* Shuts the desktop down by destroying the desktop icons. */
|
/* Shuts the desktop down by destroying the desktop icons. */
|
||||||
void desktop_destroy (void);
|
void desktop_destroy (void);
|
||||||
|
|
||||||
|
/* This structure defines the information carried by a desktop icon */
|
||||||
|
typedef struct desktop_icon_info {
|
||||||
|
GtkWidget *dicon; /* The desktop icon widget */
|
||||||
|
int x, y; /* Position in the desktop */
|
||||||
|
int slot; /* Index of the slot the icon is in, or -1 for none */
|
||||||
|
char *filename; /* The file this icon refers to (relative to the desktop_directory) */
|
||||||
|
int selected : 1; /* Is the icon selected? */
|
||||||
|
int tmp_selected : 1; /* Temp storage for original selection while rubberbanding */
|
||||||
|
int finishing_selection : 1; /* Flag set while we are releasing
|
||||||
|
* button after selecting in the text
|
||||||
|
*/
|
||||||
|
} desktop_icon_info;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "../vfs/vfs.h"
|
#include "../vfs/vfs.h"
|
||||||
|
#include "gdesktop.h"
|
||||||
|
#include "gdesktop-icon.h"
|
||||||
#include "gpageprop.h"
|
#include "gpageprop.h"
|
||||||
|
|
||||||
static int prop_dialog_result;
|
static int prop_dialog_result;
|
||||||
@ -46,7 +48,7 @@ kill_toplevel ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
item_properties (GtkWidget *parent, char *fname, desktop_icon_t *di)
|
item_properties (GtkWidget *parent, char *fname, desktop_icon_info *di)
|
||||||
{
|
{
|
||||||
GtkWidget *parent_window;
|
GtkWidget *parent_window;
|
||||||
GdkCursor *cursor;
|
GdkCursor *cursor;
|
||||||
@ -55,14 +57,12 @@ item_properties (GtkWidget *parent, char *fname, desktop_icon_t *di)
|
|||||||
GpropFilename *name;
|
GpropFilename *name;
|
||||||
GpropPerm *perm;
|
GpropPerm *perm;
|
||||||
GpropGeneral *gene;
|
GpropGeneral *gene;
|
||||||
GpropExec *exec;
|
|
||||||
GtkDialog *toplevel;
|
GtkDialog *toplevel;
|
||||||
|
|
||||||
umode_t new_mode;
|
umode_t new_mode;
|
||||||
char *new_group;
|
char *new_group;
|
||||||
char *new_owner;
|
char *new_owner;
|
||||||
char *new_title;
|
char *new_title;
|
||||||
char *new_icon;
|
|
||||||
char *new_name;
|
char *new_name;
|
||||||
char *base;
|
char *base;
|
||||||
|
|
||||||
@ -87,17 +87,13 @@ item_properties (GtkWidget *parent, char *fname, desktop_icon_t *di)
|
|||||||
|
|
||||||
vbox = gtk_vbox_new (FALSE, 6);
|
vbox = gtk_vbox_new (FALSE, 6);
|
||||||
|
|
||||||
if (di && di->dentry) {
|
name = gprop_filename_new (fname, base);
|
||||||
gene = gprop_general_new (di->dentry->name, di->dentry->icon);
|
gtk_box_pack_start (GTK_BOX (vbox), name->top, FALSE, FALSE, 0);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), gene->top, FALSE, FALSE, 0);
|
if(di) {
|
||||||
|
gene = gprop_general_new(fname, base);
|
||||||
exec = gprop_exec_new (di->dentry);
|
gtk_box_pack_start (GTK_BOX (vbox), gene->top, FALSE, FALSE, 0);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), exec->top, FALSE, FALSE, 0);
|
|
||||||
} else {
|
|
||||||
name = gprop_filename_new (fname, base);
|
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), name->top, FALSE, FALSE, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
perm = gprop_perm_new (s.st_mode, get_owner (s.st_uid), get_group (s.st_gid));
|
perm = gprop_perm_new (s.st_mode, get_owner (s.st_uid), get_group (s.st_gid));
|
||||||
|
|
||||||
/* Pack them into nice notebook */
|
/* Pack them into nice notebook */
|
||||||
@ -192,57 +188,43 @@ item_properties (GtkWidget *parent, char *fname, desktop_icon_t *di)
|
|||||||
|
|
||||||
/* Check and change filename */
|
/* Check and change filename */
|
||||||
|
|
||||||
if (di && di->dentry){
|
gprop_filename_get_data (name, &new_name);
|
||||||
gprop_exec_get_data (exec, di->dentry);
|
|
||||||
} else {
|
|
||||||
gprop_filename_get_data (name, &new_name);
|
|
||||||
|
|
||||||
if (strchr (new_name, '/'))
|
if (strchr (new_name, '/'))
|
||||||
message (1, "Error", "The new name includes the `/' character");
|
message (1, "Error", "The new name includes the `/' character");
|
||||||
else if (strcmp (new_name, base) != 0) {
|
else if (strcmp (new_name, base) != 0) {
|
||||||
char *base = x_basename (fname);
|
char *base = x_basename (fname);
|
||||||
char save = *base;
|
char save = *base;
|
||||||
char *full_target;
|
char *full_target;
|
||||||
long count = 0;
|
long count = 0;
|
||||||
double bytes = 0;
|
double bytes = 0;
|
||||||
|
|
||||||
*base = 0;
|
*base = 0;
|
||||||
full_target = concat_dir_and_file (fname, new_name);
|
full_target = concat_dir_and_file (fname, new_name);
|
||||||
*base = save;
|
*base = save;
|
||||||
|
|
||||||
create_op_win (OP_MOVE, 0);
|
create_op_win (OP_MOVE, 0);
|
||||||
file_mask_defaults ();
|
file_mask_defaults ();
|
||||||
move_file_file (fname, full_target, &count, &bytes);
|
move_file_file (fname, full_target, &count, &bytes);
|
||||||
destroy_op_win ();
|
destroy_op_win ();
|
||||||
|
|
||||||
if (di) {
|
if (di) {
|
||||||
free (di->pathname);
|
free (di->filename);
|
||||||
di->pathname = full_target;
|
di->filename = full_target;
|
||||||
} else
|
} else
|
||||||
free (full_target);
|
free (full_target);
|
||||||
|
|
||||||
retval |= GPROP_FILENAME;
|
retval |= GPROP_FILENAME;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check and change title and icon -- change is handled by caller */
|
/* Check and change title and icon -- change is handled by caller */
|
||||||
|
|
||||||
if (di && di->dentry) {
|
if (di) {
|
||||||
gprop_general_get_data (gene, &new_title, &new_icon);
|
gprop_general_get_data (gene, &new_title, NULL);
|
||||||
|
desktop_icon_set_text(DESKTOP_ICON(di->dicon), new_title);
|
||||||
|
g_free(new_title);
|
||||||
|
|
||||||
if (strcmp (new_title, di->dentry->name) != 0) {
|
retval |= GPROP_TITLE;
|
||||||
g_free (di->dentry->name);
|
|
||||||
|
|
||||||
di->dentry->name = new_title;
|
|
||||||
retval |= GPROP_TITLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (new_icon, di->dentry->icon) != 0) {
|
|
||||||
g_free (di->dentry->icon);
|
|
||||||
|
|
||||||
di->dentry->icon = new_icon;
|
|
||||||
retval |= GPROP_ICON;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_destroy (GTK_WIDGET (toplevel));
|
gtk_widget_destroy (GTK_WIDGET (toplevel));
|
||||||
|
@ -28,7 +28,7 @@ typedef enum {
|
|||||||
/* Returns a mask of the above specifying what changed.
|
/* Returns a mask of the above specifying what changed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int item_properties (GtkWidget *parent, char *fname, desktop_icon_t *di);
|
int item_properties (GtkWidget *parent, char *fname, desktop_icon_info *di);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -79,6 +79,44 @@ panel_action_edit (GtkWidget *widget, WPanel *panel)
|
|||||||
edit_cmd (panel);
|
edit_cmd (panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
desktop_icon_view(GtkWidget *widget, desktop_icon_info *dii)
|
||||||
|
{
|
||||||
|
g_warning("NYI");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pops up the icon properties pages */
|
||||||
|
void
|
||||||
|
desktop_icon_properties (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
path = g_copy_strings(getenv("HOME"), "/desktop/", dii->filename, NULL);
|
||||||
|
retval = item_properties (dii->dicon, path, dii);
|
||||||
|
g_free(path);
|
||||||
|
if(retval)
|
||||||
|
reread_cmd(); /* Lame. Slow. Works. */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
desktop_icon_execute (GtkWidget *ignored, desktop_icon_info *dii)
|
||||||
|
{
|
||||||
|
char *path;
|
||||||
|
/* Ultra lame-o execute. This should be replaced by the fixed regexp_command
|
||||||
|
* invocation
|
||||||
|
*/
|
||||||
|
|
||||||
|
path = g_copy_strings(getenv("HOME"), "/desktop/", dii->filename, NULL);
|
||||||
|
|
||||||
|
if (g_file_test(path, G_FILE_TEST_ISDIR))
|
||||||
|
new_panel_at (path);
|
||||||
|
else
|
||||||
|
gnome_desktop_entry_launch (path);
|
||||||
|
|
||||||
|
g_free(path);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
panel_action_properties (GtkWidget *widget, WPanel *panel)
|
panel_action_properties (GtkWidget *widget, WPanel *panel)
|
||||||
{
|
{
|
||||||
@ -92,19 +130,19 @@ panel_action_properties (GtkWidget *widget, WPanel *panel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dicon_move (GtkWidget *widget, char *filename)
|
dicon_move (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
g_warning ("Implement this function!");
|
g_warning ("Implement this function!");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dicon_copy (GtkWidget *widget, char *filename)
|
dicon_copy (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
g_warning ("Implement this function!");
|
g_warning ("Implement this function!");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dicon_delete (GtkWidget *widget, char *filename)
|
dicon_delete (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
g_warning ("Implement this function!");
|
g_warning ("Implement this function!");
|
||||||
}
|
}
|
||||||
@ -177,14 +215,10 @@ fill_menu (GtkMenuShell *menu_shell, GnomeUIInfo *uiinfo, int pos)
|
|||||||
*/
|
*/
|
||||||
static struct action file_actions[] = {
|
static struct action file_actions[] = {
|
||||||
{ N_("Properties"), F_SINGLE | F_PANEL, (GtkSignalFunc) panel_action_properties },
|
{ N_("Properties"), F_SINGLE | F_PANEL, (GtkSignalFunc) panel_action_properties },
|
||||||
#if 0
|
|
||||||
{ N_("Properties"), F_SINGLE | F_DICON, (GtkSignalFunc) desktop_icon_properties },
|
{ N_("Properties"), F_SINGLE | F_DICON, (GtkSignalFunc) desktop_icon_properties },
|
||||||
#endif
|
|
||||||
{ "", F_SINGLE, NULL },
|
{ "", F_SINGLE, NULL },
|
||||||
{ N_("Open"), F_PANEL | F_ALL, (GtkSignalFunc) panel_action_open },
|
{ N_("Open"), F_PANEL | F_ALL, (GtkSignalFunc) panel_action_open },
|
||||||
#if 0
|
|
||||||
{ N_("Open"), F_DICON | F_ALL, (GtkSignalFunc) desktop_icon_execute },
|
{ N_("Open"), F_DICON | F_ALL, (GtkSignalFunc) desktop_icon_execute },
|
||||||
#endif
|
|
||||||
{ N_("Open with"), F_PANEL | F_ALL, (GtkSignalFunc) panel_action_open_with },
|
{ N_("Open with"), F_PANEL | F_ALL, (GtkSignalFunc) panel_action_open_with },
|
||||||
{ N_("View"), F_PANEL | F_NOTDIR, (GtkSignalFunc) panel_action_view },
|
{ N_("View"), F_PANEL | F_NOTDIR, (GtkSignalFunc) panel_action_view },
|
||||||
{ N_("View unfiltered"), F_PANEL | F_NOTDIR, (GtkSignalFunc) panel_action_view_unfiltered },
|
{ N_("View unfiltered"), F_PANEL | F_NOTDIR, (GtkSignalFunc) panel_action_view_unfiltered },
|
||||||
@ -221,7 +255,9 @@ static GnomeUIInfo desktop_icon_actions[] = {
|
|||||||
* items should be inserted.
|
* items should be inserted.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
create_actions (GtkWidget *menu, WPanel *panel, int panel_row, char *filename)
|
create_actions (GtkWidget *menu, WPanel *panel,
|
||||||
|
desktop_icon_info *dii,
|
||||||
|
int panel_row, char *filename)
|
||||||
{
|
{
|
||||||
gpointer closure;
|
gpointer closure;
|
||||||
struct action *action;
|
struct action *action;
|
||||||
@ -231,7 +267,7 @@ create_actions (GtkWidget *menu, WPanel *panel, int panel_row, char *filename)
|
|||||||
GNOMEUIINFO_END
|
GNOMEUIINFO_END
|
||||||
};
|
};
|
||||||
|
|
||||||
closure = panel ? (gpointer) panel : (gpointer) filename;
|
closure = panel ? (gpointer) panel : (gpointer) dii;
|
||||||
|
|
||||||
pos = 0;
|
pos = 0;
|
||||||
|
|
||||||
@ -241,7 +277,7 @@ create_actions (GtkWidget *menu, WPanel *panel, int panel_row, char *filename)
|
|||||||
if (!panel && (action->flags & F_PANEL))
|
if (!panel && (action->flags & F_PANEL))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (panel && (action->flags & F_DICON))
|
if (!dii && (action->flags & F_DICON))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Items with F_ALL bypass any other condition */
|
/* Items with F_ALL bypass any other condition */
|
||||||
@ -367,7 +403,9 @@ mime_command_from_desktop_icon (GtkMenuItem *item, char *filename)
|
|||||||
* regexp_command() actions.
|
* regexp_command() actions.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
create_regexp_actions (GtkWidget *menu, WPanel *panel, int panel_row, char *filename, int insert_pos)
|
create_regexp_actions (GtkWidget *menu, WPanel *panel,
|
||||||
|
desktop_icon_info *dii,
|
||||||
|
int panel_row, char *filename, int insert_pos)
|
||||||
{
|
{
|
||||||
gpointer closure, regex_closure;
|
gpointer closure, regex_closure;
|
||||||
GnomeUIInfo *a_uiinfo;
|
GnomeUIInfo *a_uiinfo;
|
||||||
@ -387,7 +425,7 @@ create_regexp_actions (GtkWidget *menu, WPanel *panel, int panel_row, char *file
|
|||||||
regex_closure = filename;
|
regex_closure = filename;
|
||||||
} else {
|
} else {
|
||||||
a_uiinfo = desktop_icon_actions;
|
a_uiinfo = desktop_icon_actions;
|
||||||
closure = filename;
|
closure = dii;
|
||||||
regex_callback = mime_command_from_desktop_icon;
|
regex_callback = mime_command_from_desktop_icon;
|
||||||
regex_closure = filename;
|
regex_closure = filename;
|
||||||
}
|
}
|
||||||
@ -476,18 +514,23 @@ get_active_index (GtkMenu *menu)
|
|||||||
* be set to NULL.
|
* be set to NULL.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
gpopup_do_popup (GdkEventButton *event, WPanel *from_panel, int panel_row, char *filename)
|
gpopup_do_popup (GdkEventButton *event,
|
||||||
|
WPanel *from_panel,
|
||||||
|
struct desktop_icon_info *dii,
|
||||||
|
int panel_row,
|
||||||
|
char *filename)
|
||||||
{
|
{
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
int pos;
|
int pos;
|
||||||
guint id;
|
guint id;
|
||||||
|
|
||||||
g_return_val_if_fail (event != NULL, -1);
|
g_return_val_if_fail (event != NULL, -1);
|
||||||
g_return_val_if_fail (from_panel != NULL || filename != NULL, -1);
|
g_return_val_if_fail (from_panel != NULL || dii != NULL || filename != NULL, -1);
|
||||||
|
|
||||||
menu = gtk_menu_new ();
|
menu = gtk_menu_new ();
|
||||||
|
|
||||||
/* Connect to the deactivation signal to be able to quit our modal main loop */
|
/* Connect to the deactivation signal to be able to quit our
|
||||||
|
modal main loop */
|
||||||
|
|
||||||
id = gtk_signal_connect (GTK_OBJECT (menu), "deactivate",
|
id = gtk_signal_connect (GTK_OBJECT (menu), "deactivate",
|
||||||
(GtkSignalFunc) menu_shell_deactivated,
|
(GtkSignalFunc) menu_shell_deactivated,
|
||||||
@ -495,8 +538,10 @@ gpopup_do_popup (GdkEventButton *event, WPanel *from_panel, int panel_row, char
|
|||||||
|
|
||||||
/* Fill the menu */
|
/* Fill the menu */
|
||||||
|
|
||||||
pos = create_actions (menu, from_panel, panel_row, filename);
|
pos = create_actions (menu, from_panel, dii,
|
||||||
create_regexp_actions (menu, from_panel, panel_row, filename, pos);
|
panel_row, filename);
|
||||||
|
create_regexp_actions (menu, from_panel, dii,
|
||||||
|
panel_row, filename, pos);
|
||||||
|
|
||||||
/* Run it */
|
/* Run it */
|
||||||
|
|
||||||
|
@ -12,9 +12,11 @@
|
|||||||
|
|
||||||
#include <gdk/gdktypes.h>
|
#include <gdk/gdktypes.h>
|
||||||
#include "panel.h"
|
#include "panel.h"
|
||||||
|
#include "gdesktop.h"
|
||||||
|
|
||||||
|
int gpopup_do_popup (GdkEventButton *event, WPanel *from_panel,
|
||||||
int gpopup_do_popup (GdkEventButton *event, WPanel *from_panel, int panel_row, char *filename);
|
desktop_icon_info *dii,
|
||||||
|
int panel_row, char *filename);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -483,7 +483,7 @@ panel_file_list_select_row (GtkWidget *file_list, int row, int column, GdkEvent
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
gpopup_do_popup ((GdkEventButton *) event, panel, row, panel->dir.list[row].fname);
|
gpopup_do_popup ((GdkEventButton *) event, panel, NULL, row, panel->dir.list[row].fname);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1133,7 +1133,7 @@ panel_icon_list_select_icon (GtkWidget *widget, int index, GdkEvent *event, WPan
|
|||||||
if (event->button.button != 3)
|
if (event->button.button != 3)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gpopup_do_popup ((GdkEventButton *) event, panel, index, panel->dir.list[index].fname);
|
gpopup_do_popup ((GdkEventButton *) event, panel, NULL, index, panel->dir.list[index].fname);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case GDK_2BUTTON_PRESS:
|
case GDK_2BUTTON_PRESS:
|
||||||
|
@ -249,7 +249,7 @@ static void do_view_cmd (WPanel *panel, int normal)
|
|||||||
|
|
||||||
/* Directories are viewed by changing to them */
|
/* Directories are viewed by changing to them */
|
||||||
if (S_ISDIR (selection (panel)->buf.st_mode) ||
|
if (S_ISDIR (selection (panel)->buf.st_mode) ||
|
||||||
link_isdir (selection (panel))){
|
link_isdir (selection (panel))) {
|
||||||
if (confirm_view_dir && (panel->marked || panel->dirs_marked)){
|
if (confirm_view_dir && (panel->marked || panel->dirs_marked)){
|
||||||
if (query_dialog (_(" CD "), _("Files tagged, want to cd?"),
|
if (query_dialog (_(" CD "), _("Files tagged, want to cd?"),
|
||||||
0, 2, _("&Yes"), _("&No")) == 1){
|
0, 2, _("&Yes"), _("&No")) == 1){
|
||||||
|
Loading…
Reference in New Issue
Block a user