/* grdesktop - gtk rdesktop frontend * Copyright (C) 2002 Thorsten Sauter * * $Id: optbox.c,v 1.77 2004/03/30 12:31:44 tsauter Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "optbox.h" GtkWidget *option_box() { GtkWidget *note; GtkWidget *page1, *page2, *page3, *page4, *page5; GtkWidget *cpage1, *cpage2, *cpage3, *cpage4, *cpage5; GtkWidget *page1Box, *page2Box, *page3Box, *page4Box, *page5Box; note = gtk_notebook_new(); gtk_widget_show(note); cpage1 = gtk_label_new(_("General")); page1 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(page1), 5); gtk_notebook_insert_page(GTK_NOTEBOOK(note), page1, cpage1, -1); gtk_widget_show(page1); cpage2 = gtk_label_new(_("Display")); page2 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(page2), 5); gtk_notebook_insert_page(GTK_NOTEBOOK(note), page2, cpage2, -1); gtk_widget_show(page2); cpage3 = gtk_label_new(_("Resources")); page3 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(page3), 5); gtk_notebook_insert_page(GTK_NOTEBOOK(note), page3, cpage3, -1); gtk_widget_show(page3); cpage4 = gtk_label_new(_("Program")); page4 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(page4), 5); gtk_notebook_insert_page(GTK_NOTEBOOK(note), page4, cpage4, -1); gtk_widget_show(page4); cpage5 = gtk_label_new(_("Extended")); page5 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(page5), 5); gtk_notebook_insert_page(GTK_NOTEBOOK(note), page5, cpage5, -1); gtk_widget_show(page5); page1Box = options_page1_box(); gtk_container_add(GTK_CONTAINER(page1), page1Box); gtk_widget_show(page1Box); page2Box = options_page2_box(); gtk_container_add(GTK_CONTAINER(page2), page2Box); gtk_widget_show(page2Box); page3Box = options_page3_box(); gtk_container_add(GTK_CONTAINER(page3), page3Box); gtk_widget_show(page3Box); page4Box = options_page4_box(); gtk_container_add(GTK_CONTAINER(page4), page4Box); gtk_widget_show(page4Box); page5Box = options_page5_box(); gtk_container_add(GTK_CONTAINER(page5), page5Box); gtk_widget_show(page5Box); return(note); } GtkWidget *options_page1_box() { GtkWidget *box; GtkWidget *tbox; GtkWidget *frame1, *frame2; GtkWidget *uTable, *uTable2; GtkWidget *vboxLeft, *vboxRight, *vboxLeft2, *vboxRight2; GtkWidget *topBox, *topBox2; GtkWidget *topLabel, *topLabel2; GtkWidget *image, *image2; GtkWidget *tbl1, *tbl2; box = gtk_vbox_new(FALSE, 10); tbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), tbox, FALSE, FALSE, FALSE); gtk_widget_show(tbox); /* create logon settings box */ frame1 = gtk_frame_new(_("Logon Settings")); gtk_container_add(GTK_CONTAINER(tbox), frame1); gtk_widget_show(frame1); uTable = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable), 0); gtk_container_add(GTK_CONTAINER(frame1), uTable); gtk_widget_show(uTable); /* create the left image container */ vboxLeft = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft), 0); gtk_table_attach(GTK_TABLE(uTable), vboxLeft, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft); image = gtk_image_new_from_file(PIXDIR"/host.png"); gtk_box_pack_start(GTK_BOX(vboxLeft), image, FALSE, FALSE, FALSE); gtk_widget_show(image); /* create the main vbox to store components */ vboxRight = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight), 0); gtk_table_attach(GTK_TABLE(uTable), vboxRight, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 10, 5); gtk_widget_show(vboxRight); /* create box for the top label */ topBox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight), topBox, FALSE, FALSE, FALSE); gtk_widget_show(topBox); topLabel = gtk_label_new(_("Type the name of the computer, or\nchoose a computer from the list.")); gtk_box_pack_start(GTK_BOX(topBox), topLabel, FALSE, FALSE, FALSE); gtk_widget_show(topLabel); /* create a table for the main components and fill it */ tbl1 = gtk_table_new(1, 2, TRUE); gtk_container_border_width(GTK_CONTAINER(tbl1), 0); gtk_box_pack_start(GTK_BOX(vboxRight), tbl1, FALSE, FALSE, TRUE); gtk_widget_show(tbl1); tbl1 = gtk_table_new(5, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl1), 0); gtk_box_pack_start(GTK_BOX(vboxRight), tbl1, FALSE, FALSE, TRUE); gtk_widget_show(tbl1); insert_server(tbl1); insert_username(tbl1); insert_password(tbl1); insert_domain(tbl1); insert_savebox(tbl1); insert_rdp_protocol(tbl1); /* create open/save settings box */ frame2 = gtk_frame_new(_("Connection settings")); gtk_container_add(GTK_CONTAINER(tbox), frame2); gtk_widget_show(frame2); uTable2 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable2), 0); gtk_container_add(GTK_CONTAINER(frame2), uTable2); gtk_widget_show(uTable2); /* create the left image container */ vboxLeft2 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft2), 0); gtk_table_attach(GTK_TABLE(uTable2), vboxLeft2, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft2); image2 = gtk_image_new_from_file(PIXDIR"/folder.png"); gtk_box_pack_start(GTK_BOX(vboxLeft2), image2, FALSE, FALSE, FALSE); gtk_widget_show(image2); /* create the main vbox to store components */ vboxRight2 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight2), 0); gtk_table_attach(GTK_TABLE(uTable2), vboxRight2, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight2); /* create box for the top label */ topBox2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight2), topBox2, FALSE, FALSE, FALSE); gtk_widget_show(topBox2); topLabel2 = gtk_label_new(_("Save settings or load saved\nconnections from file.")); gtk_box_pack_start(GTK_BOX(topBox2), topLabel2, FALSE, FALSE, FALSE); gtk_widget_show(topLabel2); /* create a table for the main components and fill it */ tbl2 = gtk_table_new(1, 2, TRUE); gtk_container_border_width(GTK_CONTAINER(tbl2), 5); gtk_box_pack_start(GTK_BOX(vboxRight2), tbl2, FALSE, FALSE, FALSE); gtk_widget_show(tbl2); insert_buttons(tbl2); return(box); } GtkWidget *options_page2_box() { GtkWidget *box; GtkWidget *tbox; GtkWidget *frame1; GtkWidget *frame2; GtkWidget *uTable, *uTable2; GtkWidget *vboxLeft, *vboxRight, *vboxRight2; GtkWidget *image; GtkWidget *topBox, *topBox2; GtkWidget *topLabel, *topLabel2; GtkWidget *tbl1; GtkWidget *tbl2; box = gtk_vbox_new(FALSE, 10); tbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), tbox, FALSE, FALSE, FALSE); gtk_widget_show(tbox); /* create display settings box */ frame1 = gtk_frame_new(_("Remote desktop size")); gtk_container_add(GTK_CONTAINER(tbox), frame1); gtk_widget_show(frame1); uTable = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable), 0); gtk_container_add(GTK_CONTAINER(frame1), uTable); gtk_widget_show(uTable); /* create the left image container */ vboxLeft = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft), 0); gtk_table_attach(GTK_TABLE(uTable), vboxLeft, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft); image = gtk_image_new_from_file(PIXDIR"/monitor.png"); gtk_box_pack_start(GTK_BOX(vboxLeft), image, FALSE, FALSE, FALSE); gtk_widget_show(image); /* create the main vbox to store components */ vboxRight = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight), 0); gtk_table_attach(GTK_TABLE(uTable), vboxRight, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight); /* create box for the top label */ topBox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight), topBox, FALSE, FALSE, FALSE); gtk_widget_show(topBox); topLabel = gtk_label_new(_("Choose the size of your remote\ndesktop, or select fullscreen.")); gtk_box_pack_start(GTK_BOX(topBox), topLabel, FALSE, FALSE, FALSE); gtk_widget_show(topLabel); /* create a table for the main components and fill it */ tbl1 = gtk_table_new(1, 2, TRUE); gtk_container_border_width(GTK_CONTAINER(tbl1), 10); gtk_box_pack_start(GTK_BOX(vboxRight), tbl1, FALSE, FALSE, FALSE); gtk_widget_show(tbl1); insert_screenscroll(tbl1); /* create color settings box */ frame2 = gtk_frame_new(_("Colors")); gtk_box_pack_start(GTK_BOX(tbox), frame2, FALSE, FALSE, TRUE); gtk_widget_show(frame2); uTable2 = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable2), 0); gtk_container_add(GTK_CONTAINER(frame2), uTable2); gtk_widget_show(uTable2); /* create the main vbox to store components */ vboxRight2 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight2), 0); gtk_table_attach(GTK_TABLE(uTable2), vboxRight2, 0, 1, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight2); /* create box for the top label */ topBox2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight2), topBox2, FALSE, FALSE, FALSE); gtk_widget_show(topBox2); topLabel2 = gtk_label_new(_("Select the available colorsize\non remote box.")); gtk_box_pack_start(GTK_BOX(topBox2), topLabel2, FALSE, FALSE, FALSE); gtk_widget_show(topLabel2); tbl2 = gtk_table_new(2, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl2), 10); gtk_box_pack_start(GTK_BOX(vboxRight2), tbl2, TRUE, TRUE, TRUE); gtk_widget_show(tbl2); insert_colorsel(tbl2); return(box); } GtkWidget *options_page3_box() { GtkWidget *box; GtkWidget *tbox; GtkWidget *frame1, *frame2; GtkWidget *uTable1, *uTable2; GtkWidget *vboxRight1, *vboxLeft1; GtkWidget *vboxRight2, *vboxLeft2; GtkWidget *image1, *image2; GtkWidget *topBox1, *topBox2; GtkWidget *topLabel1, *topLabel2; GtkWidget *tbl1, *tbl2; box = gtk_vbox_new(FALSE, 10); tbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), tbox, FALSE, FALSE, FALSE); gtk_widget_show(tbox); /* create keyboard settings box */ frame1 = gtk_frame_new(_("Keyboard type")); gtk_container_add(GTK_CONTAINER(tbox), frame1); gtk_widget_show(frame1); uTable1 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable1), 0); gtk_container_add(GTK_CONTAINER(frame1), uTable1); gtk_widget_show(uTable1); /* create the left image container */ vboxLeft1 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft1), 0); gtk_table_attach(GTK_TABLE(uTable1), vboxLeft1, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft1); image1 = gtk_image_new_from_file(PIXDIR"/keyboard.png"); gtk_box_pack_start(GTK_BOX(vboxLeft1), image1, FALSE, FALSE, FALSE); gtk_widget_show(image1); /* create the main vbox to store components */ vboxRight1 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight1), 0); gtk_table_attach(GTK_TABLE(uTable1), vboxRight1, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight1); /* create box for the top label */ topBox1 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight1), topBox1, FALSE, FALSE, FALSE); gtk_widget_show(topBox1); topLabel1 = gtk_label_new(_("Select the language code for\nthe keyboard.")); gtk_box_pack_start(GTK_BOX(topBox1), topLabel1, FALSE, FALSE, FALSE); gtk_widget_show(topLabel1); /* create a table for the main components and fill it */ tbl1 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl1), 10); gtk_box_pack_start(GTK_BOX(vboxRight1), tbl1, FALSE, FALSE, TRUE); gtk_widget_show(tbl1); insert_keyboard(tbl1); /* create sound settings box */ frame2 = gtk_frame_new(_("Sound on the remote Computer")); gtk_container_add(GTK_CONTAINER(tbox), frame2); gtk_widget_show(frame2); uTable2 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable2), 0); gtk_container_add(GTK_CONTAINER(frame2), uTable2); gtk_widget_show(uTable2); /* create the left image container */ vboxLeft2 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft2), 0); gtk_table_attach(GTK_TABLE(uTable2), vboxLeft2, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft2); image2 = gtk_image_new_from_file(PIXDIR"/sound.png"); gtk_box_pack_start(GTK_BOX(vboxLeft2), image2, FALSE, FALSE, FALSE); gtk_widget_show(image2); /* create the main vbox to store components */ vboxRight2 = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight2), 0); gtk_table_attach(GTK_TABLE(uTable2), vboxRight2, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight2); /* create box for the top label */ topBox2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight2), topBox2, FALSE, FALSE, FALSE); gtk_widget_show(topBox2); topLabel2 = gtk_label_new(_("Please select which sound output you\nwould like to use.")); gtk_box_pack_start(GTK_BOX(topBox2), topLabel2, FALSE, FALSE, FALSE); gtk_widget_show(topLabel2); /* create a table for the main components and fill it */ tbl2 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl2), 10); gtk_box_pack_start(GTK_BOX(vboxRight2), tbl2, FALSE, FALSE, TRUE); gtk_widget_show(tbl2); insert_sound(tbl2); return(box); } GtkWidget *options_page4_box() { GtkWidget *box; GtkWidget *tbox; GtkWidget *frame1; GtkWidget *uTable; GtkWidget *vboxLeft, *vboxRight; GtkWidget *image; GtkWidget *topBox; GtkWidget *topLabel; GtkWidget *tbl1; box = gtk_vbox_new(FALSE, 0); tbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), tbox, FALSE, FALSE, FALSE); gtk_widget_show(tbox); /* create program settings box */ frame1 = gtk_frame_new(_("Launch Program")); gtk_container_add(GTK_CONTAINER(tbox), frame1); gtk_widget_show(frame1); uTable = gtk_table_new(1, 6, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable), 0); gtk_container_add(GTK_CONTAINER(frame1), uTable); gtk_widget_show(uTable); /* create the left image container */ vboxLeft = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft), 0); gtk_table_attach(GTK_TABLE(uTable), vboxLeft, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft); image = gtk_image_new_from_file(PIXDIR"/program.png"); gtk_box_pack_start(GTK_BOX(vboxLeft), image, FALSE, FALSE, FALSE); gtk_widget_show(image); /* create the main vbox to store components */ vboxRight = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight), 0); gtk_table_attach(GTK_TABLE(uTable), vboxRight, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight); /* create box for the top label */ topBox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight), topBox, FALSE, FALSE, FALSE); gtk_widget_show(topBox); topLabel = gtk_label_new(_("Select a program which should start\nafter connection.")); gtk_box_pack_start(GTK_BOX(topBox), topLabel, FALSE, FALSE, FALSE); gtk_widget_show(topLabel); /* create a table for the main components and fill it */ tbl1 = gtk_table_new(1, 6, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl1), 10); gtk_box_pack_start(GTK_BOX(vboxRight), tbl1, FALSE, FALSE, FALSE); gtk_widget_show(tbl1); insert_program(tbl1); return(box); } GtkWidget *options_page5_box() { GtkWidget *box; GtkWidget *tbox; GtkWidget *frame1; GtkWidget *uTable; GtkWidget *vboxLeft, *vboxRight; GtkWidget *image; GtkWidget *topBox; GtkWidget *topLabel; GtkWidget *tbl1; box = gtk_vbox_new(FALSE, 0); tbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), tbox, FALSE, FALSE, FALSE); gtk_widget_show(tbox); /* create program settings box */ frame1 = gtk_frame_new(_("Options")); gtk_container_add(GTK_CONTAINER(tbox), frame1); gtk_widget_show(frame1); uTable = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(uTable), 0); gtk_container_add(GTK_CONTAINER(frame1), uTable); gtk_widget_show(uTable); /* create the left image container */ vboxLeft = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxLeft), 0); gtk_table_attach(GTK_TABLE(uTable), vboxLeft, 0, 1, 0, 1, GTK_SHRINK, GTK_EXPAND|GTK_FILL, 5, 0); gtk_widget_show(vboxLeft); image = gtk_image_new_from_file(PIXDIR"/settings.png"); gtk_box_pack_start(GTK_BOX(vboxLeft), image, FALSE, FALSE, FALSE); gtk_widget_show(image); /* create the main vbox to store components */ vboxRight = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vboxRight), 0); gtk_table_attach(GTK_TABLE(uTable), vboxRight, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 5, 5); gtk_widget_show(vboxRight); /* create box for the top label */ topBox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vboxRight), topBox, FALSE, FALSE, FALSE); gtk_widget_show(topBox); topLabel = gtk_label_new(_("Tune your remote desktop connections.")); gtk_box_pack_start(GTK_BOX(topBox), topLabel, FALSE, FALSE, FALSE); gtk_widget_show(topLabel); /* create a table for the main components and fill it */ tbl1 = gtk_table_new(1, 2, FALSE); gtk_container_border_width(GTK_CONTAINER(tbl1), 10); gtk_box_pack_start(GTK_BOX(vboxRight), tbl1, FALSE, FALSE, FALSE); gtk_widget_show(tbl1); insert_settings(tbl1); return(box); } void insert_server(const GtkWidget *widget) { GtkWidget *lBox; GtkWidget *caption; lBox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(lBox), 0); gtk_table_attach(GTK_TABLE(widget), lBox, 0, 1, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 0); gtk_widget_show(lBox); caption = gtk_label_new(_("Computer:")); gtk_box_pack_start(GTK_BOX(lBox), caption, FALSE, FALSE, FALSE); gtk_widget_show(caption); combo_host2 = gtk_combo_new(); gtk_combo_disable_activate(GTK_COMBO(combo_host2)); g_signal_connect(G_OBJECT(GTK_COMBO(combo_host2)->entry), "changed", G_CALLBACK(sig_selchange), NULL); gtk_table_attach(GTK_TABLE(widget), combo_host2, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(combo_host2); if(hostnames != NULL) gtk_combo_set_popdown_strings(GTK_COMBO(combo_host2), hostnames); } void insert_username(const GtkWidget *widget) { GtkWidget *lBox; GtkWidget *caption; lBox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(lBox), 0); gtk_table_attach(GTK_TABLE(widget), lBox, 0, 1, 1, 2, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 0); gtk_widget_show(lBox); caption = gtk_label_new(_("Username:")); gtk_box_pack_start(GTK_BOX(lBox), caption, FALSE, FALSE, FALSE); gtk_widget_show(caption); input_username = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(input_username), MAXHOSTNAMELEN); g_signal_connect(G_OBJECT(GTK_ENTRY(input_username)), "changed", G_CALLBACK(sig_username), NULL); gtk_table_attach(GTK_TABLE(widget), input_username, 1, 2, 1, 2, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); gtk_widget_show(input_username); } void insert_password(const GtkWidget *widget) { GtkWidget *lBox; GtkWidget *caption; lBox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(lBox), 0); gtk_table_attach(GTK_TABLE(widget), lBox, 0, 1, 2, 3, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 0); gtk_widget_show(lBox); caption = gtk_label_new(_("Password:")); gtk_box_pack_start(GTK_BOX(lBox), caption, FALSE, FALSE, FALSE); gtk_widget_show(caption); input_password = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(input_password), 255); gtk_entry_set_visibility(GTK_ENTRY(input_password), FALSE); g_signal_connect(G_OBJECT(GTK_ENTRY(input_password)), "changed", G_CALLBACK(sig_password), NULL); gtk_table_attach(GTK_TABLE(widget), input_password, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); gtk_widget_show(input_password); } void insert_domain(const GtkWidget *widget) { GtkWidget *lBox; GtkWidget *caption; lBox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(lBox), 0); gtk_table_attach(GTK_TABLE(widget), lBox, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 0); gtk_widget_show(lBox); caption = gtk_label_new(_("Domain:")); gtk_box_pack_start(GTK_BOX(lBox), caption, FALSE, FALSE, FALSE); gtk_widget_show(caption); input_domain = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(input_domain), MAXHOSTNAMELEN); g_signal_connect(G_OBJECT(GTK_ENTRY(input_domain)), "changed", G_CALLBACK(sig_domain), NULL); gtk_table_attach(GTK_TABLE(widget), input_domain, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); gtk_widget_show(input_domain); } void insert_savebox(const GtkWidget *widget) { check_savepw = gtk_check_button_new_with_label(_("Save my password")); gtk_table_attach(GTK_TABLE(widget), check_savepw, 1, 2, 4, 5, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); g_signal_connect(G_OBJECT(GTK_CHECK_BUTTON(check_savepw)), "toggled", G_CALLBACK(sig_savepw), NULL); gtk_widget_show(check_savepw); } void insert_rdp_protocol(const GtkWidget *widget) { GtkWidget *menu; gint i, count; menu_rdp_proto = gtk_option_menu_new(); gtk_table_attach(GTK_TABLE(widget), menu_rdp_proto, 1, 2, 5, 6, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); gtk_widget_show(menu_rdp_proto); menu = gtk_menu_new(); count = g_list_length(rdp_protocols); for(i=0; i= Windows 2003)")); gtk_table_attach(GTK_TABLE(widget), check_attconsole, 0, 1, 5, 6, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 2); g_signal_connect(G_OBJECT(GTK_CHECK_BUTTON(check_attconsole)), "toggled", G_CALLBACK(sig_attconsole), NULL); gtk_widget_show(check_attconsole); if(iSHASH("rdp_protocol") < 1) { /* disable, it's not supported by the RDP version */ gtk_widget_set_sensitive(check_attconsole, FALSE); } else { gtk_widget_set_sensitive(check_attconsole, TRUE); } /* create the clientname editbox */ sep = gtk_hseparator_new(); gtk_table_attach(GTK_TABLE(widget), sep, 0, 1, 6, 7, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(sep); cBox1 = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(cBox1), 0); gtk_table_attach(GTK_TABLE(widget), cBox1, 0, 1, 7, 8, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(cBox1); clientnameLabel = gtk_label_new(_("Fake clientname:")); gtk_box_pack_start(GTK_BOX(cBox1), clientnameLabel, FALSE, FALSE, FALSE); gtk_widget_show(clientnameLabel); combo_clientname = gtk_combo_new(); gtk_entry_set_max_length(GTK_ENTRY(GTK_COMBO(combo_clientname)->entry), 255); g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_COMBO(combo_clientname)->entry)), "changed", G_CALLBACK(sig_clientname), NULL); gtk_table_attach(GTK_TABLE(widget), combo_clientname, 0, 1, 8, 9, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(combo_clientname); /* create the sshhost editbox */ sep2 = gtk_hseparator_new(); gtk_table_attach(GTK_TABLE(widget), sep2, 0, 1, 9, 10, /* 9-10 */ GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(sep2); cBox2 = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(cBox2), 0); gtk_table_attach(GTK_TABLE(widget), cBox2, 0, 1, 10, 11, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 5); gtk_widget_show(cBox2); check_sshopts = gtk_check_button_new_with_label( _("Enable SSH tunneling")); gtk_box_pack_start(GTK_BOX(cBox2), check_sshopts, FALSE, FALSE, FALSE); g_signal_connect(G_OBJECT(GTK_CHECK_BUTTON(check_sshopts)), "toggled", G_CALLBACK(sig_sshopts), NULL); gtk_widget_show(check_sshopts); btn_sshopts = gtk_button_new_from_stock("gtk-properties"); gtk_signal_connect(GTK_OBJECT(btn_sshopts), "clicked", GTK_SIGNAL_FUNC(sig_btn_sshopts), NULL); gtk_box_pack_end(GTK_BOX(cBox2), btn_sshopts, FALSE, FALSE, FALSE); gtk_widget_show(btn_sshopts); } void sig_username(GtkWidget *widget, gpointer data) { if(SHASH("username") != NULL) g_hash_table_replace(config, "username", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "username", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("username") == NULL) g_hash_table_remove(config, "username"); } void sig_password(GtkWidget *widget, gpointer data) { if(SHASH("password") != NULL) g_hash_table_replace(config, "password", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "password", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("password") == NULL) g_hash_table_remove(config, "password"); } void sig_domain(GtkWidget *widget, gpointer data) { if(SHASH("domain") != NULL) g_hash_table_replace(config, "domain", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "domain", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("domain") == NULL) g_hash_table_remove(config, "domain"); } void sig_savepw(GtkWidget *widget, gpointer data) { if(SHASH("savepw") != NULL) { g_hash_table_replace(config, "savepw", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "savepw", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_rdp_protocol(GtkWidget *widget, gpointer data) { gint item; item = gtk_option_menu_get_history(GTK_OPTION_MENU(menu_rdp_proto)); setBHASH("rdp_protocol", item); if(SHASH("rdp_protocol") != NULL) { g_hash_table_replace(config, "rdp_protocol", g_strdup_printf("%d", item)); } else { g_hash_table_insert(config, "rdp_protocol", g_strdup_printf("%d", item)); } if(iSHASH("rdp_protocol") < 1) { /* disable, it's not supported by the RDP version */ gtk_widget_set_sensitive(menu_colorsize, FALSE); gtk_widget_set_sensitive(check_attconsole, FALSE); gtk_widget_set_sensitive(menu_sound, FALSE); } else { gtk_widget_set_sensitive(menu_colorsize, TRUE); gtk_widget_set_sensitive(check_attconsole, TRUE); gtk_widget_set_sensitive(menu_sound, TRUE); } } void sig_savebtn(GtkWidget *widget, gpointer data) { GtkWidget *sel; sel = gtk_file_selection_new("Save rdp-File"); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(sel)->ok_button), "clicked", G_CALLBACK(sig_file_save), sel); g_signal_connect_swapped(GTK_OBJECT( GTK_FILE_SELECTION(sel)->ok_button), "clicked", G_CALLBACK(gtk_widget_destroy), sel); g_signal_connect_swapped(GTK_OBJECT( GTK_FILE_SELECTION(sel)->cancel_button), "clicked", G_CALLBACK(gtk_widget_destroy), sel); gtk_widget_show(sel); } void sig_loadbtn(GtkWidget *widget, gpointer data) { GtkWidget *sel; sel = gtk_file_selection_new("Open rdp-File"); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(sel)->ok_button), "clicked", G_CALLBACK(sig_file_open), sel); g_signal_connect_swapped(GTK_OBJECT( GTK_FILE_SELECTION(sel)->ok_button), "clicked", G_CALLBACK(gtk_widget_destroy), sel); g_signal_connect_swapped(GTK_OBJECT( GTK_FILE_SELECTION(sel)->cancel_button), "clicked", G_CALLBACK(gtk_widget_destroy), sel); gtk_widget_show(sel); } void sig_scroll(GtkWidget *widget, gpointer data) { gint value; gchar *item; gchar **split = NULL; value = (gint)gtk_range_get_value(GTK_RANGE(widget)); item = g_list_nth_data(screensize, value); if(item != NULL) { split = g_strsplit(item, "x", 2); if(split[1] != NULL) gtk_label_set_text(GTK_LABEL(geometry_label), g_strdup_printf("%s %s %s %s", split[0], g_strdup(_("by")), split[1], g_strdup(_("pixels")))); else gtk_label_set_text(GTK_LABEL(geometry_label), g_strdup_printf("%s", split[0])); if(SHASH("geometry") != NULL) g_hash_table_replace(config, "geometry", g_strdup(item)); else g_hash_table_insert(config, "geometry", g_strdup(item)); } if(split != NULL) g_strfreev(split); } void sig_colchange(GtkWidget *widget, gpointer data) { gint item; gchar *filename; item = gtk_option_menu_get_history(GTK_OPTION_MENU(menu_colorsize)); filename = g_strdup_printf("%s/%s_%d.png", PIXDIR, "colors", item+1); setBHASH("colorsize", item); if(g_file_test(filename, G_FILE_TEST_EXISTS)) gtk_image_set_from_file(GTK_IMAGE(image_colorsize), filename); if(filename != NULL) g_free(filename); if(SHASH("colorsize") != NULL) { g_hash_table_replace(config, "colorsize", g_strdup_printf("%d", item)); } else { g_hash_table_insert(config, "colorsize", g_strdup_printf("%d", item)); } } void sig_keychange(GtkWidget *widget, gpointer data) { GtkTreeSelection *sel; GtkTreeModel *model; GtkTreeIter iter; gchar *text; sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); gtk_tree_selection_get_selected(sel, &model, &iter); gtk_tree_model_get(model, &iter, 0, &text, -1); if(SHASH("keymap") != NULL) g_hash_table_replace(config, "keymap", g_strdup(g_ascii_strdown(text, -1))); else g_hash_table_insert(config, "keymap", g_strdup(g_ascii_strdown(text, -1))); if(text != NULL) g_free(text); } void sig_sound(GtkWidget *widget, gpointer data) { gint item; item = gtk_option_menu_get_history(GTK_OPTION_MENU(menu_sound)); setBHASH("sound", item); if(SHASH("sound") != NULL) { g_hash_table_replace(config, "sound", g_strdup_printf("%d", item)); } else { g_hash_table_insert(config, "sound", g_strdup_printf("%d", item)); } } void sig_program(GtkWidget *widget, gpointer data) { if(SHASH("program") != NULL) g_hash_table_replace(config, "program", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "program", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("program") == NULL) g_hash_table_remove(config, "program"); } void sig_path(GtkWidget *widget, gpointer data) { if(SHASH("ppath") != NULL) g_hash_table_replace(config, "ppath", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "ppath", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("ppath") == NULL) g_hash_table_remove(config, "ppath"); } void sig_runprog(GtkWidget *widget, gpointer data) { if(SHASH("runprog") != NULL) { g_hash_table_replace(config, "runprog", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "runprog", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } gtk_widget_set_sensitive(input_program, iSHASH("runprog")); gtk_widget_set_sensitive(input_ppath, iSHASH("runprog")); } void sig_bitmapupdate(GtkWidget *widget, gpointer data) { if(SHASH("bitmapupd") != NULL) { g_hash_table_replace(config, "bitmapupd", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "bitmapupd", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_motionevents(GtkWidget *widget, gpointer data) { if(SHASH("motionevt") != NULL) { g_hash_table_replace(config, "motionevt", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "motionevt", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_hidewmdecoration(GtkWidget *widget, gpointer data) { if(SHASH("hidewmdecoration") != NULL) { g_hash_table_replace(config, "hidewmdecoration", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "hidewmdecoration", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_noencr(GtkWidget *widget, gpointer data) { if(SHASH("noencryption") != NULL) { g_hash_table_replace(config, "noencryption", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "noencryption", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_wmkeybindings(GtkWidget *widget, gpointer data) { if(SHASH("wmkeybindings") != NULL) { g_hash_table_replace(config, "wmkeybindings", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "wmkeybindings", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_attconsole(GtkWidget *widget, gpointer data) { if(SHASH("attconsole") != NULL) { g_hash_table_replace(config, "attconsole", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "attconsole", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } } void sig_clientname(GtkWidget *widget, gpointer data) { if(SHASH("clientname") != NULL) g_hash_table_replace(config, "clientname", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); else g_hash_table_insert(config, "clientname", g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)))); if(SHASH("clientname") == NULL) g_hash_table_remove(config, "clientname"); } void sig_sshopts(GtkWidget *widget, gpointer data) { if(SHASH("usessh") != NULL) { g_hash_table_replace(config, "usessh", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } else { g_hash_table_insert(config, "usessh", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))); } gtk_widget_set_sensitive(btn_sshopts, iSHASH("usessh")); } void sig_btn_sshopts(GtkWidget *widget, gpointer data) { ssh_showbox(widget, iSHASH("usessh")); if(SHASH("usessh") != NULL) { g_hash_table_replace(config, "usessh", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_sshopts)))); } else { g_hash_table_insert(config, "usessh", g_strdup_printf("%d", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_sshopts)))); } }