📄 interface.c
字号:
void setarg(char *s) {/* set arguments[n_counter] to s*/ arguments[n_counter] = s; n_counter++; }void set_string_opt(char *flag, char *s) {/* Set argument with flag + opt -- just for code cleanup*/ char *prgopt; int length; gchar *value; value=gnome_config_get_string(s); length = strlen(value); if (length != 0) { prgopt = (char *) malloc (strlen(flag) + length + 2); sprintf(prgopt, "%s%s", flag, value); setarg(prgopt); }}void set_direct_string_opt(char *flag, char *value) {/* Set argument with string (directly without fetching from config) + opt -- just for code cleanup*/ char *prgopt; int length; length = strlen(value); if (length != 0) { prgopt = (char *) malloc (strlen(flag) + length + 2); sprintf(prgopt, "%s%s", flag, value); setarg(prgopt); }}void set_flag_opt(char *flag, char *s) {/* Set argument with flag -- just for code cleanup*/ if (gnome_config_get_bool(s)) setarg(strdup(flag));}void setbutton(GtkWidget *button, gchar *s) {/* Just for code cleanup*/ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),gnome_config_get_bool(s)); }void setbutton_string(GtkWidget *checkbox, GtkWidget *entry, char *s) {/* Just for code clean up*/ if (strlen(gnome_config_get_string(s))!= 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox),TRUE); gtk_entry_set_text(GTK_ENTRY(entry),gnome_config_get_string(s)); }}void setaccordingto_string(GtkWidget *checkbox, GtkWidget *entry, gchar *s) {/* Just for code cleanup -- redundancy*/ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox))) gnome_config_set_string(s,gtk_entry_get_text(GTK_ENTRY(entry))); else gnome_config_set_string(s,"");}void setaccordingto(GtkWidget *obj, gchar *s) {/* Set the config*/ gboolean b; b=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(obj)); gnome_config_set_bool(s,b);}void getoption() {/* Get options & parameters for telnet, ssh, rlogin*/ int x; n_counter = 0; for (x=0;x <=15;x++) arguments[x] = NULL; switch (connection_type) { case 0: { // Case Telnet setarg(strdup("telnet")); gnome_config_push_prefix("gnome-telnet/gtelnet/"); // DON'T SORT THE ORDER !! Just Don't. Forbidden -- Prana Oct 21, 2000 set_flag_opt("-8",config_telnet[0]); set_flag_opt("-E",config_telnet[2]); set_flag_opt("-F",config_telnet[3]); set_flag_opt("-L",config_telnet[1]); set_string_opt("-S",config_telnet[9]); set_string_opt("-X",config_telnet[10]); set_flag_opt("-a",config_telnet[4]); set_flag_opt("-d",config_telnet[7]); set_string_opt("-e",config_telnet[8]); set_string_opt("-k",config_telnet[11]); set_string_opt("-n",config_telnet[12]); set_flag_opt("-r",config_telnet[5]); set_flag_opt("-x",config_telnet[6]); break;} // End option switch case 0 : telnet case 1: // Case SSH setarg(strdup("ssh")); gnome_config_push_prefix("gnome-telnet/gtelnet/"); // DON'T SORT THE ORDER ! It's a taboo -- Prana Oct 21, 2000 set_flag_opt("-n",config_ssh[0]); set_flag_opt("-A",config_ssh[1]); set_flag_opt("-X",config_ssh[2]); set_flag_opt("-t",config_ssh[3]); set_flag_opt("-v",config_ssh[4]); set_flag_opt("-P",config_ssh[5]); set_string_opt("-d",config_ssh[12]); set_flag_opt("-q",config_ssh[6]); set_flag_opt("-f",config_ssh[7]); set_flag_opt("-C",config_ssh[8]); set_flag_opt("-g",config_ssh[9]); set_flag_opt("-S",config_ssh[10]); set_string_opt("-i",config_ssh[12]); set_string_opt("-e",config_ssh[13]); set_string_opt("-c",config_ssh[14]); if (ssh_user) if (strcmp(ssh_user,"")) { set_direct_string_opt("-l", ssh_user); free(ssh_user); } break; // End case SSHcase 3 : { // case RLOGIN setarg(strdup("rlogin")); gnome_config_push_prefix("gnome-telnet/gtelnet/"); set_flag_opt("-8",config_ssh[0]); set_flag_opt("-E",config_ssh[1]); set_flag_opt("-K",config_ssh[2]); set_flag_opt("-L",config_ssh[3]); set_flag_opt("-d",config_ssh[4]); set_flag_opt("-x",config_ssh[5]); set_string_opt("-e",config_ssh[6]); set_string_opt("-k",config_ssh[7]);}} // End Switch host = strdup( gtk_entry_get_text(GTK_ENTRY(hostname_combo_entry)) ); setarg(host); if (connection_type==1) { port = strdup( gtk_entry_get_text(GTK_ENTRY(port_entry)) ); if (strcmp(port,"") != 0) set_direct_string_opt("-p", port); } else { port = strdup( gtk_entry_get_text(GTK_ENTRY(port_entry)) ); if (strcmp(port,"") != 0) setarg(port); } arguments[n_counter] = NULL; gnome_config_pop_prefix();}static void free_everything(void) {/* Free everything*/ int x; for (x=0;x <=15;x++) if (arguments[x]!=NULL) free(arguments[x]);}static void run_program(void) {/* When the user press "Connect" button*/ GtkWidget *msgbox; getoption(); if (strcmp(host,"")==0) { msgbox=create_message_box(_("Please fill in the host name :-)")); gtk_widget_show(msgbox); free_everything(); return; // we don't want some crash here tooo :-) } gnome_entry_prepend_history(GNOME_ENTRY(hostname_entry),TRUE,host); gtk_widget_grab_focus (term); gnome_appbar_set_status(GNOME_APPBAR(app_statusbar),"Connected"); gnome_appbar_set_progress(GNOME_APPBAR(app_statusbar),1.0); gtk_widget_show(term); switch(zvt_term_forkpty(ZVT_TERM(term), TRUE)) { case -1: on_disconnect_button_clicked(NULL,NULL); break; case 0: execvp(connect_with_program[connection_type],arguments); break; } // end switch zvt_term_forkpty free_everything();}void on_connect_button_clicked (GtkButton *button, gpointer user_data) { GtkWidget *ssh_dialog_box, *msgbox; gchar *temp_error;#ifndef HAVE_SETENV int len = 0; char *the_variable = NULL;#endif // 15th October 2000 // Check if the program is available or not... // I got a report that when SSH is not installed it cannot do SSH ;) hehehe gnome_config_push_prefix("gnome-telnet/gtelnet/");#ifdef HAVE_SETENV setenv("TERM",gnome_config_get_string("terminal_type"),1);#else// I forgot who sent me the patch for SunOS..// If you're the person, please let me know and I'll add you to the credit..// patch for SunOS 5.x or Solaris 2.x ..// dirty hack len = strlen ("TERM")+1+strlen(gnome_config_get_string("terminal_type")); the_variable = (char *) malloc (len + 1); sprintf(the_variable, "TERM=%s", gnome_config_get_string("terminal_type") ); putenv(the_variable); free (the_variable);#endif gnome_config_sync(); gnome_config_pop_prefix(); if (!gnome_is_program_in_path(connect_with_program[connection_type])) { temp_error = (char *) malloc (300); sprintf(temp_error,"'%s' has not been installed in your machine.\nPlease click the Help button on the toolbar\nand press the \"Click here for more documentation\" button", connect_with_program[connection_type]); msgbox=create_message_box(temp_error); gtk_widget_show(msgbox); free(temp_error); return; // we don't want some crash here :-) } if (connection_type!=ssh) run_program(); else if (!strchr(gtk_entry_get_text(GTK_ENTRY(hostname_combo_entry)),'@')) // if there's no username@hostname prompt for user name { ssh_dialog_box=create_ssh_dialog(); gtk_widget_show(ssh_dialog); } else run_program();}void on_term_died (ZvtTerm *term){ zvt_term_closepty(ZVT_TERM(term)); gnome_appbar_set_status(GNOME_APPBAR(app_statusbar),_("Not connected")); gnome_appbar_set_progress(GNOME_APPBAR(app_statusbar),0.0); zvt_term_reset(ZVT_TERM(term), TRUE); }void on_disconnect_button_clicked (GtkButton *button, gpointer user_data)/* When the user press "Disconnect" button*/{ zvt_term_closepty(ZVT_TERM(term)); gnome_appbar_set_status(GNOME_APPBAR(app_statusbar),_("Not connected")); gnome_appbar_set_progress(GNOME_APPBAR(app_statusbar),0.0); zvt_term_reset(ZVT_TERM(term), TRUE);}void on_about_button_clicked (GtkButton *button, gpointer user_data)/* Show up the About dialog*/{ about_dialog = create_about_dialog (); gtk_widget_show (about_dialog);}void on_preferences_button_clicked (GtkButton *button, gpointer user_data)/* Show preferences dialog*/{ gchar *s; int x; property_box = create_property_box (); gnome_config_push_prefix("gnome-telnet/gtelnet/");/*********** Doing telnet ****************/ for (x=0;x < 8; x++) setbutton(telnet_checkbox[x].widget,config_telnet[x]); setbutton_string(telnet_checkbox[8].widget,initchar_entry, config_telnet[8]); setbutton_string(telnet_checkbox[9].widget,tos_entry, config_telnet[9]); setbutton_string(telnet_checkbox[10].widget,atype_entry, config_telnet[10]); setbutton_string(telnet_checkbox[11].widget,realm_entry, config_telnet[11]); setbutton_string(telnet_checkbox[12].widget,tracefile_entry,config_telnet[12]); gnome_file_entry_set_default_path(GNOME_FILE_ENTRY(tracefiles_entry),gnome_config_get_string(config_telnet[12]));/*********** Doing ssh ****************/ for (x=0;x < 11; x++) setbutton(ssh_checkbox[x].widget,config_ssh[x]); setbutton_string(ssh_checkbox[11].widget,ssh_debug_level, config_ssh[11]); setbutton_string(ssh_checkbox[12].widget,rsa_identity, config_ssh[12]); g
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -