int chdir_edit (GtkWidget * widget, gpointer data) { gftp_window_data * wdata; const char *edttxt; char *tempstr; wdata = data; if (!check_status (_("Chdir"), wdata, gftpui_common_use_threads (wdata->request), 0, 0, wdata->request->chdir != NULL)) return (0); if (check_reconnect (wdata) < 0) return (0); edttxt = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry)); if (!GFTP_IS_CONNECTED (wdata->request) && *edttxt != '\0') { toolbar_hostedit (NULL, NULL); return (0); } if ((tempstr = gftp_expand_path (wdata->request, edttxt)) == NULL) return (FALSE); if (gftpui_run_chdir (wdata, tempstr)) add_history (wdata->combo, wdata->history, wdata->histlen, edttxt); g_free (tempstr); return (0); }
void delete_dialog (GtkAction * a, gpointer data) { gftp_file * tempfle, * newfle; GList * templist, * filelist; gftp_transfer * transfer; gftp_window_data * wdata; int ret; GtkTreeSelection *select; GtkTreeIter iter; GtkTreeModel * model; wdata = data; if (!check_status (_("Delete"), wdata, gftpui_common_use_threads (wdata->request), 0, 1, 1)) return; transfer = g_malloc0 (sizeof (*transfer)); transfer->fromreq = gftp_copy_request (wdata->request); transfer->fromwdata = wdata; select = gtk_tree_view_get_selection (GTK_TREE_VIEW (wdata->listbox)); templist = gtk_tree_selection_get_selected_rows(select, &model); for (filelist = templist ; filelist != NULL; filelist = g_list_next(filelist)) { gtk_tree_model_get_iter(model, &iter, (GtkTreePath*)filelist->data); gtk_tree_model_get(model, &iter, 0, &tempfle, -1); if (strcmp (tempfle->file, "..") == 0 || strcmp (tempfle->file, ".") == 0) continue; newfle = copy_fdata (tempfle); transfer->files = g_list_append (transfer->files, newfle); } g_list_foreach (templist, (GFunc) gtk_tree_path_free, NULL); g_list_free (templist); if (transfer->files == NULL) { free_tdata (transfer); return; } gftp_swap_socks (transfer->fromreq, wdata->request); ret = gftp_gtk_get_subdirs (transfer); gftp_swap_socks (wdata->request, transfer->fromreq); if (!GFTP_IS_CONNECTED (wdata->request)) { gftpui_disconnect (wdata); return; } if (!ret) return; askdel (transfer); }
void chmod_dialog (GtkAction * a, gpointer data) { GtkWidget *tempwid, *dialog, *hbox, *vbox; GList * templist; gftp_window_data * wdata; gftp_file * tempfle; wdata = data; if (!check_status (_("Chmod"), wdata, gftpui_common_use_threads (wdata->request), 0, 1, wdata->request->chmod != NULL)) return; dialog = gtk_dialog_new_with_buttons (_("Chmod"), GTK_WINDOW(window), 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG (dialog))), 5); gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG (dialog))), 10); tempwid = gtk_label_new (_("You can now adjust the attributes of your file(s)\nNote: Not all ftp servers support the chmod feature")); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG (dialog))), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); hbox = gtk_hbox_new (TRUE, 5); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); tempwid = gtk_frame_new (_("Special")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); suid = gtk_check_button_new_with_label (_("SUID")); gtk_box_pack_start (GTK_BOX (vbox), suid, FALSE, FALSE, 0); gtk_widget_show (suid); sgid = gtk_check_button_new_with_label (_("SGID")); gtk_box_pack_start (GTK_BOX (vbox), sgid, FALSE, FALSE, 0); gtk_widget_show (sgid); sticky = gtk_check_button_new_with_label (_("Sticky")); gtk_box_pack_start (GTK_BOX (vbox), sticky, FALSE, FALSE, 0); gtk_widget_show (sticky); tempwid = gtk_frame_new (_("User")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); ur = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), ur, FALSE, FALSE, 0); gtk_widget_show (ur); uw = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), uw, FALSE, FALSE, 0); gtk_widget_show (uw); ux = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), ux, FALSE, FALSE, 0); gtk_widget_show (ux); tempwid = gtk_frame_new (_("Group")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); gr = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), gr, FALSE, FALSE, 0); gtk_widget_show (gr); gw = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), gw, FALSE, FALSE, 0); gtk_widget_show (gw); gx = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), gx, FALSE, FALSE, 0); gtk_widget_show (gx); tempwid = gtk_frame_new (_("Other")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); or = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), or, FALSE, FALSE, 0); gtk_widget_show (or); ow = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), ow, FALSE, FALSE, 0); gtk_widget_show (ow); ox = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), ox, FALSE, FALSE, 0); gtk_widget_show (ox); GtkTreeSelection *select; GtkTreeIter iter; GtkTreeModel * model; select = gtk_tree_view_get_selection (GTK_TREE_VIEW (wdata->listbox)); if (gtk_tree_selection_count_selected_rows(select) == 1) { templist = gtk_tree_selection_get_selected_rows(select, &model); gtk_tree_model_get_iter(model, &iter, (GtkTreePath*)templist->data); gtk_tree_model_get(model, &iter, 0, &tempfle, -1); g_list_foreach (templist, (GFunc) gtk_tree_path_free, NULL); g_list_free (templist); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (suid), tempfle->st_mode & S_ISUID); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ur), tempfle->st_mode & S_IRUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (uw), tempfle->st_mode & S_IWUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ux), tempfle->st_mode & S_IXUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sgid), tempfle->st_mode & S_ISGID); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gr), tempfle->st_mode & S_IRGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gw), tempfle->st_mode & S_IWGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gx), tempfle->st_mode & S_IXGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sticky), tempfle->st_mode & S_ISVTX); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (or), tempfle->st_mode & S_IROTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ow), tempfle->st_mode & S_IWOTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ox), tempfle->st_mode & S_IXOTH); } gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_OK); gint response = gtk_dialog_run (GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_OK) { dochmod (wdata); } gtk_widget_destroy (dialog); }
void chmod_dialog (gpointer data) { GtkWidget *tempwid, *dialog, *hbox, *vbox; GList * templist, * filelist; gftp_window_data * wdata; gftp_file * tempfle; int num; wdata = data; if (!check_status (_("Chmod"), wdata, gftpui_common_use_threads (wdata->request), 0, 1, wdata->request->chmod != NULL)) return; #if GTK_MAJOR_VERSION == 1 dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dialog), _("Chmod")); gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 5); gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->action_area), TRUE); #else dialog = gtk_dialog_new_with_buttons (_("Chmod"), NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); #endif gtk_window_set_wmclass (GTK_WINDOW(dialog), "Chmod", "gFTP"); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 5); gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 10); gtk_widget_realize (dialog); if (gftp_icon != NULL) { gdk_window_set_icon (dialog->window, NULL, gftp_icon->pixmap, gftp_icon->bitmap); gdk_window_set_icon_name (dialog->window, gftp_version); } tempwid = gtk_label_new (_("You can now adjust the attributes of your file(s)\nNote: Not all ftp servers support the chmod feature")); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); hbox = gtk_hbox_new (TRUE, 5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); tempwid = gtk_frame_new (_("Special")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); suid = gtk_check_button_new_with_label (_("SUID")); gtk_box_pack_start (GTK_BOX (vbox), suid, FALSE, FALSE, 0); gtk_widget_show (suid); sgid = gtk_check_button_new_with_label (_("SGID")); gtk_box_pack_start (GTK_BOX (vbox), sgid, FALSE, FALSE, 0); gtk_widget_show (sgid); sticky = gtk_check_button_new_with_label (_("Sticky")); gtk_box_pack_start (GTK_BOX (vbox), sticky, FALSE, FALSE, 0); gtk_widget_show (sticky); tempwid = gtk_frame_new (_("User")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); ur = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), ur, FALSE, FALSE, 0); gtk_widget_show (ur); uw = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), uw, FALSE, FALSE, 0); gtk_widget_show (uw); ux = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), ux, FALSE, FALSE, 0); gtk_widget_show (ux); tempwid = gtk_frame_new (_("Group")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); gr = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), gr, FALSE, FALSE, 0); gtk_widget_show (gr); gw = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), gw, FALSE, FALSE, 0); gtk_widget_show (gw); gx = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), gx, FALSE, FALSE, 0); gtk_widget_show (gx); tempwid = gtk_frame_new (_("Other")); gtk_box_pack_start (GTK_BOX (hbox), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); vbox = gtk_vbox_new (TRUE, 5); gtk_container_add (GTK_CONTAINER (tempwid), vbox); gtk_widget_show (vbox); or = gtk_check_button_new_with_label (_("Read")); gtk_box_pack_start (GTK_BOX (vbox), or, FALSE, FALSE, 0); gtk_widget_show (or); ow = gtk_check_button_new_with_label (_("Write")); gtk_box_pack_start (GTK_BOX (vbox), ow, FALSE, FALSE, 0); gtk_widget_show (ow); ox = gtk_check_button_new_with_label (_("Execute")); gtk_box_pack_start (GTK_BOX (vbox), ox, FALSE, FALSE, 0); gtk_widget_show (ox); #if GTK_MAJOR_VERSION == 1 tempwid = gtk_button_new_with_label (_("OK")); GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT (tempwid), "clicked", GTK_SIGNAL_FUNC (dochmod), (gpointer) wdata); gtk_signal_connect_object (GTK_OBJECT (tempwid), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (dialog)); gtk_widget_grab_default (tempwid); gtk_widget_show (tempwid); tempwid = gtk_button_new_with_label (_(" Cancel ")); GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid, TRUE, TRUE, 0); gtk_signal_connect_object (GTK_OBJECT (tempwid), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (dialog)); gtk_widget_show (tempwid); #else g_signal_connect (GTK_OBJECT (dialog), "response", G_CALLBACK (chmod_action), wdata); #endif if (IS_ONE_SELECTED (wdata)) { filelist = wdata->files; templist = gftp_gtk_get_list_selection (wdata); num = 0; templist = get_next_selection (templist, &filelist, &num); tempfle = filelist->data; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (suid), tempfle->st_mode & S_ISUID); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ur), tempfle->st_mode & S_IRUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (uw), tempfle->st_mode & S_IWUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ux), tempfle->st_mode & S_IXUSR); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sgid), tempfle->st_mode & S_ISGID); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gr), tempfle->st_mode & S_IRGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gw), tempfle->st_mode & S_IWGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gx), tempfle->st_mode & S_IXGRP); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sticky), tempfle->st_mode & S_ISVTX); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (or), tempfle->st_mode & S_IROTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ow), tempfle->st_mode & S_IWOTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ox), tempfle->st_mode & S_IXOTH); } gtk_widget_show (dialog); }