tsclient - Initial add.
[vuplus_openembedded] / packages / tsclient / tsclient-0.132 / fixes.patch
1 # tsclient patch 
2 # Copyright (C) 2004, Advanced Micro Devices, Inc.  All Rights Reserved
3 # Released under the GPL license 
4
5 diff -urN tsclient-0.132/Makefile.am tsclient-0.132.diff/Makefile.am
6 --- tsclient-0.132/Makefile.am  2003-11-08 16:21:32.000000000 -0700
7 +++ tsclient-0.132.diff/Makefile.am     2004-08-24 16:53:40.000000000 -0600
8 @@ -1,6 +1,6 @@
9  ## Process this file with automake to produce Makefile.in
10  
11 -SUBDIRS = src applet po
12 +SUBDIRS = @SDIRS@ 
13  
14  appicondir = $(datadir)/pixmaps
15  appicon_DATA = tsclient.png
16 diff -urN tsclient-0.132/configure.in tsclient-0.132.diff/configure.in
17 --- tsclient-0.132/configure.in 2003-11-09 00:09:31.000000000 -0700
18 +++ tsclient-0.132.diff/configure.in    2004-08-24 16:57:35.000000000 -0600
19 @@ -12,8 +12,30 @@
20  AM_PROG_CC_STDC
21  AC_HEADER_STDC
22  
23 -pkg_modules="libgnomeui-2.0"
24 -pkg_modules="libpanelapplet-2.0"
25 +SDIRS="src"
26 +
27 +dnl Once libgnomeui disappears, this is all we need
28 +pkg_modules="gtk+-2.0 gdk-pixbuf-2.0"
29 +
30 +AC_ARG_WITH(applet, [   --without-applet  Don't build the panel applet ],
31 +withapplet=no, withapplet=yes)
32 +
33 +echo "With applet: $withapplet"
34 +
35 +if test "$withapplet" != "no"; then 
36 +       pkg_modules="$pkg_modules libpanelapplet-2.0"
37 +       SDIRS="$SDIRS applet"
38 +fi
39 +
40 +AC_ARG_WITH(ica, [   --without-ica   Don't build in support for the ICA client ],
41 +withica=no, withica=yes)
42 +
43 +if test "$withica" != "no"; then 
44 +   CFLAGS="$CFLAGS -DENABLE_ICA"
45 +fi
46 +
47 +SDIRS="$SDIRS po"
48 +
49  PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
50  AC_SUBST(PACKAGE_CFLAGS)
51  AC_SUBST(PACKAGE_LIBS)
52 @@ -41,6 +63,8 @@
53          AC_MSG_RESULT(no)
54  fi
55  
56 +AC_SUBST(SDIRS)
57 +
58  dnl ==========================================================================
59  
60  AC_OUTPUT([
61 diff -urN tsclient-0.132/src/connect.c tsclient-0.132.diff/src/connect.c
62 --- tsclient-0.132/src/connect.c        2003-11-08 19:45:43.000000000 -0700
63 +++ tsclient-0.132.diff/src/connect.c   2004-08-24 16:57:53.000000000 -0600
64 @@ -460,6 +460,7 @@
65    gtk_widget_ref (miProtocol);
66    if (!g_find_program_in_path ("Xnest")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
67  
68 +#ifdef ENABLE_ICA
69    miProtocol = gtk_menu_item_new_with_mnemonic ("ICA");
70    gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
71    gtk_tooltips_set_tip (tooltips, miProtocol, _("ICA protocol is used to connect to Citrix servers."), NULL);
72 @@ -468,6 +469,7 @@
73    if (!g_find_program_in_path ("wfica") &&
74        !g_file_test ("/usr/lib/ICAClient/wfica", G_FILE_TEST_EXISTS) )
75      { gtk_widget_set_sensitive (miProtocol, FALSE); }
76 +#endif
77  
78    gtk_option_menu_set_menu (GTK_OPTION_MENU (optProtocol), mnuProtocol);
79  
80 diff -urN tsclient-0.132/src/rdpfile.c tsclient-0.132.diff/src/rdpfile.c
81 --- tsclient-0.132/src/rdpfile.c        2003-11-08 19:41:58.000000000 -0700
82 +++ tsclient-0.132.diff/src/rdpfile.c   2004-08-24 16:53:40.000000000 -0600
83 @@ -585,7 +585,7 @@
84    widget = lookup_widget (main_window, "optSize2");
85    if (gtk_toggle_button_get_active ((GtkToggleButton *) widget)) {
86      widget = lookup_widget (main_window, "optSize");
87 -    if ((int) gtk_option_menu_get_history (GTK_OPTION_MENU (widget)) > 0) {
88 +    if ((int) gtk_option_menu_get_history (GTK_OPTION_MENU (widget)) >= 0) {
89        switch ((int) gtk_option_menu_get_history (GTK_OPTION_MENU (widget))) {
90        case 0:
91          rdp->desktopwidth = 640;
92 diff -urN tsclient-0.132/src/support.c tsclient-0.132.diff/src/support.c
93 --- tsclient-0.132/src/support.c        2003-11-09 00:12:17.000000000 -0700
94 +++ tsclient-0.132.diff/src/support.c   2004-08-24 16:57:46.000000000 -0600
95 @@ -13,7 +13,7 @@
96  #include <gtk/gtk.h>
97  #include <gdk/gdk.h>
98  #include <glib.h>
99 -#include <libgnomeui/gnome-about.h>
100 +#include <gtk/gtkdialog.h>
101  
102  #include <libintl.h>
103  #define _(x) gettext(x)
104 @@ -528,7 +528,9 @@
105        //buffer[strlen(buffer)-2] = '\0';
106        c_argv[c_argc++] = strdup(buffer);
107  
108 -    } else if (rdp->protocol == 3) {
109 +    }
110 +#ifdef ENABLE_ICA
111 + else if (rdp->protocol == 3) {
112        // ICA/Citrix Connection
113        if (g_find_program_in_path ("wfica")) {
114          cmd = "wfica";
115 @@ -542,21 +544,25 @@
116        c_argv[c_argc++] = g_strdup (buffer);
117  
118        if ( rdp->username && strlen (rdp->username) ) {
119 -        sprintf(buffer, "-username %s", (char*)g_strescape(rdp->username, NULL));
120 -        c_argv[c_argc++] = g_strdup (buffer);
121 +       sprintf(buffer, "-username");
122 +       c_argv[c_argc++] = g_strdup (buffer);
123 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->username, NULL));
124        }
125        if ( rdp->password && strlen (rdp->password) ) {
126 -        sprintf(buffer, "-password %s", (char*)g_strescape(rdp->password, NULL));
127 -        c_argv[c_argc++] = g_strdup (buffer);
128 +       sprintf(buffer, "-password");
129 +       c_argv[c_argc++] = g_strdup (buffer);
130 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->password, NULL));
131        }
132        if ( rdp->domain && strlen (rdp->domain) ) {
133 -        sprintf(buffer, "-domain %s", (char*)g_strescape(rdp->domain, NULL));
134 -        c_argv[c_argc++] = g_strdup (buffer);
135 +       sprintf(buffer, "-domain");
136 +       c_argv[c_argc++] = g_strdup (buffer);
137 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->domain, NULL));
138        }
139  
140        if ( rdp->client_hostname && strlen (rdp->client_hostname) ) {
141 -        sprintf(buffer, "-clientname %s", (char*)g_strescape(rdp->client_hostname, NULL));
142 -        c_argv[c_argc++] = g_strdup (buffer);
143 +       sprintf(buffer, "-clientname");
144 +       c_argv[c_argc++] = g_strdup (buffer);
145 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->client_hostname, NULL));       
146        }
147  
148        switch (rdp->desktopwidth) {
149 @@ -624,30 +630,24 @@
150        }
151  
152        if (rdp->enable_alternate_shell == 1) {
153 -        if ( rdp->alternate_shell && strlen (rdp->alternate_shell) ) {
154 -          sprintf(buffer, "-program %s", (char*)g_strescape(rdp->alternate_shell, NULL));
155 -          c_argv[c_argc++] = g_strdup (buffer);
156 -        }
157 -
158 -        if ( rdp->shell_working_directory && strlen (rdp->shell_working_directory) ) {
159 -          sprintf(buffer, "-directory %s", (char*)g_strescape(rdp->shell_working_directory, NULL));
160 -          c_argv[c_argc++] = g_strdup (buffer);
161 -        }
162 +       sprintf(buffer, "-program");
163 +       c_argv[c_argc++] = g_strdup (buffer);
164 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->alternate_shell, NULL));    
165        }
166 -
167 -      if (strlen(rdp->proto_file) && g_file_test (rdp->proto_file, G_FILE_TEST_EXISTS)) {
168 -        sprintf(buffer, "-passwd");
169 -        c_argv[c_argc++] = g_strdup (buffer);
170 -        sprintf(buffer, "%s", (char*)g_strescape(rdp->proto_file, NULL));
171 -        c_argv[c_argc++] = g_strdup (buffer);
172 +      
173 +      if ( rdp->shell_working_directory && strlen (rdp->shell_working_directory) ) {
174 +       sprintf(buffer, "-directory");
175 +       c_argv[c_argc++] = g_strdup (buffer);
176 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->shell_working_directory, NULL));    
177        }
178  
179        if ( rdp->full_address && strlen (rdp->full_address) ) {
180 -        sprintf(buffer, "-description %s", (char*)g_strescape(rdp->full_address, NULL));
181 -        c_argv[c_argc++] = g_strdup (buffer);
182 +       sprintf(buffer, "-desc");
183 +       c_argv[c_argc++] = g_strdup (buffer);
184 +       c_argv[c_argc++] = g_strdup ((char *)g_strescape(rdp->full_address, NULL));    
185        }
186 -               
187 -    }
188 + }
189 +#endif
190  
191      c_argv[c_argc++] = NULL;
192      
193 @@ -663,7 +663,10 @@
194        }
195        if (std_err && strlen(std_err)) {
196          g_warning ("\n%s\n", std_err);
197 -        tsc_error_message ((gchar*)std_err);
198 +       /* Note - this is a stupid and irresponsible thing to do - 
199 +       Really, this needs to be handled more intellegently 
200 +       */
201 +        /* tsc_error_message ((gchar*)std_err); */
202        }
203      } else {
204        if (!g_spawn_async (NULL, (gchar**)c_argv, NULL, G_SPAWN_SEARCH_PATH,
205 @@ -733,47 +736,82 @@
206    gtk_widget_show_all (dialog);
207  }
208  
209 +static void 
210 +update_label(GtkWidget *label, const gchar *str) {
211 +  GString *string;
212 +
213 +  gchar *tmp = g_markup_escape_text (str, -1);
214 +
215 +  string = g_string_new (NULL);
216 +  g_string_append(string, tmp);
217 +  gtk_label_set_markup (GTK_LABEL (label), string->str);
218 +  g_string_free (string, TRUE);
219 +}
220 +
221 +void tsc_about_dialog() {
222 +  GtkWidget *about = NULL;
223 +  GtkWidget *name_label, *comments_label, *copyright_label;
224 +  GtkWidget *logo_image;
225 +  GtkWidget *vbox;
226  
227 -void tsc_about_dialog ()
228 -{
229 -  static GtkWidget *about = NULL;
230 -  const gchar *name      = _("Terminal Server Client");
231 -  const gchar *version   = VERSION;
232 -  const gchar *copyright = "(C) 2003 Erick Woods\n<http://www.gnomepro.com/tsclient/>";
233 -  const gchar *authors[] = { "Erick Woods <erick@gnomepro.com>", NULL };
234 -  const gchar *documenters[] = { NULL };
235 -  const gchar *translator_credits = NULL;
236    GdkPixbuf *pixbuf = create_pixbuf ("tsclient.png");
237  
238 -  const gchar *comments = \
239 -    "Terminal Server Client is a frontend for \nrdesktop <http://www.rdesktop.org/> \nand vncviewer.\n" \
240 -    "\n" \
241 -    "Terminal Server Client is licensed under the \n" \
242 -    "GNU General Public License (GPL)\n<http://www.gnu.org/licenses/gpl.html>\n" \
243 -    "\n" \
244 -    "Images by: Jakub \"jimmac\" Steiner and others.";
245 +  about = gtk_dialog_new_with_buttons (_("About"),
246 +                                      NULL,
247 +                                      GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
248 +                                      GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
249 +                                      NULL);
250    
251 -  if (about) {
252 -    gtk_window_present (GTK_WINDOW (about));
253 -    return;
254 -  }
255 +  vbox = gtk_vbox_new (FALSE, 8);
256 +  gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
257    
258 -  about = gnome_about_new ( 
259 -        name,
260 -        version,
261 -        copyright,
262 -        comments, 
263 -        authors, 
264 -        documenters, 
265 -        translator_credits,  
266 -        pixbuf);
267 +  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (about)->vbox), vbox, TRUE, TRUE, 0);
268    
269 -  //gtk_window_set_wmclass (GTK_WINDOW (about), "terminal server client", "Terminal Server Client");
270 -  g_signal_connect (G_OBJECT (about), "destroy", G_CALLBACK (gtk_widget_destroyed), &about);
271 -  gtk_widget_show_all (about);  
272 -  return;
273 -}
274 +  logo_image = gtk_image_new ();
275 +  gtk_box_pack_start (GTK_BOX (vbox), logo_image, FALSE, FALSE, 0);
276  
277 +  if (pixbuf)
278 +    gtk_image_set_from_pixbuf (GTK_IMAGE (logo_image), pixbuf);
279 +  
280 +  name_label = gtk_label_new (NULL);
281 +  gtk_label_set_selectable (GTK_LABEL (name_label), TRUE);
282 +  gtk_label_set_justify (GTK_LABEL (name_label), GTK_JUSTIFY_CENTER);
283 +  gtk_box_pack_start (GTK_BOX (vbox), name_label, FALSE, FALSE, 0);
284 +  
285 +  gtk_label_set_markup (GTK_LABEL (name_label), _("Terminal Server Client"));
286 +
287 +  comments_label = gtk_label_new (NULL);
288 +  gtk_label_set_selectable (GTK_LABEL (comments_label), TRUE);
289 +  gtk_label_set_justify (GTK_LABEL (comments_label), GTK_JUSTIFY_CENTER);
290 +  gtk_label_set_line_wrap (GTK_LABEL (comments_label), TRUE);
291 +  gtk_box_pack_start (GTK_BOX (vbox), comments_label, FALSE, FALSE, 0);
292 +
293 +  update_label(comments_label, "Terminal Server Client is a frontend for \nrdesktop " \
294 +              "<http://www.rdesktop.org/> \nand vncviewer.\n" \
295 +              "\n" \
296 +              "Terminal Server Client is licensed under the \n" \
297 +              "GNU General Public License (GPL)\n<http://www.gnu.org/licenses/gpl.html>\n" \
298 +              "\n" \
299 +              "Images by: Jakub \"jimmac\" Steiner and others.");
300 +  
301 +  copyright_label = gtk_label_new (NULL);
302 +  gtk_label_set_selectable (GTK_LABEL (copyright_label), TRUE);
303 +  gtk_label_set_justify (GTK_LABEL (copyright_label), GTK_JUSTIFY_CENTER);
304 +  gtk_box_pack_start (GTK_BOX (vbox), copyright_label, FALSE, FALSE, 0);
305 +
306 +  update_label(copyright_label, "(C) 2003 Erick Woods\n<http://www.gnomepro.com/tsclient/>");
307 +
308 +  gtk_widget_show_all (vbox);
309 +
310 +  gtk_window_set_resizable (GTK_WINDOW (about), FALSE);
311 +
312 +  g_signal_connect_swapped (GTK_OBJECT (about), 
313 +                           "response", 
314 +                           G_CALLBACK (gtk_widget_destroy),
315 +                           GTK_OBJECT (about));
316 +
317 +  gtk_widget_show_all (about);
318 +}
319  
320  void tsc_quick_pick_activate (GtkMenuItem *menuitem, gpointer user_data)
321  {
322 @@ -847,8 +885,10 @@
323      gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtProgramPath"), FALSE);
324      gtk_widget_set_sensitive ((GtkWidget*) g_object_get_data (G_OBJECT (main_win), "txtStartFolder"), FALSE);
325      break;
326 +#ifdef ENABLE_ICA
327    case 3:  // ica
328      break;
329 +#endif
330    default:
331      break;
332    }