📄 interface.c
字号:
connect_via_menu = gtk_menu_new (); add_menu_item (selectconnection, "telnet", connect_via_menu, (void *)0); add_menu_item (selectconnection, "ssh", connect_via_menu, (void *)1); add_menu_item (selectconnection, "rlogin", connect_via_menu, (void *)2); gtk_option_menu_set_menu (GTK_OPTION_MENU (connect_via), connect_via_menu); // for handling cmdline param if (x_count > 1) { if (!strcmp(x_choice,"telnet")) connection_type = 0; else if (!strcmp(x_choice,"ssh")) connection_type = 1; else if (!strcmp(x_choice,"rlogin")) connection_type = 2; } gtk_option_menu_set_history(GTK_OPTION_MENU(connect_via),connection_type); host_label=new_label(main_window, "host_label",_(" Host name ")); gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), host_label,NULL, NULL); hostname_entry = gnome_entry_new ("host_history"); gnome_entry_load_history(GNOME_ENTRY(hostname_entry)); gtk_widget_ref (hostname_entry); gtk_object_set_data_full (GTK_OBJECT (main_window), "hostname_entry", hostname_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hostname_entry); gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), hostname_entry, NULL, NULL); hostname_combo_entry = gnome_entry_gtk_entry (GNOME_ENTRY (hostname_entry)); gtk_widget_ref (hostname_combo_entry); gtk_object_set_data_full (GTK_OBJECT (main_window), "hostname_combo_entry", hostname_combo_entry, (GtkDestroyNotify) gtk_widget_unref); if (x_count > 1) gtk_entry_set_text (GTK_ENTRY (hostname_combo_entry),x_hostname); else if (x_count > 3 && !atoi(x_port)) { int length = strlen(x_port)+1+strlen(x_hostname); char *temp = (char *) malloc (length+1); snprintf(temp, length+1, "%s@%s", x_port, x_hostname); gtk_entry_set_text (GTK_ENTRY (hostname_combo_entry),temp); free (temp); } gtk_widget_show (hostname_combo_entry); port_label=new_label(main_window, "port_label",_(" Port ")); gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), port_label, NULL, NULL); port_entry = new_entry(main_window,"port_entry"); if ((x_count > 3) && atoi(x_port)) gtk_entry_set_text (GTK_ENTRY (port_entry),x_port); gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), port_entry, _("port number -- leave blank for default"), NULL); gtk_widget_set_usize (port_entry, 50, -2);// Make the toolbar button connect_button=new_toolbar_button(main_window,toolbar,GNOME_STOCK_PIXMAP_EXEC,"connect_button", _("Connect"), _("Connect to the remote host")); disconnect_button = new_toolbar_button(main_window,toolbar,GNOME_STOCK_PIXMAP_STOP,"disconnect_button", _("Disconnect"), _("Disconnect from the remote host")); preferences_button = new_toolbar_button(main_window,toolbar,GNOME_STOCK_PIXMAP_PREFERENCES,"preferences_button", _("Preferences"), _("Change your settings")); about_button = new_toolbar_button(main_window,toolbar,GNOME_STOCK_PIXMAP_HELP,"help_button", _("Help"), _("Documentation")); vbox8 = new_box(main_window,"vbox8",vertbox); gnome_app_set_contents (GNOME_APP (main_window), vbox8); entry6 = new_entry(main_window,"entry6"); gtk_box_pack_start (GTK_BOX (vbox8), entry6, FALSE, FALSE, 0); gtk_widget_set_usize (entry6, -2, 4); hbox4 = new_box(main_window,"hbox4",horzbox); gtk_box_pack_start (GTK_BOX (vbox8), hbox4, TRUE, TRUE, 0);///////////////////////////////////////////////////////////////////////////////////////////////* Make term */ term = zvt_term_new_with_size(81,24); gtk_widget_ref (term); gtk_object_set_data_full (GTK_OBJECT (main_window), "term", term,(GtkDestroyNotify) gtk_widget_unref); GTK_WIDGET_SET_FLAGS(term,GTK_HAS_FOCUS + GTK_CAN_FOCUS + GTK_VISIBLE + GTK_SENSITIVE + GTK_HAS_GRAB); gtk_widget_show (term); gtk_box_pack_start (GTK_BOX (hbox4), term, TRUE, TRUE, 0);///////////////////////////////////////////////////////////////////////////////////////////// vscrollbar1 = gtk_vscrollbar_new (GTK_ADJUSTMENT (ZVT_TERM(term)->adjustment)); gtk_widget_ref (vscrollbar1); gtk_object_set_data_full (GTK_OBJECT (main_window), "vscrollbar1", vscrollbar1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vscrollbar1); gtk_box_pack_end (GTK_BOX (hbox4), vscrollbar1, FALSE, FALSE, 0); app_statusbar = gnome_appbar_new (TRUE, TRUE, GNOME_PREFERENCES_NEVER); gtk_widget_ref (app_statusbar); gtk_object_set_data_full (GTK_OBJECT (main_window), "app_statusbar", app_statusbar, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (app_statusbar); gnome_app_set_statusbar (GNOME_APP (main_window), app_statusbar); gtk_signal_connect(GTK_OBJECT (main_window), "delete_event", GTK_SIGNAL_FUNC(destroy_win), NULL); gtk_signal_connect(GTK_OBJECT (connect_button), "clicked", GTK_SIGNAL_FUNC (on_connect_button_clicked), NULL); gtk_signal_connect(GTK_OBJECT (disconnect_button), "clicked", GTK_SIGNAL_FUNC (on_disconnect_button_clicked),NULL); gtk_signal_connect(GTK_OBJECT (term), "child_died", GTK_SIGNAL_FUNC (on_disconnect_button_clicked), NULL); gtk_signal_connect(GTK_OBJECT (term), "destroy", GTK_SIGNAL_FUNC (on_disconnect_button_clicked), NULL); gtk_signal_connect(GTK_OBJECT (preferences_button), "clicked",GTK_SIGNAL_FUNC (on_preferences_button_clicked), NULL); gtk_signal_connect(GTK_OBJECT (about_button), "clicked", GTK_SIGNAL_FUNC (on_about_button_clicked), NULL); gtk_signal_connect(GTK_OBJECT (entry6), "enter_notify_event", GTK_SIGNAL_FUNC (on_dock_leave), NULL); gtk_signal_connect(GTK_OBJECT (hostname_combo_entry), "activate", GTK_SIGNAL_FUNC (on_connect_button_clicked), NULL); gtk_widget_grab_focus (hostname_entry); if (x_count > 1) // if it has 1 param (telnet/ssh/rlogin) + a host on_connect_button_clicked(NULL, NULL); return main_window;}void show_term(void)/* Show the terminal window*/{ zvt_term_set_font_name(ZVT_TERM(term), fontstr); zvt_term_set_background(ZVT_TERM(term),image_file_location,bgimg_transparent,4); //addition since v1.2 // The following line HAS TO BE AFTER gtk_widget_show (main_window), otherwise it will crash with Segmentation Fault zvt_term_set_del_key_swap(ZVT_TERM(term),swap_del_backspace); zvt_term_set_color_scheme(ZVT_TERM(term), red, green,blue);}GtkWidget* create_message_box (gchar * s) {/* Message box for displaying errors*/ GtkWidget *dialog_vbox3; GtkWidget *button5; GtkWidget *dialog_action_area3; GtkWidget *message_box; message_box = gnome_message_box_new (s,GNOME_MESSAGE_BOX_INFO, NULL); gtk_object_set_data (GTK_OBJECT (message_box), "message_box", message_box); gtk_window_set_title (GTK_WINDOW (message_box), _("Information")); gtk_window_set_position (GTK_WINDOW (message_box), GTK_WIN_POS_CENTER); gtk_window_set_modal (GTK_WINDOW (message_box), TRUE); gtk_window_set_policy (GTK_WINDOW (message_box), FALSE, FALSE, FALSE); gnome_dialog_close_hides (GNOME_DIALOG (message_box), TRUE); dialog_vbox3 = GNOME_DIALOG (message_box)->vbox; gtk_object_set_data (GTK_OBJECT (message_box), "dialog_vbox3", dialog_vbox3); gtk_widget_show (dialog_vbox3); gnome_dialog_append_button (GNOME_DIALOG (message_box), GNOME_STOCK_BUTTON_OK); button5 = g_list_last (GNOME_DIALOG (message_box)->buttons)->data; gtk_widget_ref (button5); gtk_object_set_data_full (GTK_OBJECT (message_box), "button5", button5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (button5); GTK_WIDGET_SET_FLAGS (button5, GTK_CAN_DEFAULT); dialog_action_area3 = GNOME_DIALOG (message_box)->action_area; gtk_widget_ref (dialog_action_area3); gtk_object_set_data_full (GTK_OBJECT (message_box), "dialog_action_area3", dialog_action_area3, (GtkDestroyNotify) gtk_widget_unref); return message_box;}GtkWidget* create_about_dialog (void)/* Give credits to people who participated making gnome-telnet*/{ GtkWidget *button8; GtkWidget *about_dialog; GtkWidget *dialog_vbox4; GtkWidget *notebook2; GtkWidget *vbox7; GtkWidget *vbox6; GtkWidget *hbox1; GtkWidget *scrolledwindow1; GtkWidget *text1; GtkWidget *text3; GtkWidget *pixmap2; GtkWidget *pixmap3; GtkWidget *table10; GtkWidget *label12; GtkWidget *label13; GtkWidget *label21; GtkWidget *label22; GtkWidget *label23; GtkWidget *label24; GtkWidget *label25; GtkWidget *label27; GtkWidget *label33; GtkWidget *label34; GtkWidget *href1; GtkWidget *href2; GtkWidget *href3; GtkWidget *href6; GtkWidget *href7; GtkWidget *scrolledwindow4; GtkWidget *scrolledwindow2; GtkWidget *text2; GtkWidget *dialog_action_area4; about_dialog = gnome_dialog_new (_("About GTelnet"), NULL); gtk_object_set_data (GTK_OBJECT (about_dialog), "about_dialog", about_dialog); gtk_widget_set_usize (about_dialog, 600, -2); gtk_window_set_policy (GTK_WINDOW (about_dialog), FALSE, FALSE, FALSE); dialog_vbox4 = GNOME_DIALOG (about_dialog)->vbox; gtk_object_set_data (GTK_OBJECT (about_dialog), "dialog_vbox4", dialog_vbox4); gtk_widget_show (dialog_vbox4); notebook2 = gtk_notebook_new (); gtk_widget_ref (notebook2); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "notebook2", notebook2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (notebook2); gtk_box_pack_start (GTK_BOX (dialog_vbox4), notebook2, TRUE, TRUE, 0); vbox7 = new_box(about_dialog,"vbox7", vertbox); gtk_container_add (GTK_CONTAINER (notebook2), vbox7); href7 = gnome_href_new ("ghelp:/usr/share/doc/gnome-telnet-2.5/index.html", _("Click here for a complete documentation")); gtk_widget_ref (href7); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "href7", href7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (href7); gtk_box_pack_start (GTK_BOX (vbox7), href7, FALSE, FALSE, 0); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_ref (scrolledwindow1); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "scrolledwindow1", scrolledwindow1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow1); gtk_box_pack_start (GTK_BOX (vbox7), scrolledwindow1, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); text1 = gtk_text_new (NULL, NULL); gtk_widget_ref (text1); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "text1", text1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (text1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), text1); gtk_text_insert (GTK_TEXT (text1), NULL, NULL, NULL, _("GTelnet is a frontend for the following programs:\n\n- Telnet: to communicate with another host using the TELNET protocol. \n\n- SSH: ssh (Secure Shell) is a program for logging into a remote machine and for executing commands on a remote machine. It is intended to replace rlogin and rsh, and provide secure encrypted communications between two untrusted hosts over an insecure network. X11 connections and arbitrary TCP/IP ports can also be forwarded over the secure channel. (Copied from SSH manual)\n\n- RLogin: rlogin is a program that is a little bit similar to telnet. It is intended to make remote administration over local area network easier, but it can be very insecure. It is recommended that you use SSH instead of rlogin."), 733); label33 = new_label (about_dialog,"doc_label",_("Documentation")); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 0), label33); vbox6 = new_box(about_dialog,"vbox6",vertbox); gtk_container_add (GTK_CONTAINER (notebook2), vbox6); hbox1 = new_box(about_dialog,"hbox1", horzbox); gtk_box_pack_start (GTK_BOX (vbox6), hbox1, TRUE, TRUE, 0); pixmap2 = gnome_pixmap_new_from_xpm_d(gnome_telnet_xpm); gtk_widget_ref (pixmap2); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "pixmap2", pixmap2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pixmap2); gtk_box_pack_start (GTK_BOX (hbox1), pixmap2, TRUE, TRUE, 0); label21 = new_label (about_dialog,"about_label","Gnome Telnet v2.5"); label22 = new_label (about_dialog,"copyright_label",_("Copyright (C) 2000 the Free Software Foundation")); label23 = new_label (about_dialog,"blank",""); label24 = new_label (about_dialog,"desc",_("GTelnet is a frontend to the ole good telnet, ssh, and rlogin")); label25 = new_label (about_dialog,"blank",""); label27 = new_label (about_dialog,"auth_label",_("Authors: ")); gtk_box_pack_start (GTK_BOX (vbox6), label21, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox6), label22, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox6), label23, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox6), label24, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox6), label25, FALSE, FALSE, 0); href1 = gnome_href_new ("http://www.cyest.org", "http://www.cyest.org"); gtk_widget_ref (href1); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "href1", href1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (href1); gtk_box_pack_start (GTK_BOX (vbox6), href1, FALSE, FALSE, 0); href2 = gnome_href_new ("http://www.cyest.org/resume-pranagunadi.html", "My resume"); gtk_widget_ref (href2); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "href2", href2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (href2); gtk_box_pack_start (GTK_BOX (vbox6), href2, FALSE, FALSE, 0); href3 = gnome_href_new ("http://www.cyest.org/modules.php?name=Software", "My portfolio"); gtk_widget_ref (href3); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "href3", href3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (href3); gtk_box_pack_start (GTK_BOX (vbox6), href3, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox6), label27, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label27), 0, 0.5); scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_ref (scrolledwindow4); gtk_object_set_data_full (GTK_OBJECT (about_dialog), "scrolledwindow4", scrolledwindow4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow4); gtk_box_pack_start (GTK_BOX (vbox6), scrolledwindow4, TRUE, TRUE, 0); gtk_widget_set_usize (scrolledwindow4, -2, 80); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); text3 = gtk_text_new (NULL, NULL); gtk_widget_ref (text3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -