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

📄 main-window-callbacks.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 5 页
字号:
		    } else if (strcasecmp(sens, "Company-Confidential")==0) {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_u4);		    } else {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_u5);		    }	       } else {		    if (strcasecmp(sens, "Internal-Document")==0) {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r1);		    } else if (strcasecmp(sens, "Personal")==0) {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r2);		    } else if (strcasecmp(sens, "Private")==0) {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r3);		    } else if (strcasecmp(sens, "Company-Confidential")==0) {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r4);		    } else {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r5);		    }	       }	  } else {	       if ((msgCnt % 2) == 0) {		    /* even data */		    if (unread)		    {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->unread_even);		    } else {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->read_even);		    }	       } else {		    /* odd data */		    if (unread)		    {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->unread_odd);		    } else {			 for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->read_odd);		    }	       }	  }     }	gtk_clist_thaw (clist);     return;}void reindex_accept (GtkWidget *widget, gpointer data) {	folder_reindex (data);	folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), data);	gtk_widget_destroy (lookup_widget (widget, "yesno"));}void clicked_on_folder (GtkWidget *widget, GtkCTreeNode *node, int column) {	Folder *folder=gtk_ctree_node_get_row_data (GTK_CTREE (widget), node);	if (folder->flags & F_INDEX_MISSING) {		folder_reindex (folder);		folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window,		                "message_clist")), folder);	} else {	  folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), folder);	}}void t_clicked_on_folder (GtkWidget *widget, GdkEventButton *event, gpointer data) {	int row, column;	Folder *folder;	GtkWidget *newf;	GtkWidget *delete;	message_selection_null() ;	if (event) {		switch (event->button) {			case 1 :				gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column);				folder=gtk_clist_get_row_data (GTK_CLIST (widget), row);				break;			case 2 :				gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column);				folder=gtk_clist_get_row_data (GTK_CLIST (widget), row);				break;			case 3 :				gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column);				folder=gtk_clist_get_row_data (GTK_CLIST (widget), row);				if (folder) {					gtk_ctree_select (GTK_CTREE (widget), folder->tree_item);				} else {					return;				}				if (GTK_IS_WIDGET (tm_globs->folder_popup)) {					gtk_widget_destroy (tm_globs->folder_popup);				}				tm_globs->folder_popup=create_folder_popup ();				/*				if (tm_globs->h1>0) gtk_signal_disconnect (GTK_OBJECT (empty), tm_globs->h1); 				if (tm_globs->h2>0) gtk_signal_disconnect  (GTK_OBJECT (newf), tm_globs->h2);  			if (tm_globs->h3>0) gtk_signal_disconnect  (GTK_OBJECT (delete), tm_globs->h3);*/				//empty=lookup_widget (tm_globs->folder_popup, "empty_folder1");				newf=lookup_widget (tm_globs->folder_popup, "new_folder1");				delete=lookup_widget (tm_globs->folder_popup, "delete_folder1");				if ((strcasecmp (folder->name, "inbox")==0) ||				    (strcasecmp (folder->name, "outbox")==0) ||				    (strcasecmp (folder->name, "sent-items")==0) ||				    (strcasecmp (folder->name, "trash")==0)) {					gtk_widget_set_sensitive (delete, FALSE);				} else {					gtk_widget_set_sensitive (delete, TRUE);				}				/*				tm_globs->h1=gtk_signal_connect (GTK_OBJECT (empty), "activate",       	                    GTK_SIGNAL_FUNC (empty_folder_activate),				                    (gpointer)folder);*/ 				tm_globs->h2=gtk_signal_connect (GTK_OBJECT (newf), "activate",                            GTK_SIGNAL_FUNC (new_folder_activate),                            (gpointer)folder);  			tm_globs->h3=gtk_signal_connect (GTK_OBJECT (delete), "activate",                            GTK_SIGNAL_FUNC (delete_folder_activate),                            (gpointer)folder);				gtk_menu_popup (GTK_MENU (tm_globs->folder_popup), NULL, NULL, NULL, NULL, 3, 0);				break;		}	}}void unclicked_on_folder (GtkWidget *widget, GtkCTreeNode *node, int column) {	GtkWidget *message_clist=lookup_widget (tm_globs->main_window, "message_clist");	gtk_clist_freeze (GTK_CLIST (message_clist));	gtk_clist_clear (GTK_CLIST (message_clist));	gtk_clist_thaw (GTK_CLIST (message_clist));		tm_globs->visable=NULL;	protect_unprotect_actions (FALSE);}void message_clist_remove_row (GtkCList *clist, int row) {#if DEBUG > 5  printf ("Removing row %d\n", row);#endif}void destroy_selected_message (GtkWidget *widget, gpointer data) {	GtkWidget *message_body=lookup_widget (tm_globs->main_window, "message_body");	GtkWidget *folder_ctree=lookup_widget (tm_globs->main_window, "folder_tree");	Folder *fl = NULL, *trash;	msg_info *info=NULL;		GList *seek=NULL;	char *number;	int row;#if DEBUG > 6	printf( "destroying selected message.\n" ) ;#endif	/* different methods for getting the same thing done */	/*for (seek=message_get_selection();seek;seek=seek->next) {*/	/*for (seek=g_list_last(message_get_selection());seek;seek=g_list_previous(seek)) {*/	for (seek=message_get_selection();seek;seek=g_list_next(seek)) {		info=seek->data;		if( info ) {		  fl=folder_seek (folder_seek_by_name (info->msg->folder));		  trash=folder_seek (folder_seek_by_name ("Trash"));		  if (strcasecmp (info->msg->folder, "trash")==0) {		    trash->total--;		    if (info->msg->flags & MESSAGE_UNREAD) 		      trash->unread--;		    destroy_message (info->msg);		  } else {		    trash->total++;		    fl->total--;		    if (info->msg->flags & MESSAGE_UNREAD) {		      trash->unread++;		      fl->unread--;		    }		    if( info->msg->folder ) free( info->msg->folder ) ;		    info->msg->folder=strdup ("Trash");		  }		  row=gtk_clist_find_row_from_data (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), (gpointer)info);		  {#if DEBUG > 5		    printf( "when deleting, got a row of %d.\n", row ) ;#endif		    unclicked_ignore=TRUE;		    gtk_clist_remove (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), row);		    gtk_text_set_point (GTK_TEXT(message_body), 0);		    gtk_text_forward_delete (GTK_TEXT(message_body), gtk_text_get_length (GTK_TEXT(message_body)));		    populate_attachment_clist (NULL);		    		    number=(char *)calloc (5, sizeof(char));		    snprintf (number, 5, "%d", fl->unread);		    gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), fl->tree_item, 1, number);		    snprintf (number, 5, "%d", fl->total);		    gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), fl->tree_item, 2, number);		    		    snprintf (number, 5, "%d", trash->unread);		    gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), trash->tree_item, 1, number);		    snprintf (number, 5, "%d", trash->total);		    gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), trash->tree_item, 2, number);		    free (number);		  }		}	}	message_selection_null() ;	protect_unprotect_actions (FALSE);	/* Now, redisplay the folder */#if DEBUG > 5	printf( "Redisplaying folder.\n" ) ;#endif	folder_display( GTK_CLIST( lookup_widget( tm_globs->main_window, "message_clist" ) ), fl ) ;	return ;}void msearch_callback (GtkWidget *widget, gpointer data){	GtkWidget *msearch_window=create_msearch_window();	gtk_widget_show (msearch_window);}voidmark_unread_callback (GtkWidget * widget, gpointer data){  GList *seek = NULL;  msg_info *info = NULL;  for (seek = message_get_selection (); seek; seek = seek->next)    {      info = seek->data;      if (info)        {          Message *msg = info->msg;          Folder *vfolder = folder_seek (folder_seek_by_name (msg->folder));          GtkWidget *folder_ctree =            lookup_widget (tm_globs->main_window, "folder_tree");          char *number = (char *) calloc (5, sizeof (char));          if (info->msg->flags & MESSAGE_UNREAD)            {              msg->flags &=~ MESSAGE_UNREAD;              vfolder->unread--;              snprintf (number, 5, "%d", vfolder->unread);              gtk_ctree_node_set_text (GTK_CTREE (folder_ctree),                                       vfolder->tree_item, 1, number);              if (number)                free (number);            }          else            {              msg->flags |= MESSAGE_UNREAD;              vfolder->unread++;              snprintf (number, 5, "%d", vfolder->unread);              gtk_ctree_node_set_text (GTK_CTREE (folder_ctree),                                       vfolder->tree_item, 1, number);              if (number)                free (number);            }        }    }    message_clist_reset_shading (lookup_widget                                 (tm_globs->main_window,                                 "message_clist"));}void send_to_html_callback (GtkWidget *widget, gpointer data) {	int fd;	GtkWidget *message_body=lookup_widget (tm_globs->main_window, "message_body");	char *body=gtk_editable_get_chars (GTK_EDITABLE(message_body), 0, -1);	char *msg=strdup(body);	char *browser = getenv ("BROWSER");	char *file = "/tmp/tradeclient/tmpmsg.html";	char *command;	MimeType *tmpmtype = mime_type_search_ext ("html");	char *handler = NULL;	char *orph ;	if (tmpmtype) {		handler = (char *)calloc (strlen (orph=cut_string(tmpmtype->handle, ' ', 1, 1)), sizeof (char));		free( orph ) ;		sprintf (handler, "%s", orph=cut_string(tmpmtype->handle, ' ', 1, 1));		free( orph ) ;	}	if (browser) {		command = (char *)calloc (strlen (browser) + 10 + strlen (file) + 2, sizeof (char));		sprintf (command, "%s %s &", browser, file);	} else if (strlen (handler)) {    		command = (char *)calloc (strlen (handler) + 10 + strlen (file) + 2, sizeof (char));		sprintf (command, "%s %s &", handler, file);	} else {		command = (char *)calloc (strlen ("netscape") + 10 + strlen (file) + 2, sizeof (char));		sprintf (command, "netscape %s &", file);	}	if (handler) free (handler);	g_free(body);	mkdir ("/tmp/tradeclient", S_IREAD | S_IWRITE | S_IEXEC);	fd=open ("/tmp/tradeclient/tmpmsg.html",		O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR);	if (fd<0) {		perror ("Cannot open /tmp/tradeclient/tmpmsg.html");		return;	}	write (fd, msg, strlen (msg));	close (fd);	if (command) {		system (command);		free (command);	}}void delete_activate (GtkWidget *widget, gpointer data) {	destroy_selected_message (widget, data);	destroy_message_popup (widget, data);}void send_on_its_merry_way_stream (char *msg, char *type) {	char *email, *first, *last;	GtkWidget *window;	GtkTree *tree;	Header_Info *info;	RecipSignalData *recip ;	char *head;	int hsize;	if (!msg) {		return;	}	if (!type)		type=strdup ("Re:");	hsize=message_hsize (msg);	head=(char *)calloc (hsize, sizeof (char));	memmove (head, msg, hsize);	info=parse_header (head);	free (head);	recip = (RecipSignalData *)calloc( 1, sizeof(RecipSignalData) ) ;	window=make_new_message_window (NULL, NULL);		if (strcasecmp (type, "re:")==0) {		tree=GTK_TREE (lw (window, "recip_tree"));		if ((info->replyto)&&(strlen(info->replyto)>0))		{                        if (!parse_from_line (info->replyto, &email, &first, &last)) {                                if (email) free (email);                                if (first) free (first);                                if (last) free (last);                        	if (!parse_from_line (info->from, &email, &first, &last)) {                        	        insert_warning ("Unable to parse from line\n");                        	        if (email) free (email);                        	        if (first) free (first);                        	        if (last) free (last);                        	        return;                        	}			}		}		else		{			if (!parse_from_line (info->from, &email, &first, &last)) {				insert_warning ("Unable to parse from line\n");				if (email) free (email);				if (first) free (first);				if (last) free (last);				return;			}		}		gtk_tree_clear_items (tree, 0, g_list_length (tree->children));		recip -> tree = tree ;		recip -> email = email ;		recip -> type = 0 ;		new_message_window_add_recip( NULL, recip ) ;// TREY		if (email) free (email);		if (first) free (first);		if (last) free (last);	}	if (info->subject) {		if (strncasecmp (info->subject, type, strlen (type))==0) {			gtk_entry_set_text (GTK_ENTRY (lw (window, "subject_entry")), info->subject);		} else {			email=(char *)calloc (strlen (info->subject) + 10, sizeof (char));			sprintf (email, "%s %s", type, info->subject);			gtk_entry_set_text (GTK_ENTRY (lw (window, "subject_entry")), email);			free (email);		}	}	if (strcasecmp (type, "re:")==0 && tm_globs->flags & REPLY_NONE)		return;	if (tm_globs->flags & REPLY_QUOTED && strcasecmp (type, "re:")==0) {		char *message ;		GtkText *text=GTK_TEXT (lw (window, "body_textbox"));		message = message_get_reply_quoted_stream( msg ) ;		/* Please the new text into the compose message window. */		gtk_text_insert (text, NULL, NULL, NULL, message, -1);		free (message);	} else {		GtkCList *clist=GTK_CLIST (lw (window, "attachment_clist"));		AFS *afs;

⌨️ 快捷键说明

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