#include #define _GNU_SOURCE #include #include /* this contains the callbacks and handlers for the user_info panel */ gint userinfochanged = 0; gint userinfo_audiocapable = 0; gint userinfo_videocapable = 0; gint userinfo_fileservercapable = 0; guint userinfo_defaultport = CUT_DEFAULT_PORT; gint userinfo_defaultverbosity = CUT_QUIET; gint userinfo_defaultpolicy = USER_ALLOW_CHECK; gchar *userinfo_username = NULL; gchar *userinfo_hostname = NULL; gchar *userinfo_nickname = NULL; gchar *userinfo_windowtitle = NULL; void run_user_info_panel( void ) { GladeXML * NewContactWindowXML; GtkComboBox *combo; GtkComboBox *combo2; NewContactWindowXML = ( GladeXML * ) glade_xml_new (GTK_CUTLASS_GLADEDIR "gtkcutlass.glade", "userinfo_panel", NULL ); if ( NewContactWindowXML == NULL ) g_error( "Couldn't create window for user information (gtkcutlass.glade not found?)" ); combo = GTK_COMBO_BOX( glade_xml_get_widget ( NewContactWindowXML, "cutlass_error_verbosity_combobox" ) ); if ( combo == NULL ) g_error ( "Couldn't set defualt error verbosity\n" ); gtk_combo_box_set_active( combo, CUT_QUIET ); combo2 = GTK_COMBO_BOX( glade_xml_get_widget ( NewContactWindowXML, "userinfo_filepolicy_combobox" ) ); if ( combo2 == NULL ) g_error ( "Couldn't set defualt file permissions\n" ); glade_xml_signal_autoconnect( NewContactWindowXML ) ; gtk_combo_box_set_active( combo, USER_ALLOW_CHECK ); return ; } void on_newuser_audiocapable_checkbutton_toggled ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; if ( userinfo_audiocapable == 0 ) userinfo_audiocapable = 1; else userinfo_audiocapable = 0; } void on_newuser_loadfile_button_clicked ( GtkWidget *widget, gpointer user_data ) { NotImplemented( widget ); } void on_cutlass_error_verbosity_combobox_changed ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; userinfo_defaultverbosity = gtk_combo_box_get_active( GTK_COMBO_BOX( widget ) ); } void on_userinfo_filepolicy_combobox_changed ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; userinfo_defaultpolicy = gtk_combo_box_get_active ( GTK_COMBO_BOX( widget ) ); } void on_userinfo_panel_delete_event ( GtkWidget *widget, gpointer user_data ) { exit( 0 ); } void on_newuser_cancel_button_clicked ( GtkWidget *widget, gpointer user_data ) { tellem( "This information is required.\nGTK-Cutlass cannot continue without it.\nExiting." ); exit ( -1 ); } void on_userinfo_panel_destroy_event ( GtkWidget *widget, gpointer user_data ) { exit( 0 ); } void on_newuser_defaultport_spinbutton_changed ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; userinfo_defaultport = ( guint ) gtk_spin_button_get_value ( ( GtkSpinButton * ) widget ); g_print ( "defaultport changed to %u\n", userinfo_defaultport ); } void on_newuser_username_entry_changed ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; gint length = 0; length = strlen( gtk_entry_get_text( ( GtkEntry * ) widget ) ); if ( length >= 64 ) return ; if ( userinfo_username != NULL ) g_free( userinfo_username ); userinfo_username = ( gchar * ) g_strndup( gtk_entry_get_text( ( GtkEntry * ) widget ), 63 ); userinfo_windowtitle = g_strdup_printf( "New User - %s", userinfo_username ); gtk_window_set_title( GTK_WINDOW( gtk_widget_get_toplevel( widget ) ), userinfo_windowtitle ); } void on_newuser_nickname_entry_changed ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; gint length = 0; // what is the length of the entered string? length = strlen( gtk_entry_get_text( ( GtkEntry * ) widget ) ); if ( length >= 64 ) return ; if ( userinfo_nickname != NULL ) g_free( userinfo_nickname ); userinfo_nickname = ( gchar * ) g_strndup( gtk_entry_get_text( ( GtkEntry * ) widget ), 63 ); } void on_newuser_ok_button_clicked ( GtkWidget *widget, gpointer user_data ) { extern user_info * userstuff; extern gui_status *currentstatus; // don't let them out unless the've at least changed something. if ( userinfochanged == 0 ) return ; userstuff->myname = g_strdup( userinfo_username ); userstuff->defaultalias = g_strdup( userinfo_nickname ); userstuff->localport = userinfo_defaultport; userstuff->verbosity = userinfo_defaultverbosity; userstuff->textcapable = TRUE; userstuff->videocapable = userinfo_videocapable; userstuff->audiocapable = userinfo_audiocapable; userstuff->fileserver = userinfo_fileservercapable; currentstatus->unsavedchanges = TRUE; // FIXME : Need validation here. gtk_widget_destroy( gtk_widget_get_toplevel( widget ) ); // run the key generation dialog if ( run_keygen_dialog() != 0 ) g_error ( "must generate key to use gtkcutlass.\n" ); } void on_newuser_videocapable_checkbutton_toggled ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; if ( userinfo_videocapable == 0 ) userinfo_videocapable = 1; else userinfo_videocapable = 0; } void on_newuser_fileserver_checkbutton_toggled ( GtkWidget *widget, gpointer user_data ) { userinfochanged = 1; if ( userinfo_fileservercapable == 0 ) userinfo_fileservercapable = 1; else userinfo_fileservercapable = 0; }