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

📄 callbacks.c

📁 linux的多线程下载工具。基于gtk界面。
💻 C
📖 第 1 页 / 共 3 页
字号:
/*===========================System Options Dialog Callbacks===========================*/voidon_dialog_options_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);	dld_gtkui_set_global_config(wnd);		//destroy dialog	gtk_widget_destroy(GTK_WIDGET(wnd));	//g_print("OK");}voidon_dialog_options_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");}/*==========================================================URL Drop Window Callbacks============================================================*/static gint window_drop_move_x = 0;static gint window_drop_move_y = 0;static gboolean window_drop_moveable = FALSE;static gint window_drop_x = 0;static gint window_drop_y = 0;void on_window_drop_motion(GtkWidget *widget,GdkEventMotion *event){	if (window_drop_moveable){		gint mx,my;		GdkModifierType modmask;		gdk_window_get_pointer((GdkWindow *)NULL, &mx, &my, &modmask);		window_drop_move_x += mx-window_drop_x;		window_drop_move_y += my-window_drop_y;		gdk_window_move(widget->window,				window_drop_move_x,				window_drop_move_y);		window_drop_x = mx;		window_drop_y = my;		gdk_flush();	};};int on_window_drop_button_release(GtkWidget *widget,GdkEventButton *event){	gdk_pointer_ungrab(GDK_CURRENT_TIME);    gdk_flush();	window_drop_moveable=0;	gtk_grab_remove (widget);	gdk_pointer_ungrab (0);		int x,y;	gtk_window_get_position (GTK_WINDOW(widget), &x, &y);					dld_config_write_int(NULL,"window_drop_x", x);		dld_config_write_int(NULL,"window_drop_y", y);	return 1;}; 		gbooleanon_window_drop_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data){	switch (event->button){		case 3:		{			gtk_menu_popup(GTK_MENU(menu_popup_window_drop_menu),					   (GtkWidget *)NULL,					   (GtkWidget *)NULL,					   (GtkMenuPositionFunc)NULL,					   (gpointer)NULL,					   event->button,event->time);			break;		};				case 1:		{			if (event->type==GDK_2BUTTON_PRESS)			{				//main_window_toggle();				//Main Window ...				on_menu_popup_window_drop_show_activate(NULL, NULL);			}			else			{				if (!window_drop_moveable)				{					int x,y;					gtk_window_get_position (GTK_WINDOW(widget), &x, &y);														//window_drop_move_x = CFG.DND_TRASH_X;					//window_drop_move_y = CFG.DND_TRASH_Y;					window_drop_move_x = x;					window_drop_move_y = y;										window_drop_moveable = TRUE;					window_drop_x = (gint)(event->x_root);					window_drop_y = (gint)(event->y_root);					gtk_grab_add (widget);					gdk_pointer_grab (widget->window,TRUE, (GdkEventMask)(GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK), NULL, NULL, 0);				}			}			break;		}		case 2:		{			//init_add_window();			break;		}	}	return TRUE;}gbooleanon_window_drop_expose_event           (GtkWidget       *widget,GdkEventExpose  *event,gpointer         user_data){	dld_gtkui_draw_window_drop(-1); //Refresh Only!		  	return TRUE;}/*==========================================================Dialog Proxy Settings Callbacks============================================================*/voidon_treeview_proxys_selection_changed (GtkTreeSelection *sel, GtkListStore *liststore){	//GtkTreeIter  selected_row;	GtkTreeModel *model;	GtkTreeIter iter;		gpointer p = NULL;	DldProxy *proxy = NULL;		GtkWidget *wnd;	wnd = GTK_WIDGET(treeview_proxys);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		if(gtk_tree_selection_get_selected(sel , &model, &iter))	{		gtk_tree_model_get(model, &iter, 0, &p, -1);			proxy = p;	}	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_name")), proxy->name->str);	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "combo_type_text")), proxy->type->str);	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_username")), proxy->username->str);	gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_password")), proxy->password->str);		gtk_entry_set_text(GTK_ENTRY(lookup_widget(wnd, "text_hostport")), proxy->host->str);	gtk_entry_append_text(GTK_ENTRY(lookup_widget(wnd, "text_hostport")), ":");	gtk_entry_append_text(GTK_ENTRY(lookup_widget(wnd, "text_hostport")), proxy->port->str);}voidon_dialog_proxy_settings_button_cancel_clicked  (GtkButton       *button,  gpointer  user_data){	//This is a hidden button now	//do nothing}voidon_dialog_proxy_settings_button_ok_clicked  (GtkButton       *button,  gpointer  user_data){	//Just close the dialog	GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);	treeview_proxys = NULL;	treeview_proxys_store = NULL;		gtk_widget_destroy(wnd);}voidon_dialog_proxy_settings_button_add_clicked  (GtkButton       *button,  gpointer  user_data){	DldProxy *proxy = NULL;	GtkWidget *wnd;		gchar *hostport, *name ,*type, *username, *password;	gchar host[100], port[20];		wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);			hostport = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_hostport")));	if(strchr(hostport, ':') == NULL || strchr(hostport, ':') >= hostport + 100)	{		quick_message(wnd, _("Invalid HOST:PORT.\nFor example: 111.222.111.222:8080"));		return;	}			snprintf(host, sizeof(host), "%s", hostport);	*strchr(host,':') = 0;	strncpy(port, strchr(hostport,':') + 1, sizeof(port));		name = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_name")));	if(dld_proxymgr_get_proxy(name) != NULL || strlen(name) == 0)	{		quick_message(wnd, _("There has been a proxy with the same name.\nPlease change the new name."));		return;	}		type = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_type_text")));	username = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_username")));	password = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_password")));		proxy = dld_proxy_new(name, host, port, username, password, type);	dld_proxymgr_add_proxy(proxy);	dld_proxymgr_save_proxys();	dld_ui_callback(DLD_UICMD_ADD_PROXY, proxy);	}voidon_dialog_proxy_settings_button_modify_clicked  (GtkButton       *button,  gpointer  user_data){	GtkTreeSelection *sel;	GtkTreeIter iter;	GtkTreeModel *model;	gpointer p = NULL;	DldProxy *proxy = NULL;	gchar *hostport, *name ,*type, *username, *password;	gchar host[100], port[20];		GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);	sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_proxys));	if(gtk_tree_selection_get_selected(sel , &model, &iter))	{		gtk_tree_model_get(model, &iter, 0, &p, -1);			//proxy = (DldProxy *)p;		//now p points to the selected proxy	}	else	{		quick_message(wnd, _("No proxy is selected."));		return;	}	name = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_name")));	proxy = dld_proxymgr_get_proxy(name);	if((proxy != p && proxy != NULL) || strlen(name) == 0)	{		quick_message(wnd, _("There has been a proxy with the same name.\nPlease change the new name."));		return;	}	if(proxy == NULL) proxy = (DldProxy *)p;		hostport = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_hostport")));	if(strchr(hostport, ':') == NULL || strchr(hostport, ':') >= hostport + 100)	{		quick_message(wnd, _("Invalid HOST:PORT.\nFor example: 111.222.111.222:8080"));		return;	}			snprintf(host, sizeof(host), "%s", hostport);	*strchr(host,':') = 0;	strncpy(port, strchr(hostport,':') + 1, sizeof(port));			type = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_type_text")));	username = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_username")));	password = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "text_password")));		proxy->name = string_assign(proxy->name, name);	proxy->host = string_assign(proxy->host, host);	proxy->port = string_assign(proxy->port, port);	proxy->type = string_assign(proxy->type, type);	proxy->username = string_assign(proxy->username, username);	proxy->password = string_assign(proxy->password, password);		dld_proxymgr_save_proxys();	dld_ui_callback(DLD_UICMD_MODIFY_PROXY, proxy);}voidon_dialog_proxy_settings_button_remove_clicked  (GtkButton       *button,  gpointer  user_data){	GtkTreeSelection *sel;	GtkTreeIter iter;	GtkTreeModel *model;	gpointer p = NULL;		sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_proxys));	if(gtk_tree_selection_get_selected(sel , &model, &iter))	{		gtk_tree_model_get(model, &iter, 0, &p, -1);			if(p)		{			dld_ui_callback(DLD_UICMD_REMOVE_PROXY, p);			dld_proxymgr_remove_proxy((DldProxy *)p);			dld_ui_callback(DLD_UICMD_REMOVE_PROXY, (DldProxy *)p);		}	}	dld_proxymgr_save_proxys();	}voidon_dialog_proxy_settings_close         (GtkDialog       *dialog,                                        gpointer         user_data){	treeview_proxys = NULL;	treeview_proxys_store = NULL;}/*==========================================================Dialog Shell Programs Callbacks============================================================*/voidon_dialog_shell_programs_button_cancel_clicked  (GtkButton       *button,  gpointer  user_data){	GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);		gtk_widget_destroy(wnd);}voidon_dialog_shell_programs_button_ok_clicked  (GtkButton       *button,  gpointer  user_data){	GtkWidget *wnd;	wnd = GTK_WIDGET(button);	while(wnd->parent) wnd = GTK_WIDGET(wnd->parent);	gchar *filemanager = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_filemanager_text")));		gchar *browser = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_browser_text")));		gchar *ark = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_ark_text")));		gchar *terminal = (gchar *)gtk_entry_get_text(GTK_ENTRY(lookup_widget(wnd, "combo_terminal_text")));		g_shellprograms.filemanager = string_assign(g_shellprograms.filemanager, filemanager);	g_shellprograms.browser = string_assign(g_shellprograms.browser, browser);	g_shellprograms.ark = string_assign(g_shellprograms.ark, ark);	g_shellprograms.terminal = string_assign(g_shellprograms.terminal, terminal);		dld_taskmgr_save_shell_programs();		gtk_widget_destroy(wnd);}/*==========================================================TopTip Window Callbacks============================================================*/gbooleanon_toptip_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data){	gtk_widget_hide(widget);	return FALSE;}

⌨️ 快捷键说明

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