Changeset 6309 for trunk/gtk/main.c
- Timestamp:
- Jul 9, 2008, 4:33:00 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/main.c
r6162 r6309 115 115 GtkWidget * prefs; 116 116 GSList * errqueue; 117 GSList * dupqueue; 117 118 GHashTable * tor2details; 118 119 GHashTable * details2tor; … … 477 478 cbdata->closing = FALSE; 478 479 cbdata->errqueue = NULL; 480 cbdata->dupqueue = NULL; 479 481 cbdata->minimized = minimized; 480 482 … … 657 659 g_slist_free( cbdata->errqueue ); 658 660 } 661 if( cbdata->dupqueue ) { 662 g_slist_foreach( cbdata->dupqueue, (GFunc)g_free, NULL ); 663 g_slist_free( cbdata->dupqueue ); 664 } 659 665 660 666 g_hash_table_destroy( cbdata->details2tor ); … … 823 829 824 830 static void 831 flushAddTorrentErrors( GtkWindow * window, const char * primary, GSList ** files ) 832 { 833 GString * s = g_string_new( NULL ); 834 GSList * l; 835 GtkWidget * w; 836 for( l=*files; l; l=l->next ) 837 g_string_append_printf( s, "%s\n", (const char*)l->data ); 838 w = gtk_message_dialog_new( window, 839 GTK_DIALOG_DESTROY_WITH_PARENT, 840 GTK_MESSAGE_ERROR, 841 GTK_BUTTONS_CLOSE, 842 primary ); 843 gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ), s->str ); 844 g_signal_connect_swapped( w, "response", 845 G_CALLBACK( gtk_widget_destroy ), w ); 846 gtk_widget_show_all( w ); 847 g_string_free( s, TRUE ); 848 849 g_slist_foreach( *files, (GFunc)g_free, NULL ); 850 g_slist_free( *files ); 851 *files = NULL; 852 } 853 854 static void 855 showTorrentErrors( struct cbdata * cbdata ) 856 { 857 if( cbdata->errqueue ) 858 flushAddTorrentErrors( GTK_WINDOW( cbdata->wind ), 859 ngettext( "Couldn't add corrupt torrent", 860 "Couldn't add corrupt torrents", 861 g_slist_length( cbdata->errqueue ) ), 862 &cbdata->errqueue ); 863 864 if( cbdata->dupqueue ) 865 flushAddTorrentErrors( GTK_WINDOW( cbdata->wind ), 866 ngettext( "Couldn't add duplicate torrent", 867 "Couldn't add duplicate torrents", 868 g_slist_length( cbdata->dupqueue ) ), 869 &cbdata->dupqueue ); 870 } 871 872 static void 825 873 coreerr( TrCore * core UNUSED, enum tr_core_err code, const char * msg, 826 874 gpointer gdata ) 827 875 { 828 struct cbdata * cbdata = gdata; 829 char * joined; 876 struct cbdata * c = gdata; 830 877 831 878 switch( code ) 832 879 { 833 case TR_CORE_ERR_ADD_TORRENT: 834 cbdata->errqueue = g_slist_append( cbdata->errqueue, 835 g_strdup( msg ) ); 836 return; 880 case TR_EINVALID: 881 c->errqueue = g_slist_append( c->errqueue, g_path_get_basename( msg ) ); 882 break; 883 884 case TR_EDUPLICATE: 885 c->dupqueue = g_slist_append( c->dupqueue, g_path_get_basename( msg ) ); 886 break; 887 837 888 case TR_CORE_ERR_NO_MORE_TORRENTS: 838 if( cbdata->errqueue ) 839 { 840 joined = joinstrlist( cbdata->errqueue, "\n" ); 841 errmsg( cbdata->wind, 842 ngettext( "Failed to load torrent file: %s", 843 "Failed to load torrent files: %s", 844 g_slist_length( cbdata->errqueue ) ), 845 joined ); 846 g_slist_foreach( cbdata->errqueue, (GFunc) g_free, NULL ); 847 g_slist_free( cbdata->errqueue ); 848 cbdata->errqueue = NULL; 849 g_free( joined ); 850 } 851 return; 889 showTorrentErrors( c ); 890 break; 891 852 892 case TR_CORE_ERR_SAVE_STATE: 853 errmsg( cbdata->wind, "%s", msg ); 854 return; 855 } 856 857 g_assert_not_reached(); 893 errmsg( c->wind, "%s", msg ); 894 break; 895 896 default: 897 g_assert_not_reached(); 898 break; 899 } 900 858 901 } 859 902
Note: See TracChangeset
for help on using the changeset viewer.