⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.c

📁 linux的多线程下载工具。基于gtk界面。
💻 C
📖 第 1 页 / 共 3 页
字号:
{	//FIXME!!!!	//use the same code with ON_DELETE_EVENT!!!!!!!!!	//tray_destroy();	//dld_set_ui_callback(dld_ui_callback_null);	//gtk_main_quit();	//confirm_and_exit();	static BOOL bBusy = FALSE;	if(bBusy) return ;	bBusy = TRUE;		if(quick_question(window_main, _("Do you really want to exit DLD ?")) == GTK_RESPONSE_YES)	{		exit_dld();	}	bBusy = FALSE;}voidon_treeview_dirs_selection_changed (GtkTreeSelection *sel, GtkListStore *liststore){	GtkTreeIter  selected_row;	gpointer p = NULL;		//dprintf("[on_treeview_dirs_selection_changed] CHANGED!\r\n");		// Check if a row is selected or not             	// This will only work in SINGLE or BROWSE mode! 		if (gtk_tree_selection_get_selected(sel, NULL, &selected_row))	{		/*		gtk_widget_set_sensitive(menu_download_start_task, TRUE);		gtk_widget_set_sensitive(menu_download_stop_task, TRUE);		gtk_widget_set_sensitive(menu_download_remove_task, TRUE);				*/				gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_dirs)), &selected_row, 0, &p, -1);		g_ui_curtaskdir = (DldTaskDir *)p;				dld_gtkui_select_taskdir(g_ui_curtaskdir);				dprintf("[on_treeview_dirs_selection_changed]  g_ui_curtaskdir = %d\r\n", g_ui_curtaskdir);	}	else	{		/*		gtk_widget_set_sensitive(menu_download_start_task, FALSE);		gtk_widget_set_sensitive(menu_download_stop_task, FALSE);		gtk_widget_set_sensitive(menu_download_remove_task, FALSE);		*/	}	//dld_gtkui_set_in_gtk_action(FALSE);	}voidon_treeview_infos_selection_changed (GtkTreeSelection *sel, GtkListStore *liststore){	GtkTreeIter  selected_row;	gpointer p = NULL;		// Check if a row is selected or not             	// This will only work in SINGLE or BROWSE mode! 	if (gtk_tree_selection_get_selected(sel, NULL, &selected_row))	{		//gtk_widget_set_sensitive(menu_download_start_task, TRUE);		//gtk_widget_set_sensitive(menu_download_stop_task, TRUE);		//gtk_widget_set_sensitive(menu_download_remove_task, TRUE);		gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_infos)), &selected_row, 0, &p, -1);		//g_ui_curtaskthread = ;				dld_gtkui_select_taskthread((DldTaskThread *)p);	}	else	{		//gtk_widget_set_sensitive(menu_download_start_task, FALSE);		//gtk_widget_set_sensitive(menu_download_stop_task, FALSE);		//gtk_widget_set_sensitive(menu_download_remove_task, FALSE);		dld_gtkui_select_taskthread(NULL);	}	//dld_gtkui_set_in_gtk_action(FALSE);}voidon_treeview_tasks_selection_changed (GtkTreeSelection *sel, GtkListStore *liststore){	GtkTreeIter iter;	GtkTreeModel *model;	gint count;//	gchar *taskstr;	gpointer p = NULL;		//g_free (file_list->selected);	//file_list->selected = NULL;		count = gtk_tree_selection_count_selected_rows(sel);	if (count == 1)	{		GList *list, *last;				list = gtk_tree_selection_get_selected_rows (sel, &model);		last = g_list_last (list);		gtk_tree_model_get_iter (model, &iter, last->data);		gtk_tree_model_get (model, &iter, TREEVIEW_TASKS_COL_TASK, &p, -1);		if (p)		{			dld_gtkui_select_task((DldTask *)p);		}		g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);		g_list_free (list);	}	else	{		dld_gtkui_select_task(NULL);	}		if(count == 0)	{		gtk_widget_set_sensitive(menu_download_start_task, FALSE);		gtk_widget_set_sensitive(menu_download_stop_task, FALSE);		gtk_widget_set_sensitive(menu_download_remove_task, FALSE);		gtk_widget_set_sensitive(menu_download_delete_file, FALSE);		gtk_widget_set_sensitive(menu_download_restart_task, FALSE);		gtk_widget_set_sensitive(menu_popup_task_start_task, FALSE);		gtk_widget_set_sensitive(menu_popup_task_stop_task, FALSE);		gtk_widget_set_sensitive(menu_popup_task_remove_task, FALSE);		gtk_widget_set_sensitive(menu_popup_task_delete_file, FALSE);		gtk_widget_set_sensitive(menu_popup_task_restart_task, FALSE);			}	else	{		gtk_widget_set_sensitive(menu_download_start_task, TRUE);		gtk_widget_set_sensitive(menu_download_stop_task, TRUE);		gtk_widget_set_sensitive(menu_download_remove_task, TRUE);		gtk_widget_set_sensitive(menu_download_delete_file, TRUE);		gtk_widget_set_sensitive(menu_download_restart_task, TRUE);		gtk_widget_set_sensitive(menu_popup_task_start_task, TRUE);		gtk_widget_set_sensitive(menu_popup_task_stop_task, TRUE);		gtk_widget_set_sensitive(menu_popup_task_remove_task, TRUE);		gtk_widget_set_sensitive(menu_popup_task_delete_file, TRUE);		gtk_widget_set_sensitive(menu_popup_task_restart_task, TRUE);	}		if(g_ui_curtask == NULL)	{		gtk_widget_set_sensitive(menu_download_modify_task, FALSE);		gtk_widget_set_sensitive(menu_download_copy_url, FALSE);				gtk_widget_set_sensitive(menu_popup_task_modify_task, FALSE);		gtk_widget_set_sensitive(menu_popup_task_copy_url, FALSE);				gtk_widget_set_sensitive(menu_popup_task_open_dir, FALSE);		gtk_widget_set_sensitive(menu_popup_task_open_file, FALSE);		gtk_widget_set_sensitive(menu_popup_task_install, FALSE);	}	else	{		gtk_widget_set_sensitive(menu_download_modify_task, TRUE);		gtk_widget_set_sensitive(menu_download_copy_url, TRUE);						gtk_widget_set_sensitive(menu_popup_task_modify_task, TRUE);		gtk_widget_set_sensitive(menu_popup_task_copy_url, TRUE);				gtk_widget_set_sensitive(menu_popup_task_open_dir, TRUE);		gtk_widget_set_sensitive(menu_popup_task_open_file, (g_ui_curtask->status == DLD_TASK_FINISHED));				//FIXME!!!!!		//check if the file is installable...				gtk_widget_set_sensitive(menu_popup_task_install, os_file_installable(g_ui_curtask->localfile->str));			}}int on_treeview_tasks_button_press(GtkWidget *widget,GdkEventButton *event){	switch (event->button)	{		case 3:		{			gtk_menu_popup(GTK_MENU(menu_popup_task_menu),					   (GtkWidget *)NULL,					   (GtkWidget *)NULL,					   (GtkMenuPositionFunc)NULL,					   (gpointer)NULL,					   event->button,event->time);			break;			return TRUE;		}		case 1:		{			if (event->type==GDK_2BUTTON_PRESS)			{				//main_window_toggle();				//Main Window ...				//on_menu_popup_window_drop_show_activate(NULL, NULL);				if(g_ui_curtask != NULL)				{					if(g_ui_curtask->status == DLD_TASK_RUNNING || g_ui_curtask->status == DLD_TASK_WAITING)					{						dld_task_stop(g_ui_curtask);					}					else if(g_ui_curtask->status != DLD_TASK_FINISHED)					{						dld_task_start(g_ui_curtask);					}					else					{						on_menu_task_popup_open_file_activate(NULL, NULL);					}				}				return TRUE;			}					}	}	return FALSE;}void on_url_drag_data_received (GtkWidget          *widget,		    GdkDragContext     *context,		    gint                x,		    gint                y,		    GtkSelectionData   *data,		    guint               info,		    guint               time){	dprintf("[on_url_drag_data_received] IN! len=%d  fromat=%d  data=%s\r\n", data->length, data->format, data->data);	if (data->length >= 0 && data->format == 8) 	{		//int i;		char **files = g_strsplit ((char *)data->data, "\n", -1);				/*for (i = 0; files != NULL && files[i] != NULL; i++) 		{			//if (strncmp (files[i], "file:", strlen ("file:")) == 0)			//	add_file (files[i] + strlen ("file:"));			dprintf("[on_url_drag_data_received] URL: %s\r\n", files[i]);		}		*/		if(files != NULL && files[0] != NULL)		{			if(strnicmp(files[0], "http://", 7) == 0 || strnicmp(files[0], "ftp://", 6) == 0)			{				GtkWidget *dlg;				gchar *utfstr = NULL;				dlg = create_dialog_taskprop(NULL);				gtk_entry_set_text(GTK_ENTRY(lookup_widget(dlg, "text_url")), files[0]);								if(files[1] != NULL)				{					utfstr = g_locale_to_utf8(files[1],-1,NULL,NULL,NULL);					gtk_entry_set_text(GTK_ENTRY(lookup_widget(dlg, "text_comment")), utfstr);					g_free(utfstr);				}								gtk_widget_show(dlg);			}		}		g_strfreev (files);		gtk_drag_finish (context, TRUE, FALSE, time);	} 	else 	{		gtk_drag_finish (context, FALSE, FALSE, time);	}}/*==============================================================================================================================================================New Task Dialog Callbacks==============================================================================================================================================================*/voidon_dialog_taskprop_entry_url_changed                    (GtkEditable     *editable,                                        gpointer         user_data){	G_CONST_RETURN gchar *url;	gchar *p;	STRING *filename = NULL;	GtkWidget *wnd;		wnd = GTK_WIDGET(editable);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		url = gtk_entry_get_text(GTK_ENTRY(editable));	p = strrchr(url, '/');	if(p)	{		p++;		if(*p) filename = string_assign(filename, p);	}		if(!filename)		filename = string_assign(filename, "unknown_name");		os_adjust_filename(filename->str);	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_rename")), (gchar *)filename->str);	filename = string_free(filename);	//g_print("Edit");}voidon_dialog_taskprop_button_cancel_clicked               (GtkButton       *button,                                        gpointer         user_data){	GtkWidget *wnd;			//destroy dialog	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);	//gtk_widget_destroy(GTK_WIDGET(wnd));	//gtk_widget_hide(GTK_WIDGET(wnd));		if(gtk_window_get_modal(GTK_WINDOW(wnd)))	{		//gtk_dialog_response(GTK_DIALOG(wnd), GTK_RESPONSE_DELETE_EVENT);		gtk_widget_destroy(GTK_WIDGET(wnd));	}	else	{		gtk_widget_destroy(GTK_WIDGET(wnd));	}		g_print("Cancel");}voidon_dialog_taskprop_button_ok_clicked                   (GtkButton       *button,                                        gpointer         user_data){	GtkWidget *wnd;	//GValue value;		wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		//get settings	//g_object_get_property(wnd, "task", value);	dld_gtkui_taskprop(wnd);		//destroy dialog	if(gtk_window_get_modal(GTK_WINDOW(wnd)))	{		//gtk_dialog_response(GTK_DIALOG(wnd), GTK_RESPONSE_DELETE_EVENT);		gtk_widget_destroy(GTK_WIDGET(wnd));	}	else	{		gtk_widget_destroy(GTK_WIDGET(wnd));	}	//g_print("OK");}voidon_dialog_taskprop_category_text_changed (GtkEditable     *editable, gpointer         user_data){	GtkWidget *wnd;	CHAR *dir, *path;		wnd = GTK_WIDGET(editable);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		dir = (CHAR *)gtk_entry_get_text(GTK_ENTRY(editable));	path = dld_taskdir_get_path(dir);	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_localdir")), (gchar *)path);	dprintf("[on_dialg_new_task_category_text_changed]\r\n");}/*===========================New Dir Dialog Callbacks===========================*/voidon_dialog_new_dir_button_ok_clicked                   (GtkButton       *button,                                        gpointer         user_data){	GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		dld_gtkui_new_dir(wnd);		//destroy dialog	gtk_widget_destroy(GTK_WIDGET(wnd));	//g_print("OK");}voidon_dialog_new_dir_button_cancel_clicked               (GtkButton       *button,                                        gpointer         user_data){	GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		//get settings	//dld_gtkui_new_task(wnd);		//destroy dialog	gtk_widget_destroy(GTK_WIDGET(wnd));	//g_print("OK");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -