mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 18:14:25 +03:00
Bunch of changes:
1. desktop entries on the desktop work. 2. Update the mc.keys.in for using some gnome-libs icons instead of the old ones. 3. Find command rewritten for GNOME. miguel.
This commit is contained in:
parent
dd58854f32
commit
1266ed6d73
@ -27,6 +27,7 @@ tidir = $(libdir)/term
|
|||||||
extfsdir = $(libdir)/extfs
|
extfsdir = $(libdir)/extfs
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
icondir = $(datadir)/pixmaps/mc
|
icondir = $(datadir)/pixmaps/mc
|
||||||
|
gnomeicondir = @gnomeicondir@
|
||||||
localedir = $(datadir)/locale
|
localedir = $(datadir)/locale
|
||||||
mandir = @mandir@
|
mandir = @mandir@
|
||||||
man1dir = $(mandir)/man1
|
man1dir = $(mandir)/man1
|
||||||
|
@ -5,7 +5,7 @@ AC_INIT(create_vcs)
|
|||||||
AC_CONFIG_HEADER(config.h)
|
AC_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
PACKAGE=mc
|
PACKAGE=mc
|
||||||
VERSION=4.5.11
|
VERSION=4.5.13
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
|
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
|
||||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
|
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
|
||||||
AC_SUBST(VERSION)
|
AC_SUBST(VERSION)
|
||||||
@ -489,6 +489,7 @@ dnl
|
|||||||
mx=""
|
mx=""
|
||||||
gmcdep=""
|
gmcdep=""
|
||||||
libgtkedit=""
|
libgtkedit=""
|
||||||
|
|
||||||
AC_SUBST(insticons)
|
AC_SUBST(insticons)
|
||||||
GNOME_INIT_HOOK([
|
GNOME_INIT_HOOK([
|
||||||
mx=mx
|
mx=mx
|
||||||
@ -500,7 +501,9 @@ GNOME_INIT_HOOK([
|
|||||||
else
|
else
|
||||||
xvers="Gnome+$xvers"
|
xvers="Gnome+$xvers"
|
||||||
fi
|
fi
|
||||||
|
gnomeicondir=`gnome-config --prefix`/share/pixmaps
|
||||||
])
|
])
|
||||||
|
AC_SUBST(gnomeicondir)
|
||||||
AC_SUBST(mx)
|
AC_SUBST(mx)
|
||||||
AC_SUBST(gmcdep)
|
AC_SUBST(gmcdep)
|
||||||
AC_SUBST(libgtkedit)
|
AC_SUBST(libgtkedit)
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
1999-02-10 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||||
|
|
||||||
|
* gaction.c (gmc_open_filename): Add support for running .desktop
|
||||||
|
files.
|
||||||
|
Made const correct.
|
||||||
|
(gmc_view): Made const correct.
|
||||||
|
|
||||||
1999-02-10 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
1999-02-10 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* Makefile.in (ICONS): Added i-fifo.png to the list of icons.
|
* Makefile.in (ICONS): Added i-fifo.png to the list of icons.
|
||||||
|
@ -212,7 +212,9 @@ corba-gmc: @LIBVFS@ $(OBJS) $(CORBAOBJS) libgtkedit.a
|
|||||||
$(CC) -o corba-gmc $(CORBAOBJS) $(OBJS) $(EXTRALIBS) $(CORBA_LDFLAGS) $(LIBS)
|
$(CC) -o corba-gmc $(CORBAOBJS) $(OBJS) $(EXTRALIBS) $(CORBA_LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
mc.keys: mc.keys.in Makefile
|
mc.keys: mc.keys.in Makefile
|
||||||
sed -e 's^\@icondir\@^$(icondir)^g' < mc.keys.in > mc.keys.tmp \
|
sed -e 's^\@icondir\@^$(icondir)^g' \
|
||||||
|
-e 's^\@gnomeicondir\@^$(gnomeicondir)^g' \
|
||||||
|
< mc.keys.in > mc.keys.tmp \
|
||||||
&& mv mc.keys.tmp mc.keys
|
&& mv mc.keys.tmp mc.keys
|
||||||
|
|
||||||
mc.keys.in: mc.keys.in.in Makefile.in ../config.status
|
mc.keys.in: mc.keys.in.in Makefile.in ../config.status
|
||||||
|
@ -26,7 +26,8 @@ gmc_execute (char *fname, char *buf)
|
|||||||
int
|
int
|
||||||
gmc_open_filename (char *fname, GList *args)
|
gmc_open_filename (char *fname, GList *args)
|
||||||
{
|
{
|
||||||
char *mime_type, *cmd;
|
const char *mime_type;
|
||||||
|
const char *cmd;
|
||||||
char *buf;
|
char *buf;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
@ -59,6 +60,17 @@ gmc_open_filename (char *fname, GList *args)
|
|||||||
gmc_execute (fname, cmd);
|
gmc_execute (fname, cmd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp (mime_type, "application/x-gnome-app-info") == 0){
|
||||||
|
GnomeDesktopEntry *entry;
|
||||||
|
|
||||||
|
entry = gnome_desktop_entry_load (fname);
|
||||||
|
if (entry){
|
||||||
|
gnome_desktop_entry_launch (entry);
|
||||||
|
gnome_desktop_entry_free (entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +89,7 @@ gmc_run_view (char *filename, char *buf)
|
|||||||
int
|
int
|
||||||
gmc_view (char *filename, int start_line)
|
gmc_view (char *filename, int start_line)
|
||||||
{
|
{
|
||||||
char *mime_type, *cmd;
|
const char *mime_type, *cmd;
|
||||||
char *buf;
|
char *buf;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ text/html:
|
|||||||
open.netscape.View this file with Netscape=gnome-moz-remote %f
|
open.netscape.View this file with Netscape=gnome-moz-remote %f
|
||||||
|
|
||||||
application/vcard:
|
application/vcard:
|
||||||
icon-filename=@icondir@/calendar.xpm
|
icon-filename=@gnomeicons@/gnome-calendar.png
|
||||||
|
|
||||||
x-url/http:
|
x-url/http:
|
||||||
icon-filename=@icondir@/gnome-text-url.png
|
icon-filename=@icondir@/gnome-text-url.png
|
||||||
|
@ -34,8 +34,8 @@ ALLICONS = a.xpm application.xpm binary.xpm bitmap.xpm blackhole.xpm \
|
|||||||
# are obtained
|
# are obtained
|
||||||
#
|
#
|
||||||
DECENTICONS = \
|
DECENTICONS = \
|
||||||
c.xpm h.xpm calendar.xpm compressed.xpm html.xpm o.xpm \
|
compressed.xpm o.xpm \
|
||||||
sound.xpm makefile.xpm word.xpm tex.xpm cc.xpm man.xpm \
|
sound.xpm makefile.xpm word.xpm tex.xpm man.xpm \
|
||||||
postscript.xpm tex.xpm text.xpm trash.xpm
|
postscript.xpm tex.xpm text.xpm trash.xpm
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
408
src/find.c
408
src/find.c
@ -80,14 +80,10 @@ enum {
|
|||||||
/* A list of directories to be ignores, separated with ':' */
|
/* A list of directories to be ignores, separated with ':' */
|
||||||
char *find_ignore_dirs = 0;
|
char *find_ignore_dirs = 0;
|
||||||
|
|
||||||
static Dlg_head *find_dlg; /* The dialog */
|
|
||||||
static WInput *in_start; /* Start path */
|
static WInput *in_start; /* Start path */
|
||||||
static WInput *in_name; /* Pattern to search */
|
static WInput *in_name; /* Pattern to search */
|
||||||
static WInput *in_with; /* text inside filename */
|
static WInput *in_with; /* text inside filename */
|
||||||
static WListbox *find_list; /* Listbox with the file list */
|
|
||||||
static int running = 0; /* nice flag */
|
static int running = 0; /* nice flag */
|
||||||
static WButton *stop_button; /* pointer to the stop button */
|
|
||||||
static WLabel *status_label; /* Finished, Searching etc. */
|
|
||||||
static char *find_pattern; /* Pattern to search */
|
static char *find_pattern; /* Pattern to search */
|
||||||
static char *content_pattern; /* pattern to search inside files */
|
static char *content_pattern; /* pattern to search inside files */
|
||||||
static int count; /* Number of files displayed */
|
static int count; /* Number of files displayed */
|
||||||
@ -96,6 +92,24 @@ static int is_start; /* Status of the start/stop toggle button */
|
|||||||
int max_loops_in_idle = 10;
|
int max_loops_in_idle = 10;
|
||||||
static char *old_dir;
|
static char *old_dir;
|
||||||
|
|
||||||
|
static Dlg_head *find_dlg; /* The dialog */
|
||||||
|
|
||||||
|
#ifdef HAVE_GNOME
|
||||||
|
static GtkWidget *g_find_dlg;
|
||||||
|
static GtkWidget *g_status_label;
|
||||||
|
static GtkWidget *g_clist;
|
||||||
|
static GtkWidget *g_start_stop;
|
||||||
|
static GtkWidget *g_start_stop_label;
|
||||||
|
static GtkWidget *g_view, *g_edit;
|
||||||
|
static int current_row;
|
||||||
|
static int idle_tag;
|
||||||
|
static int stop;
|
||||||
|
#else
|
||||||
|
static WButton *stop_button; /* pointer to the stop button */
|
||||||
|
static WLabel *status_label; /* Finished, Searching etc. */
|
||||||
|
static WListbox *find_list; /* Listbox with the file list */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* For nice updating */
|
/* For nice updating */
|
||||||
static char *rotating_dash = "|/-\\";
|
static char *rotating_dash = "|/-\\";
|
||||||
|
|
||||||
@ -122,6 +136,11 @@ static struct {
|
|||||||
{ N_("&Edit - F4"), 13, 38 }
|
{ N_("&Edit - F4"), 13, 38 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static char *add_to_list (char *text, void *closure);
|
||||||
|
static void stop_idle (void *data);
|
||||||
|
static void status_update (char *text);
|
||||||
|
static void get_list_info (char **file, char **dir);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* find_parameters: gets information from the user
|
* find_parameters: gets information from the user
|
||||||
*
|
*
|
||||||
@ -321,15 +340,15 @@ insert_file (char *dir, char *file)
|
|||||||
if (strcmp (old_dir, dir)){
|
if (strcmp (old_dir, dir)){
|
||||||
g_free (old_dir);
|
g_free (old_dir);
|
||||||
old_dir = g_strdup (dir);
|
old_dir = g_strdup (dir);
|
||||||
dirname = listbox_add_item (find_list, 0, 0, dir, 0);
|
dirname = add_to_list (dir, NULL);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
old_dir = g_strdup (dir);
|
old_dir = g_strdup (dir);
|
||||||
dirname = listbox_add_item (find_list, 0, 0, dir, 0);
|
dirname = add_to_list (dir, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_name = g_strconcat (" ", file, NULL);
|
tmp_name = g_strconcat (" ", file, NULL);
|
||||||
listbox_add_item (find_list, 0, 0, tmp_name, dirname);
|
add_to_list (tmp_name, dirname);
|
||||||
g_free (tmp_name);
|
g_free (tmp_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,12 +358,14 @@ find_add_match (Dlg_head *h, char *dir, char *file)
|
|||||||
int p = ++matches & 7;
|
int p = ++matches & 7;
|
||||||
|
|
||||||
insert_file (dir, file);
|
insert_file (dir, file);
|
||||||
|
|
||||||
|
#ifndef HAVE_GNOME
|
||||||
/* Scroll nicely */
|
/* Scroll nicely */
|
||||||
if (!p)
|
if (!p)
|
||||||
listbox_select_last (find_list, 1);
|
listbox_select_last (find_list, 1);
|
||||||
else
|
else
|
||||||
listbox_select_last (find_list, 0);
|
listbox_select_last (find_list, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_X
|
#ifndef HAVE_X
|
||||||
/* Updates the current listing */
|
/* Updates the current listing */
|
||||||
@ -429,7 +450,7 @@ search_content (Dlg_head *h, char *directory, char *filename)
|
|||||||
|
|
||||||
g_snprintf (buffer, sizeof (buffer), _("Grepping in %s"), name_trunc (filename, FIND2_X_USE));
|
g_snprintf (buffer, sizeof (buffer), _("Grepping in %s"), name_trunc (filename, FIND2_X_USE));
|
||||||
|
|
||||||
label_set_text (status_label, buffer);
|
status_update (buffer);
|
||||||
mc_refresh ();
|
mc_refresh ();
|
||||||
p = buffer;
|
p = buffer;
|
||||||
ignoring = 0;
|
ignoring = 0;
|
||||||
@ -471,7 +492,7 @@ search_content (Dlg_head *h, char *directory, char *filename)
|
|||||||
mc_close (file_fd);
|
mc_close (file_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
do_search (struct Dlg_head *h)
|
do_search (struct Dlg_head *h)
|
||||||
{
|
{
|
||||||
static struct dirent *dp = 0;
|
static struct dirent *dp = 0;
|
||||||
@ -490,7 +511,7 @@ do_search (struct Dlg_head *h)
|
|||||||
dirp = 0;
|
dirp = 0;
|
||||||
}
|
}
|
||||||
dp = 0;
|
dp = 0;
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifndef HAVE_X
|
#ifndef HAVE_X
|
||||||
do_search_begin:
|
do_search_begin:
|
||||||
@ -512,9 +533,9 @@ do_search (struct Dlg_head *h)
|
|||||||
tmp = pop_directory ();
|
tmp = pop_directory ();
|
||||||
if (!tmp){
|
if (!tmp){
|
||||||
running = 0;
|
running = 0;
|
||||||
label_set_text (status_label, _("Finished"));
|
status_update (_("Finished"));
|
||||||
set_idle_proc (h, 0);
|
stop_idle (h);
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
if (find_ignore_dirs){
|
if (find_ignore_dirs){
|
||||||
int found;
|
int found;
|
||||||
@ -537,7 +558,7 @@ do_search (struct Dlg_head *h)
|
|||||||
char buffer [BUF_SMALL];
|
char buffer [BUF_SMALL];
|
||||||
|
|
||||||
g_snprintf (buffer, sizeof (buffer), _("Searching %s"), name_trunc (directory, FIND2_X_USE));
|
g_snprintf (buffer, sizeof (buffer), _("Searching %s"), name_trunc (directory, FIND2_X_USE));
|
||||||
label_set_text (status_label, buffer);
|
status_update (buffer);
|
||||||
}
|
}
|
||||||
dirp = mc_opendir (directory);
|
dirp = mc_opendir (directory);
|
||||||
mc_stat (directory, &tmp_stat);
|
mc_stat (directory, &tmp_stat);
|
||||||
@ -553,7 +574,7 @@ do_search (struct Dlg_head *h)
|
|||||||
if (strcmp (dp->d_name, ".") == 0 ||
|
if (strcmp (dp->d_name, ".") == 0 ||
|
||||||
strcmp (dp->d_name, "..") == 0){
|
strcmp (dp->d_name, "..") == 0){
|
||||||
dp = mc_readdir (dirp);
|
dp = mc_readdir (dirp);
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_name = concat_dir_and_file (directory, dp->d_name);
|
tmp_name = concat_dir_and_file (directory, dp->d_name);
|
||||||
@ -594,28 +615,37 @@ do_search (struct Dlg_head *h)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
x_flush_events ();
|
x_flush_events ();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static void
|
||||||
view_edit_currently_selected_file (int unparsed_view, int edit)
|
init_find_vars (void)
|
||||||
{
|
{
|
||||||
WLEntry *entry = find_list->current;
|
char *dir;
|
||||||
char *dir, *fullname, *filename;
|
|
||||||
|
if (old_dir){
|
||||||
|
g_free (old_dir);
|
||||||
|
old_dir = 0;
|
||||||
|
}
|
||||||
|
count = 0;
|
||||||
|
matches = 0;
|
||||||
|
|
||||||
|
/* Remove all the items in the stack */
|
||||||
|
while ((dir = pop_directory ()) != NULL)
|
||||||
|
g_free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_do_view_edit (int unparsed_view, int edit, char *dir, char *file)
|
||||||
|
{
|
||||||
|
char *fullname, *filename;
|
||||||
int line;
|
int line;
|
||||||
|
|
||||||
if (!entry)
|
|
||||||
return MSG_NOT_HANDLED;
|
|
||||||
|
|
||||||
dir = entry->data;
|
|
||||||
|
|
||||||
if (!entry->text || !dir)
|
|
||||||
return MSG_NOT_HANDLED;
|
|
||||||
|
|
||||||
if (content_pattern){
|
if (content_pattern){
|
||||||
filename = strchr (entry->text + 4, ':') + 1;
|
filename = strchr (file + 4, ':') + 1;
|
||||||
line = atoi (entry->text + 4);
|
line = atoi (file + 4);
|
||||||
} else {
|
} else {
|
||||||
filename = entry->text + 4;
|
filename = file + 4;
|
||||||
line = 0;
|
line = 0;
|
||||||
}
|
}
|
||||||
if (dir [0] == '.' && dir [1] == 0)
|
if (dir [0] == '.' && dir [1] == 0)
|
||||||
@ -630,6 +660,248 @@ view_edit_currently_selected_file (int unparsed_view, int edit)
|
|||||||
else
|
else
|
||||||
view_file_at_line (fullname, unparsed_view, use_internal_view, line);
|
view_file_at_line (fullname, unparsed_view, use_internal_view, line);
|
||||||
g_free (fullname);
|
g_free (fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_GNOME
|
||||||
|
static void
|
||||||
|
select_row (GtkCList *clist, gint row, gint column, GdkEvent *event)
|
||||||
|
{
|
||||||
|
gtk_widget_set_sensitive (g_edit, TRUE);
|
||||||
|
gtk_widget_set_sensitive (g_view, TRUE);
|
||||||
|
current_row = row;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_do_chdir (void)
|
||||||
|
{
|
||||||
|
gtk_idle_remove (idle_tag);
|
||||||
|
idle_tag = 0;
|
||||||
|
stop = B_ENTER;
|
||||||
|
gtk_main_quit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_do_again (void)
|
||||||
|
{
|
||||||
|
gtk_idle_remove (idle_tag);
|
||||||
|
idle_tag = 0;
|
||||||
|
stop = B_AGAIN;
|
||||||
|
gtk_main_quit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_start_stop (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (is_start){
|
||||||
|
idle_tag = gtk_idle_add ((GtkFunction)do_search, g_find_dlg);
|
||||||
|
} else {
|
||||||
|
gtk_idle_remove (idle_tag);
|
||||||
|
idle_tag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_label_set_text (GTK_LABEL (g_start_stop_label),
|
||||||
|
is_start ? _("Suspend") : _("Restart"));
|
||||||
|
is_start = !is_start;
|
||||||
|
status_update (is_start ? _("Stopped") : _("Searching"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_do_view (void)
|
||||||
|
{
|
||||||
|
char *file, *dir;
|
||||||
|
|
||||||
|
get_list_info (&file, &dir);
|
||||||
|
|
||||||
|
find_do_view_edit (0, 0, dir, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_do_edit (void)
|
||||||
|
{
|
||||||
|
char *file, *dir;
|
||||||
|
|
||||||
|
get_list_info (&file, &dir);
|
||||||
|
|
||||||
|
find_do_view_edit (0, 1, dir, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
setup_gui (void)
|
||||||
|
{
|
||||||
|
GtkWidget *sw, *b1, *b2, *b3;
|
||||||
|
GtkWidget *box, *box2;
|
||||||
|
|
||||||
|
g_find_dlg = gnome_dialog_new (
|
||||||
|
_("Find file"),
|
||||||
|
GNOME_STOCK_BUTTON_OK,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
/* The buttons */
|
||||||
|
b1 = gtk_button_new_with_label (_("Change to this directory"));
|
||||||
|
b2 = gtk_button_new_with_label (_("Search again"));
|
||||||
|
g_start_stop_label = gtk_label_new (_("Suspend"));
|
||||||
|
g_start_stop = gtk_button_new ();
|
||||||
|
gtk_container_add (GTK_CONTAINER (g_start_stop), g_start_stop_label);
|
||||||
|
|
||||||
|
g_view = gtk_button_new_with_label (_("View this file"));
|
||||||
|
g_edit = gtk_button_new_with_label (_("Edit this file"));
|
||||||
|
|
||||||
|
box = gtk_hbox_new (TRUE, GNOME_PAD);
|
||||||
|
gtk_box_pack_start (GTK_BOX (box), b1, 0, 1, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (box), b2, 0, 1, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (box), g_start_stop, 0, 1, 0);
|
||||||
|
|
||||||
|
/* RECOONECT _("Panelize contents"), */
|
||||||
|
/* _("View"),
|
||||||
|
_("Edit"), */
|
||||||
|
|
||||||
|
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||||
|
GTK_POLICY_AUTOMATIC,
|
||||||
|
GTK_POLICY_AUTOMATIC);
|
||||||
|
g_clist = gtk_clist_new (1);
|
||||||
|
gtk_clist_set_selection_mode (GTK_CLIST (g_clist), GTK_SELECTION_SINGLE);
|
||||||
|
gtk_widget_set_usize (g_clist, -1, 200);
|
||||||
|
gtk_container_add (GTK_CONTAINER (sw), g_clist);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (g_find_dlg)->vbox),
|
||||||
|
sw, TRUE, TRUE, GNOME_PAD_SMALL);
|
||||||
|
|
||||||
|
current_row = -1;
|
||||||
|
stop = 0;
|
||||||
|
gtk_signal_connect (GTK_OBJECT (g_clist), "select_row",
|
||||||
|
GTK_SIGNAL_FUNC (select_row), NULL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Connect the buttons
|
||||||
|
*/
|
||||||
|
gtk_signal_connect (
|
||||||
|
GTK_OBJECT (b1), "clicked", GTK_SIGNAL_FUNC (find_do_chdir), NULL);
|
||||||
|
gtk_signal_connect (
|
||||||
|
GTK_OBJECT (b2), "clicked", GTK_SIGNAL_FUNC (find_do_again), NULL);
|
||||||
|
gtk_signal_connect (
|
||||||
|
GTK_OBJECT (g_start_stop), "clicked", GTK_SIGNAL_FUNC (find_start_stop), NULL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View/edit buttons
|
||||||
|
*/
|
||||||
|
gtk_signal_connect (
|
||||||
|
GTK_OBJECT (g_view), "clicked", GTK_SIGNAL_FUNC (find_do_view), NULL);
|
||||||
|
gtk_signal_connect (
|
||||||
|
GTK_OBJECT (g_edit), "clicked", GTK_SIGNAL_FUNC (find_do_edit), NULL);
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (g_view, FALSE);
|
||||||
|
gtk_widget_set_sensitive (g_edit, FALSE);
|
||||||
|
box2 = gtk_hbox_new (1, GNOME_PAD + GNOME_PAD);
|
||||||
|
gtk_box_pack_start (GTK_BOX (box2), g_view, 0, 0, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (box2), g_edit, 0, 0, 0);
|
||||||
|
|
||||||
|
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (g_find_dlg)->vbox),
|
||||||
|
box, TRUE, TRUE, GNOME_PAD_SMALL);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (g_find_dlg)->vbox),
|
||||||
|
box2, TRUE, TRUE, GNOME_PAD_SMALL);
|
||||||
|
|
||||||
|
g_status_label = gtk_label_new (_("Searching"));
|
||||||
|
gtk_misc_set_alignment (GTK_MISC (g_status_label), 0.0, 0.5);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (g_find_dlg)->vbox),
|
||||||
|
g_status_label, TRUE, TRUE, GNOME_PAD_SMALL);
|
||||||
|
|
||||||
|
gtk_widget_show_all (g_find_dlg);
|
||||||
|
gtk_widget_hide (box2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
run_process ()
|
||||||
|
{
|
||||||
|
idle_tag = gtk_idle_add ((GtkFunction)do_search, g_find_dlg);
|
||||||
|
|
||||||
|
gnome_dialog_run (GNOME_DIALOG (g_find_dlg));
|
||||||
|
g_start_stop = NULL;
|
||||||
|
|
||||||
|
return stop;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
kill_gui ()
|
||||||
|
{
|
||||||
|
gtk_object_destroy (GTK_OBJECT (g_find_dlg));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
stop_idle (void *data)
|
||||||
|
{
|
||||||
|
if (g_start_stop)
|
||||||
|
gtk_widget_set_sensitive (GTK_WIDGET (g_start_stop), FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
status_update (char *text)
|
||||||
|
{
|
||||||
|
gtk_label_set_text (GTK_LABEL (g_status_label), text);
|
||||||
|
x_flush_events ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
add_to_list (char *text, void *data)
|
||||||
|
{
|
||||||
|
int row;
|
||||||
|
char *texts [1];
|
||||||
|
|
||||||
|
texts [0] = text;
|
||||||
|
|
||||||
|
row = gtk_clist_append (GTK_CLIST (g_clist), texts);
|
||||||
|
gtk_clist_set_row_data (GTK_CLIST (g_clist), row, data);
|
||||||
|
#if 1
|
||||||
|
if (gtk_clist_row_is_visible (GTK_CLIST (g_clist), row) != GTK_VISIBILITY_FULL)
|
||||||
|
gtk_clist_moveto (GTK_CLIST (g_clist), row, 0, 0.5, 0.0);
|
||||||
|
#endif
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
get_list_info (char **file, char **dir)
|
||||||
|
{
|
||||||
|
if (current_row == -1)
|
||||||
|
*file = *dir = NULL;
|
||||||
|
gtk_clist_get_text (GTK_CLIST (g_clist), current_row, 0, file);
|
||||||
|
*dir = gtk_clist_get_row_data (GTK_CLIST (g_clist), current_row);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
|
static void
|
||||||
|
get_list_info (char **file, char **dir)
|
||||||
|
{
|
||||||
|
listbox_get_current (find_list, file, dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
add_to_list (char *text, void *data)
|
||||||
|
{
|
||||||
|
return listbox_add_item (find_list, 0, 0, text, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
stop_idle (void *data)
|
||||||
|
{
|
||||||
|
set_idle_proc (data, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
view_edit_currently_selected_file (int unparsed_view, int edit)
|
||||||
|
{
|
||||||
|
WLEntry *entry = find_list->current;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
if (!entry)
|
||||||
|
return MSG_NOT_HANDLED;
|
||||||
|
|
||||||
|
dir = entry->data;
|
||||||
|
|
||||||
|
if (!entry->text || !dir)
|
||||||
|
return MSG_NOT_HANDLED;
|
||||||
|
|
||||||
|
find_do_view_edit (unparsed_view, edit, dir, entry->text);
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -668,7 +940,7 @@ start_stop (int button, void *extra)
|
|||||||
set_idle_proc (find_dlg, running);
|
set_idle_proc (find_dlg, running);
|
||||||
is_start = !is_start;
|
is_start = !is_start;
|
||||||
|
|
||||||
label_set_text (status_label, is_start ? _("Stopped") : _("Searching"));
|
status_update (is_start ? _("Stopped") : _("Searching"));
|
||||||
button_set_text (stop_button, fbuts [is_start].text);
|
button_set_text (stop_button, fbuts [is_start].text);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -691,29 +963,8 @@ find_do_edit_file (int button, void *extra)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_find_vars (void)
|
setup_gui (void)
|
||||||
{
|
{
|
||||||
char *dir;
|
|
||||||
|
|
||||||
if (old_dir){
|
|
||||||
g_free (old_dir);
|
|
||||||
old_dir = 0;
|
|
||||||
}
|
|
||||||
count = 0;
|
|
||||||
matches = 0;
|
|
||||||
|
|
||||||
/* Remove all the items in the stack */
|
|
||||||
while ((dir = pop_directory ()) != NULL)
|
|
||||||
g_free (dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
find_file (char *start_dir, char *pattern, char *content, char **dirname, char **filename)
|
|
||||||
{
|
|
||||||
int return_value = 0;
|
|
||||||
char *dir;
|
|
||||||
char *dir_tmp, *file_tmp;
|
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
static int i18n_flag = 0;
|
static int i18n_flag = 0;
|
||||||
if (!i18n_flag)
|
if (!i18n_flag)
|
||||||
@ -790,29 +1041,60 @@ find_file (char *start_dir, char *pattern, char *content, char **dirname, char
|
|||||||
|
|
||||||
find_list = listbox_new (2, 2, FIND2_X-4, FIND2_Y-9, listbox_finish, 0, "listbox");
|
find_list = listbox_new (2, 2, FIND2_X-4, FIND2_Y-9, listbox_finish, 0, "listbox");
|
||||||
add_widgetl (find_dlg, find_list, XV_WLAY_EXTENDWIDTH);
|
add_widgetl (find_dlg, find_list, XV_WLAY_EXTENDWIDTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
run_process (void)
|
||||||
|
{
|
||||||
|
set_idle_proc (find_dlg, 1);
|
||||||
|
run_dlg (find_dlg);
|
||||||
|
return find_dlg->ret_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
status_update (char *text)
|
||||||
|
{
|
||||||
|
label_set_text (status_label, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
kill_gui (void)
|
||||||
|
{
|
||||||
|
set_idle_proc (find_dlg, 0);
|
||||||
|
destroy_dlg (find_dlg);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
find_file (char *start_dir, char *pattern, char *content, char **dirname, char **filename)
|
||||||
|
{
|
||||||
|
int return_value = 0;
|
||||||
|
char *dir;
|
||||||
|
char *dir_tmp, *file_tmp;
|
||||||
|
|
||||||
|
setup_gui ();
|
||||||
|
|
||||||
/* FIXME: Need to cleanup this, this ought to be passed non-globaly */
|
/* FIXME: Need to cleanup this, this ought to be passed non-globaly */
|
||||||
find_pattern = pattern;
|
find_pattern = pattern;
|
||||||
content_pattern = content;
|
content_pattern = content;
|
||||||
|
|
||||||
set_idle_proc (find_dlg, 1);
|
|
||||||
init_find_vars ();
|
init_find_vars ();
|
||||||
push_directory (start_dir);
|
push_directory (start_dir);
|
||||||
|
|
||||||
run_dlg (find_dlg);
|
return_value = run_process ();
|
||||||
|
|
||||||
return_value = find_dlg->ret_value;
|
|
||||||
|
|
||||||
/* Remove all the items in the stack */
|
/* Remove all the items in the stack */
|
||||||
while ((dir = pop_directory ()) != NULL)
|
while ((dir = pop_directory ()) != NULL)
|
||||||
g_free (dir);
|
g_free (dir);
|
||||||
|
|
||||||
listbox_get_current (find_list, &file_tmp, &dir_tmp);
|
get_list_info (&file_tmp, &dir_tmp);
|
||||||
|
|
||||||
if (dir_tmp)
|
if (dir_tmp)
|
||||||
*dirname = g_strdup (dir_tmp);
|
*dirname = g_strdup (dir_tmp);
|
||||||
if (file_tmp)
|
if (file_tmp)
|
||||||
*filename = g_strdup (file_tmp);
|
*filename = g_strdup (file_tmp);
|
||||||
|
|
||||||
|
#ifndef HAVE_GNOME
|
||||||
if (return_value == B_PANELIZE && *filename){
|
if (return_value == B_PANELIZE && *filename){
|
||||||
int status, link_to_dir, stalled_link;
|
int status, link_to_dir, stalled_link;
|
||||||
int next_free = 0;
|
int next_free = 0;
|
||||||
@ -886,9 +1168,9 @@ find_file (char *start_dir, char *pattern, char *content, char **dirname, char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
set_idle_proc (find_dlg, 0);
|
kill_gui ();
|
||||||
destroy_dlg (find_dlg);
|
|
||||||
do_search (0); /* force do_search to release resources */
|
do_search (0); /* force do_search to release resources */
|
||||||
if (old_dir){
|
if (old_dir){
|
||||||
g_free (old_dir);
|
g_free (old_dir);
|
||||||
|
Loading…
Reference in New Issue
Block a user