patches/tsclient-04-uttsc.diff
author yippi
Mon, 27 Sep 2010 21:07:51 +0000
changeset 20108 51df67ca9307
parent 18110 93461edb1490
permissions -rw-r--r--
I had these modules listed as being owned by me, but they are really owned by wangke, correcting.

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: