Index: trunk/src/connect.c
===================================================================
--- trunk/src/connect.c (revision 68)
+++ trunk/src/connect.c (working copy)
@@ -425,6 +425,13 @@
gtk_widget_ref (miProtocol);
if (!g_find_program_in_path ("rdesktop")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
+ miProtocol = gtk_menu_item_new_with_mnemonic ("RDPv5 (Sun Ray version)");
+ gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
+ gtk_tooltips_set_tip (tooltips, miProtocol, _("RDPv5 protocol is used to connect to Microsoft Windows XP and newer systems with uttsc."), NULL);
+ g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)5);
+ gtk_widget_ref (miProtocol);
+ if (!g_find_program_in_path ("/opt/SUNWuttsc/bin/uttsc")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
+
miProtocol = gtk_menu_item_new_with_mnemonic ("VNC");
gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
gtk_tooltips_set_tip (tooltips, miProtocol, _("VNC protocol is used to connect to systems sharing the desktop by using VNC."), NULL);
Index: trunk/src/support.c
===================================================================
--- trunk/src/support.c (revision 68)
+++ trunk/src/support.c (working copy)
@@ -832,6 +832,114 @@
c_argv[c_argc++] = g_strdup (buffer);
}
+ } else if (rdp->protocol == 5) {
+ if (g_find_program_in_path ("/opt/SUNWuttsc/bin/uttsc")) {
+ sflags += G_SPAWN_SEARCH_PATH;
+ cmd = "/opt/SUNWuttsc/bin/uttsc";
+ } else {
+ if(error) {
+ *error = g_strdup(_("/opt/SUNWuttsc/bin/uttsc was not found.\nPlease verify your SUNWuttsc installation."));
+ }
+ return 1;
+ }
+ sprintf(buffer, cmd);
+ c_argv[c_argc++] = g_strdup (buffer);
+
+ sprintf(buffer, "-T%s - %s", rdp->full_address, _("Terminal Server Client"));
+ c_argv[c_argc++] = g_strdup (buffer);
+
+ // full window mode - use all opts
+ if ( rdp->username && strlen (rdp->username) ) {
+ sprintf(buffer, "-u%s", (char*)g_strescape(rdp->username, NULL));
+ c_argv[c_argc++] = g_strdup (buffer);
+ }
+ if ( rdp->domain && strlen (rdp->domain) ) {
+ sprintf(buffer, "-d%s", (char*)g_strescape(rdp->domain, NULL));
+ c_argv[c_argc++] = g_strdup (buffer);
+ }
+
+ if ( rdp->client_hostname && strlen (rdp->client_hostname) ) {
+ sprintf(buffer, "-n%s", (char*)g_strescape(rdp->client_hostname, NULL));
+ c_argv[c_argc++] = g_strdup (buffer);
+ }
+
+ if (rdp->screen_mode_id == 2) {
+ sprintf(buffer, "-m");
+ c_argv[c_argc++] = g_strdup (buffer);
+ } else {
+ switch (rdp->desktopwidth) {
+ case 640:
+ sprintf(buffer, "-g640x480");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 800:
+ sprintf(buffer, "-g800x600");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 1024:
+ sprintf(buffer, "-g1024x768");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 1152:
+ sprintf(buffer, "-g1152x864");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 1280:
+ sprintf(buffer, "-g1280x960");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 1400:
+ sprintf(buffer, "-g1400x1050");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ default:
+ break;
+ }
+ }
+
+ switch (rdp->session_bpp) {
+ case 8:
+ sprintf(buffer, "-A8");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 15:
+ sprintf(buffer, "-A15");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 16:
+ sprintf(buffer, "-A16");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ case 24:
+ sprintf(buffer, "-A24");
+ c_argv[c_argc++] = g_strdup (buffer);
+ break;
+ default:
+ break;
+ }
+
+ // Extra Options
+ if (rdp->audiomode == 0) {
+ sprintf(buffer, "-rsound:low");
+ c_argv[c_argc++] = g_strdup (buffer);
+ } else if (rdp->audiomode == 1) {
+ sprintf(buffer, "-rsound:high");
+ c_argv[c_argc++] = g_strdup (buffer);
+ } else {
+ sprintf(buffer, "-rsound:off");
+ c_argv[c_argc++] = g_strdup (buffer);
+ }
+
+ if ( rdp->keyboard_language && strlen (rdp->keyboard_language) ) {
+ sprintf ( buffer, "-k");
+ c_argv[c_argc++] = g_strdup (buffer);
+ c_argv[c_argc++] = g_strdup (rdp->keyboard_language);
+ }
+
+ // do this shit for all modes
+ sprintf(buffer, "%s", (char*)g_strescape(rdp->full_address, NULL));
+ c_argv[c_argc++] = g_strdup (buffer);
+
}
c_argv[c_argc++] = NULL;
@@ -1133,6 +1241,12 @@
gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtProtoFile"), FALSE);
gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "chkHideWMDecorations"), TRUE);
break;
+ case 5: // rdp sunray version
+ gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtPassword"), FALSE);
+ gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "btnProtoFile"), FALSE);
+ gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtProtoFile"), FALSE);
+ gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "chkHideWMDecorations"), FALSE);
+ break;
case 1: // vnc
gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtPassword"), FALSE);
gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "vbxSound"), FALSE);
Index: trunk/src/rdpfile.c
===================================================================
--- trunk/src/rdpfile.c (revision 68)
+++ trunk/src/rdpfile.c (working copy)
@@ -274,17 +274,20 @@
widget = lookup_widget (main_window, "optProtocol");
switch (rdp->protocol) {
case 1:
- gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 2);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 3);
break;
case 2:
- gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 3);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 4);
break;
case 3:
- gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 4);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 5);
break;
case 4:
gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 1);
break;
+ case 5:
+ gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 2);
+ break;
default:
gtk_option_menu_set_history (GTK_OPTION_MENU (widget), 0);
}
@@ -548,12 +551,15 @@
rdp->protocol = 4;
break;
case 2:
+ rdp->protocol = 5;
+ break;
+ case 3:
rdp->protocol = 1;
break;
- case 3:
+ case 4:
rdp->protocol = 2;
break;
- case 4:
+ case 5:
rdp->protocol = 3;
break;
default: