Mercurial > gftp.yaz
view src/gtk/gtkui.c @ 354:2ea37b3c0158
2003-1-5 Brian Masney <masneyb@gftp.org>
* lib/gftp.h src/gtk/misc-gtk.c src/text/gftp-text.c - added logging
level type gftp_logging_misc_nolog. If a message is logged with this
level, it will be displayed to the screen but, it will not be logged
to disk.
* src/uicommon/gftpui.c - log the directory listings with the log level
gftp_logging_misc_nolog
* src/gtk/gtkui.c (gftpui_generic_thread) - fixed segfault. Pass
cdata structure instead of wdata.
author | masneyb |
---|---|
date | Mon, 05 Jan 2004 23:38:22 +0000 |
parents | 07d635081926 |
children | 60d3da6ab336 |
line wrap: on
line source
/*****************************************************************************/ /* gtkui.c - GTK+ UI related functions for gFTP */ /* Copyright (C) 1998-2003 Brian Masney <masneyb@gftp.org> */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with this program; if not, write to the Free Software */ /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */ /*****************************************************************************/ #include "gftp-gtk.h" static const char cvsid[] = "$Id$"; void gftpui_lookup_file_colors (gftp_file * fle, char **start_color, char ** end_color) { *start_color = GFTPUI_COMMON_COLOR_NONE; *end_color = GFTPUI_COMMON_COLOR_NONE; } void gftpui_run_command (GtkWidget * widget, gpointer data) { const char *txt; txt = gtk_entry_get_text (GTK_ENTRY (gftpui_command_widget)); gftpui_common_process_command (txt); gtk_entry_set_text (GTK_ENTRY (gftpui_command_widget), ""); } void gftpui_refresh (void *uidata) { gftp_window_data * wdata; wdata = uidata; if (!check_status (_("Refresh"), wdata, 0, 0, 0, 1)) return; if (check_reconnect (wdata) < 0) return; gtk_clist_freeze (GTK_CLIST (wdata->listbox)); remove_files_window (wdata); gftp_delete_cache_entry (wdata->request, NULL, 0); ftp_list_files (wdata, 0); gtk_clist_thaw (GTK_CLIST (wdata->listbox)); } void * gftpui_generic_thread (void * (*func) (void *), void *data) { gftpui_callback_data * cdata; gftp_window_data * wdata; void * ret; cdata = data; wdata = cdata->uidata; wdata->request->stopable = 1; gtk_widget_set_sensitive (stop_btn, 1); pthread_create (&wdata->tid, NULL, func, cdata); while (wdata->request->stopable) { GDK_THREADS_LEAVE (); #if GTK_MAJOR_VERSION == 1 g_main_iteration (TRUE); #else g_main_context_iteration (NULL, TRUE); #endif } pthread_join (wdata->tid, &ret); gtk_widget_set_sensitive (stop_btn, 0); if (!GFTP_IS_CONNECTED (wdata->request)) disconnect (wdata); return (ret); } int gftpui_check_reconnect (gftpui_callback_data * cdata) { gftp_window_data * wdata; wdata = cdata->uidata; return (wdata->request->cached && wdata->request->datafd < 0 && !wdata->request->always_connected && !ftp_connect (wdata, wdata->request, 0) ? -1 : 0); } void gftpui_run_function_callback (gftp_window_data * wdata, gftp_dialog_data * ddata) { gftpui_callback_data * cdata; const char *edttext; int ret; cdata = ddata->yespointer; if (ddata->edit != NULL) { edttext = gtk_entry_get_text (GTK_ENTRY (ddata->edit)); if (*edttext == '\0') { ftp_log (gftp_logging_misc, NULL, _("Operation canceled...you must enter a string\n")); return; } cdata->input_string = g_strdup (edttext); } ret = gftpui_common_run_callback_function (cdata); } void gftpui_run_function_cancel_callback (gftp_window_data * wdata, gftp_dialog_data * ddata) { gftpui_callback_data * cdata; cdata = ddata->yespointer; if (cdata->input_string != NULL) g_free (cdata->input_string); if (cdata->source_string != NULL) g_free (cdata->source_string); g_free (cdata); } void gftpui_mkdir_dialog (gpointer data) { gftpui_callback_data * cdata; gftp_window_data * wdata; wdata = data; cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = gftpui_common_run_mkdir; if (!check_status (_("Mkdir"), wdata, gftpui_common_use_threads (wdata->request), 0, 0, wdata->request->mkdir != NULL)) return; MakeEditDialog (_("Make Directory"), _("Enter name of directory to create"), NULL, 1, NULL, gftp_dialog_button_create, gftpui_run_function_callback, cdata, gftpui_run_function_cancel_callback, cdata); } void gftpui_rename_dialog (gpointer data) { gftpui_callback_data * cdata; GList *templist, *filelist; gftp_window_data * wdata; gftp_file * curfle; char *tempstr; int num; wdata = data; cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = gftpui_common_run_rename; if (!check_status (_("Rename"), wdata, gftpui_common_use_threads (wdata->request), 1, 1, wdata->request->rename != NULL)) return; templist = GTK_CLIST (wdata->listbox)->selection; num = 0; filelist = wdata->files; templist = get_next_selection (templist, &filelist, &num); curfle = filelist->data; cdata->source_string = g_strdup (curfle->file); tempstr = g_strdup_printf (_("What would you like to rename %s to?"), cdata->source_string); MakeEditDialog (_("Rename"), tempstr, cdata->source_string, 1, NULL, gftp_dialog_button_rename, gftpui_run_function_callback, cdata, gftpui_run_function_cancel_callback, cdata); g_free (tempstr); } void gftpui_site_dialog (gpointer data) { gftpui_callback_data * cdata; gftp_window_data * wdata; wdata = data; cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = gftpui_common_run_site; if (!check_status (_("Site"), wdata, 0, 0, 0, wdata->request->site != NULL)) return; MakeEditDialog (_("Site"), _("Enter site-specific command"), NULL, 1, NULL, gftp_dialog_button_ok, gftpui_run_function_callback, cdata, gftpui_run_function_cancel_callback, cdata); } int gftpui_run_chdir (gpointer uidata, char *directory) { gftpui_callback_data * cdata; gftp_window_data * wdata; int ret; wdata = uidata; cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = gftpui_common_run_chdir; cdata->input_string = directory; ret = gftpui_common_run_callback_function (cdata); g_free (cdata); return (ret); } void gftpui_chdir_dialog (gpointer data) { GList *templist, *filelist; gftp_window_data * wdata; gftp_file * curfle; char *tempstr; int num; wdata = data; if (!check_status (_("Chdir"), wdata, gftpui_common_use_threads (wdata->request), 1, 0, wdata->request->chdir != NULL)) return; templist = GTK_CLIST (wdata->listbox)->selection; num = 0; filelist = wdata->files; templist = get_next_selection (templist, &filelist, &num); curfle = filelist->data; tempstr = gftp_build_path (wdata->request->directory, curfle->file, NULL); gftpui_run_chdir (wdata, tempstr); g_free (tempstr); }