📄 callbacks.c
字号:
/*===========================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 + -