~ubuntu-branches/ubuntu/karmic/tsclient/karmic-200909181135

« back to all changes in this revision

Viewing changes to src/connect.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2004-10-05 00:52:19 UTC
  • Revision ID: james.westby@ubuntu.com-20041005005219-ix2uuxq83b5ojhof
Tags: upstream-0.132
ImportĀ upstreamĀ versionĀ 0.132

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************
 
2
*                                      *
 
3
*   frmConnect Create & Events         *
 
4
*                                      *
 
5
***************************************/
 
6
 
 
7
#ifdef HAVE_CONFIG_H
 
8
#  include <config.h>
 
9
#endif
 
10
 
 
11
#include <math.h> 
 
12
#include <sys/types.h>
 
13
#include <sys/stat.h>
 
14
#include <stdio.h>
 
15
#include <stdlib.h> 
 
16
#include <string.h>
 
17
#include <unistd.h>
 
18
 
 
19
#include <gdk/gdkkeysyms.h>
 
20
#include <gdk/gdk.h>
 
21
#include <gtk/gtk.h>
 
22
 
 
23
#include <libintl.h>
 
24
#define _(x) gettext(x)
 
25
 
 
26
#include "rdpfile.h"
 
27
#include "support.h"
 
28
#include "connect.h"
 
29
#include "mrulist.h"
 
30
 
 
31
 
 
32
/***************************************
 
33
*                                      *
 
34
*   frmConnect Create                  *
 
35
*                                      *
 
36
***************************************/
 
37
 
 
38
int 
 
39
create_frmConnect (void)
 
40
{
 
41
  gint i = 0;
 
42
  gchar *langlist[]={    "", "be", "bg", "br", "cf", "ch", 
 
43
    "cz", "dk", "dv", "et", "fr", "gk", 
 
44
    "gr", "hu", "is", "it", "jp", "ko", 
 
45
    "la", "nl", "no", "pl", "po", "ro",
 
46
    "ru", "sf", "sl", "sp", "su", "sv",
 
47
    "tr", "uk", "us", "usl", "usr", "yu", 
 
48
    NULL};
 
49
  gchar *size_items[] = {
 
50
    _("640 x 480 pixels"),    _("800 x 600 pixels"),
 
51
    _("1024 x 768 pixels"),
 
52
    _("1152 x 864 pixels"),
 
53
    _("1280 x 960 pixels"),
 
54
          NULL
 
55
  };
 
56
  gchar *color_items[] = {
 
57
    _("256 Colors"),
 
58
    _("High Color (15 bit)"),
 
59
    _("High Color (16 bit)"),
 
60
    _("True Color (24 bit)"),
 
61
          NULL
 
62
  };
 
63
 
 
64
  GtkWidget *frmConnect;
 
65
  
 
66
  GtkWidget *vbxComplete;
 
67
  GtkWidget *nbkComplete;
 
68
  GtkWidget *vbxCompact;
 
69
 
 
70
  GtkWidget *vbxMain;
 
71
  GtkWidget *vbxBanner;
 
72
  GtkWidget *imgBanner;
 
73
  const gchar *lang = (const gchar*)gtk_get_default_language();
 
74
  gchar *banner_lang;
 
75
  gchar *banner_lang_tmp;
 
76
 
 
77
 
 
78
  // Profile Launcher Widgets
 
79
  GtkWidget *hbxProfileLauncher;
 
80
  GtkWidget *optProfileLauncher;
 
81
  // Profile File Ops
 
82
  GtkWidget *hbxFileOps;
 
83
  GtkWidget *btnSaveAs;
 
84
  GtkWidget *btnOpen;
 
85
 
 
86
  // General Tab Widgets
 
87
  GtkWidget *lblGeneralTab1;
 
88
  GtkWidget *vbxGeneralTab1;
 
89
 
 
90
    // Logon Frame Widgets
 
91
    GtkWidget *frameLogon;
 
92
    GtkWidget *tblLogon0;
 
93
    GtkWidget *tblLogon1;
 
94
    GtkWidget *lblLogonFrame;
 
95
    GtkWidget *lblLogonNote;
 
96
    GtkWidget *imgGeneralLogon;
 
97
    GtkWidget *lblComputer;
 
98
    GtkWidget *cboComputer;
 
99
    GtkWidget *txtComputer;
 
100
    GtkWidget *lblProtocol;
 
101
    GtkWidget *optProtocol;
 
102
    GtkWidget *mnuProtocol;
 
103
    GtkWidget *lblUsername;
 
104
    GtkWidget *txtUsername;
 
105
    GtkWidget *lblPassword;
 
106
    GtkWidget *txtPassword;
 
107
    GtkWidget *lblDomain;
 
108
    GtkWidget *txtDomain;
 
109
    GtkWidget *lblClientHostname;
 
110
    GtkWidget *txtClientHostname;
 
111
    GtkWidget *lblProtoFile;
 
112
    GtkWidget *hbxProtoFile;
 
113
    GtkWidget *txtProtoFile;
 
114
    GtkWidget *btnProtoFile;
 
115
 
 
116
  // Display Tab Widgets
 
117
  GtkWidget *lblDisplayTab1;
 
118
  GtkWidget *vbxDisplayTab1;
 
119
 
 
120
    // Size Frame Widgets
 
121
    GtkWidget *frameSize;
 
122
    GtkWidget *lblSizeFrame;
 
123
    GtkWidget *vbxSize;
 
124
    GtkWidget *imgSize;
 
125
    GtkWidget *hbxSize;
 
126
    GtkWidget *optSize1;
 
127
    GtkWidget *optSize2;
 
128
    GtkWidget *optSize3;
 
129
    GtkWidget *alnSize;
 
130
    GtkWidget *optSize;
 
131
    GtkWidget *alnAltFullSwitch;
 
132
    GtkWidget *chkAltFullSwitch;
 
133
 
 
134
    // Color Frame Widgets
 
135
    GtkWidget *frameColor;
 
136
    GtkWidget *lblColorFrame;
 
137
    GtkWidget *hbxColor;
 
138
    GtkWidget *imgColor;
 
139
    GtkWidget *vbxColor;
 
140
    GtkWidget *optColor1;
 
141
    GtkWidget *optColor2;
 
142
    GtkWidget *alnColor;
 
143
    GtkWidget *optColor;
 
144
 
 
145
  // Local Resources Tab Widgets
 
146
  GtkWidget *lblLocalTab1;
 
147
  GtkWidget *vbxLocalTab1;
 
148
 
 
149
    // Sound Frame Widgets
 
150
    GtkWidget *frameSound;
 
151
    GtkWidget *lblSoundFrame;
 
152
    GtkWidget *tblSound;
 
153
    GtkWidget *imgSound;
 
154
    GtkWidget *vbxSound;
 
155
    GtkWidget *optSound1;
 
156
    GtkWidget *optSound2;
 
157
    GtkWidget *optSound3;
 
158
 
 
159
    // Keyboard Frame Widgets
 
160
    GtkWidget *frameKeyboard;
 
161
    GtkWidget *lblKeyboardFrame;
 
162
    GtkWidget *tblKeyboard;
 
163
    GtkWidget *lblKeyboard;
 
164
    GtkWidget *imgKeyboard;
 
165
    GtkWidget *optKeyboard;
 
166
    GtkWidget *mnuKeyboard;
 
167
    GtkWidget *miKeyboard;
 
168
    GtkWidget *lblKeyboardLang;
 
169
    GtkWidget *cboKeyboardLang;
 
170
    GtkWidget *txtKeyboardLang;
 
171
 
 
172
  // Program Tab Widgets
 
173
  GtkWidget *lblProgramsTab1;
 
174
 
 
175
    // Program Frame Widgets
 
176
    GtkWidget *frameProgram;
 
177
    GtkWidget *lblProgramFrame;
 
178
    GtkWidget *tblProgram;
 
179
    GtkWidget *chkStartProgram;
 
180
    GtkWidget *imgProgram;
 
181
    GtkWidget *lblProgramPath;
 
182
    GtkWidget *txtProgramPath;
 
183
    GtkWidget *lblStartFolder;
 
184
    GtkWidget *txtStartFolder;
 
185
 
 
186
  // Performance Tab Widgets
 
187
  GtkWidget *lblPerformanceTab1;
 
188
 
 
189
    // Performance Frame Widgets
 
190
    GtkWidget *framePerform;
 
191
    GtkWidget *lblPerformFrame;
 
192
    GtkWidget *tblPerform;
 
193
    GtkWidget *imgPerform;
 
194
    GtkWidget *lblPerformanceOptions;
 
195
    GtkWidget *vbxExpChecks;
 
196
    GtkWidget *chkDesktopBackground;
 
197
    GtkWidget *chkWindowContent;
 
198
    GtkWidget *chkAnimation;
 
199
    GtkWidget *chkThemes;
 
200
    GtkWidget *chkBitmapCache;
 
201
    GtkWidget *chkNoMotionEvents;
 
202
    GtkWidget *chkEnableWMKeys;
 
203
    GtkWidget *chkHideWMDecorations;
 
204
 
 
205
  // Complete Button Box Widgets
 
206
  GtkWidget *hbbAppOps;
 
207
  GtkWidget *btnConnect;
 
208
  GtkWidget *alnConnect;
 
209
  GtkWidget *hbxConnect;
 
210
  GtkWidget *imgConnect;
 
211
  GtkWidget *lblConnect;
 
212
  GtkWidget *btnQuit;
 
213
  GtkWidget *btnHelp;
 
214
 
 
215
  // Protocol Menu Item Widget
 
216
  GtkWidget *miProtocol;
 
217
 
 
218
  GList *cboKeyboard_items = NULL;
 
219
  GSList *optSize1_group = NULL;
 
220
  GSList *optColor1_group = NULL;
 
221
  GSList *optSound1_group = NULL;
 
222
 
 
223
  GtkTooltips *tooltips;
 
224
  tooltips = gtk_tooltips_new ();
 
225
 
 
226
  #ifdef TSCLIENT_DEBUG
 
227
  printf ("create_frmConnect\n");
 
228
  #endif
 
229
 
 
230
  /*
 
231
    This is the main form
 
232
  */
 
233
  frmConnect = NULL;
 
234
  frmConnect = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
235
  gtk_widget_set_name (frmConnect, "frmConnect");
 
236
  gtk_window_set_title (GTK_WINDOW (frmConnect), _("Terminal Server Client"));
 
237
  gtk_window_set_default_size (GTK_WINDOW (frmConnect), 405, -1);
 
238
  gtk_window_set_position (GTK_WINDOW (frmConnect), GTK_WIN_POS_CENTER);
 
239
  gtk_window_set_resizable (GTK_WINDOW (frmConnect), FALSE);
 
240
  gtk_window_set_destroy_with_parent (GTK_WINDOW (frmConnect), TRUE);
 
241
  gtk_window_set_icon (GTK_WINDOW (frmConnect), create_pixbuf ("tsclient.png"));
 
242
  
 
243
  /*
 
244
    This is the main container
 
245
  */
 
246
  vbxMain = gtk_vbox_new (FALSE, 0);
 
247
  gtk_widget_set_name (vbxMain, "vbxMain");
 
248
  gtk_container_add (GTK_CONTAINER (frmConnect), vbxMain);
 
249
 
 
250
  /*
 
251
    This is the banner at the top
 
252
  */
 
253
  vbxBanner = gtk_vbox_new (FALSE, 0);
 
254
  gtk_widget_set_name (vbxBanner, "vbxBanner");
 
255
  gtk_box_pack_start (GTK_BOX (vbxMain), vbxBanner, TRUE, TRUE, 1);
 
256
 
 
257
  // try to find a localized banner image, use -en on fail
 
258
  banner_lang = g_strdup_printf ("banner-%s.png", g_strndup ((!lang)?"en":lang,2));
 
259
  if (strcmp (banner_lang, "banner-c.png") == 0) {
 
260
    banner_lang = g_strdup ("banner-en.png");
 
261
  } else {
 
262
    if (!find_pixmap_file (banner_lang)) {
 
263
      banner_lang = g_strdup_printf ("banner-%s.png", g_strndup ((!lang)?"en_US":lang,5));
 
264
      if (!find_pixmap_file (banner_lang)) {
 
265
        banner_lang = g_strdup ("banner-en.png");
 
266
      }
 
267
    }
 
268
  }
 
269
  imgBanner = create_pixmap (frmConnect, banner_lang);
 
270
  g_free (banner_lang);
 
271
  gtk_widget_set_name (imgBanner, "imgBanner");
 
272
  gtk_box_pack_start (GTK_BOX (vbxBanner), imgBanner, FALSE, TRUE, 0);
 
273
  gtk_misc_set_alignment (GTK_MISC (imgBanner), 0.5, 0);
 
274
 
 
275
  /*
 
276
    This is the complete container
 
277
  */
 
278
  vbxComplete = gtk_vbox_new (FALSE, 0);
 
279
  gtk_widget_set_name (vbxComplete, "vbxComplete");
 
280
  gtk_box_pack_start (GTK_BOX (vbxMain), vbxComplete, TRUE, TRUE, 0);
 
281
 
 
282
 
 
283
  /*
 
284
    This is the label for the Connection Profile
 
285
  lblConnectionProfile = gtk_label_new (_("Connection Profile"));
 
286
  gtk_widget_set_name (lblConnectionProfile, "lblConnectionProfile");
 
287
  gtk_label_set_markup (GTK_LABEL (lblConnectionProfile), g_strconcat ("<span weight=\"bold\">", _("Connection Profile"), "</span>", NULL));
 
288
  gtk_label_set_justify (GTK_LABEL (lblConnectionProfile), GTK_JUSTIFY_LEFT);
 
289
  gtk_misc_set_alignment (GTK_MISC (lblConnectionProfile), 0, 0.5);
 
290
  gtk_box_pack_start (GTK_BOX (vbxComplete), lblConnectionProfile, TRUE, FALSE, 0);
 
291
  gtk_misc_set_padding (GTK_MISC (lblConnectionProfile), 6, 3);
 
292
  */
 
293
 
 
294
 
 
295
  /*
 
296
    This is the notebook for the Complete mode
 
297
  */
 
298
  nbkComplete = gtk_notebook_new ();
 
299
  gtk_widget_set_name (nbkComplete, "nbkComplete");
 
300
  gtk_box_pack_start (GTK_BOX (vbxComplete), nbkComplete, TRUE, TRUE, 0);
 
301
  gtk_container_set_border_width (GTK_CONTAINER (nbkComplete), 6);
 
302
  gtk_notebook_set_show_border (GTK_NOTEBOOK (nbkComplete), FALSE);
 
303
 
 
304
  vbxGeneralTab1 = gtk_vbox_new (FALSE, 0);
 
305
  gtk_widget_set_name (vbxGeneralTab1, "vbxGeneralTab1");
 
306
  gtk_container_add (GTK_CONTAINER (nbkComplete), vbxGeneralTab1);
 
307
  gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (nbkComplete), vbxGeneralTab1,
 
308
                                      TRUE, TRUE, GTK_PACK_START);
 
309
                                      
 
310
 
 
311
  frameLogon = gtk_frame_new (NULL);
 
312
  gtk_widget_set_name (frameLogon, "frameLogon");
 
313
  gtk_box_pack_start (GTK_BOX (vbxGeneralTab1), frameLogon, TRUE, TRUE, 0);
 
314
  gtk_container_set_border_width (GTK_CONTAINER (frameLogon), 3);
 
315
  gtk_frame_set_shadow_type (GTK_FRAME (frameLogon), GTK_SHADOW_NONE);
 
316
 
 
317
  lblLogonFrame = gtk_label_new (_("Logon Settings"));
 
318
  gtk_widget_set_name (lblLogonFrame, "lblLogonFrame");
 
319
  gtk_label_set_markup (GTK_LABEL (lblLogonFrame), g_strconcat ("<span weight=\"bold\">", _("Logon Settings"), "</span>", NULL));
 
320
  gtk_frame_set_label_widget (GTK_FRAME (frameLogon), lblLogonFrame);
 
321
  gtk_label_set_justify (GTK_LABEL (lblLogonFrame), GTK_JUSTIFY_LEFT);
 
322
 
 
323
  tblLogon0 = gtk_table_new (2, 2, FALSE);
 
324
  gtk_widget_set_name (tblLogon0, "tblLogon0");
 
325
  gtk_container_add (GTK_CONTAINER (frameLogon), tblLogon0);
 
326
 
 
327
  lblLogonNote = gtk_label_new (_("Type the name of the computer or choose a computer from the drop-down list."));
 
328
  gtk_widget_set_name (lblLogonNote, "lblLogonNote");
 
329
  gtk_table_attach (GTK_TABLE (tblLogon0), lblLogonNote, 1, 2, 0, 1,
 
330
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
331
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
332
  gtk_label_set_justify (GTK_LABEL (lblLogonNote), GTK_JUSTIFY_LEFT);
 
333
  gtk_label_set_line_wrap (GTK_LABEL (lblLogonNote), TRUE);
 
334
  gtk_misc_set_alignment (GTK_MISC (lblLogonNote), 0, 0.5);
 
335
 
 
336
  imgGeneralLogon = create_pixmap (frmConnect, "computer.png");
 
337
  gtk_widget_set_name (imgGeneralLogon, "imgGeneralLogon");
 
338
  gtk_table_attach (GTK_TABLE (tblLogon0), imgGeneralLogon, 0, 1, 0, 1,
 
339
                    (GtkAttachOptions) (0),
 
340
                    (GtkAttachOptions) (0), 0, 0);
 
341
  gtk_misc_set_padding (GTK_MISC (imgGeneralLogon), 3, 3);
 
342
 
 
343
  tblLogon1 = gtk_table_new (6, 2, FALSE);
 
344
  gtk_widget_set_name (tblLogon1, "tblLogon1");
 
345
  gtk_table_attach (GTK_TABLE (tblLogon0), tblLogon1, 1, 2, 1, 2,
 
346
                    (GtkAttachOptions) (GTK_FILL),
 
347
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
348
  gtk_table_set_row_spacings (GTK_TABLE (tblLogon1), 4);
 
349
  gtk_table_set_col_spacings (GTK_TABLE (tblLogon1), 4);
 
350
 
 
351
  lblComputer = gtk_label_new_with_mnemonic (_("Compu_ter:"));
 
352
  gtk_widget_set_name (lblComputer, "lblComputer");
 
353
  gtk_table_attach (GTK_TABLE (tblLogon1), lblComputer, 0, 1, 0, 1,
 
354
                    (GtkAttachOptions) (GTK_FILL),
 
355
                    (GtkAttachOptions) (GTK_FILL), 6, 6);
 
356
  gtk_label_set_justify (GTK_LABEL (lblComputer), GTK_JUSTIFY_LEFT);
 
357
  gtk_misc_set_alignment (GTK_MISC (lblComputer), 0, 0.5);
 
358
 
 
359
  lblProtocol = gtk_label_new_with_mnemonic (_("Pro_tocol:"));
 
360
  gtk_widget_set_name (lblProtocol, "lblProtocol");
 
361
  gtk_table_attach (GTK_TABLE (tblLogon1), lblProtocol, 0, 1, 1, 2,
 
362
                    (GtkAttachOptions) (GTK_FILL),
 
363
                    (GtkAttachOptions) (GTK_FILL), 6, 6);
 
364
  gtk_label_set_justify (GTK_LABEL (lblProtocol), GTK_JUSTIFY_LEFT);
 
365
  gtk_misc_set_alignment (GTK_MISC (lblProtocol), 0, 0.5);
 
366
 
 
367
  lblUsername = gtk_label_new_with_mnemonic (_("_User Name:"));
 
368
  gtk_widget_set_name (lblUsername, "lblUsername");
 
369
  gtk_table_attach (GTK_TABLE (tblLogon1), lblUsername, 0, 1, 2, 3,
 
370
                    (GtkAttachOptions) (GTK_FILL),
 
371
                    (GtkAttachOptions) (0), 6, 6);
 
372
  gtk_label_set_justify (GTK_LABEL (lblUsername), GTK_JUSTIFY_LEFT);
 
373
  gtk_misc_set_alignment (GTK_MISC (lblUsername), 0, 0.5);
 
374
 
 
375
  lblPassword = gtk_label_new_with_mnemonic (_("Pass_word:"));
 
376
  gtk_widget_set_name (lblPassword, "lblPassword");
 
377
  gtk_table_attach (GTK_TABLE (tblLogon1), lblPassword, 0, 1, 3, 4,
 
378
                    (GtkAttachOptions) (GTK_FILL),
 
379
                    (GtkAttachOptions) (0), 6, 6);
 
380
  gtk_label_set_justify (GTK_LABEL (lblPassword), GTK_JUSTIFY_LEFT);
 
381
  gtk_misc_set_alignment (GTK_MISC (lblPassword), 0, 0.5);
 
382
 
 
383
  lblDomain = gtk_label_new_with_mnemonic (_("Do_main:"));
 
384
  gtk_widget_set_name (lblDomain, "lblDomain");
 
385
  gtk_table_attach (GTK_TABLE (tblLogon1), lblDomain, 0, 1, 4, 5,
 
386
                    (GtkAttachOptions) (GTK_FILL),
 
387
                    (GtkAttachOptions) (0), 6, 6);
 
388
  gtk_label_set_justify (GTK_LABEL (lblDomain), GTK_JUSTIFY_LEFT);
 
389
  gtk_misc_set_alignment (GTK_MISC (lblDomain), 0, 0.5);
 
390
 
 
391
  lblClientHostname = gtk_label_new_with_mnemonic (_("C_lient Hostname:"));
 
392
  gtk_widget_set_name (lblClientHostname, "lblClientHostname");
 
393
  gtk_table_attach (GTK_TABLE (tblLogon1), lblClientHostname, 0, 1, 5, 6,
 
394
                    (GtkAttachOptions) (GTK_FILL),
 
395
                    (GtkAttachOptions) (0), 6, 6);
 
396
  gtk_label_set_justify (GTK_LABEL (lblClientHostname), GTK_JUSTIFY_LEFT);
 
397
  gtk_misc_set_alignment (GTK_MISC (lblClientHostname), 0, 0.5);
 
398
 
 
399
  lblProtoFile = gtk_label_new_with_mnemonic (_("Prot_ocol File:"));
 
400
  gtk_widget_set_name (lblProtoFile, "lblProtoFile");
 
401
  gtk_table_attach (GTK_TABLE (tblLogon1), lblProtoFile, 0, 1, 6, 7,
 
402
                    (GtkAttachOptions) (GTK_FILL),
 
403
                    (GtkAttachOptions) (0), 6, 6);
 
404
  gtk_label_set_justify (GTK_LABEL (lblProtoFile), GTK_JUSTIFY_LEFT);
 
405
  gtk_misc_set_alignment (GTK_MISC (lblProtoFile), 0, 0.5);
 
406
 
 
407
  cboComputer = gtk_combo_new ();
 
408
  gtk_object_set_data (GTK_OBJECT (GTK_COMBO (cboComputer)->popwin),
 
409
                       "GladeParentKey", cboComputer);
 
410
  gtk_widget_set_name (cboComputer, "cboComputer");
 
411
  gtk_combo_set_value_in_list (GTK_COMBO (cboComputer), FALSE, FALSE);
 
412
  gtk_table_attach (GTK_TABLE (tblLogon1), cboComputer, 1, 2, 0, 1,
 
413
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
414
                    (GtkAttachOptions) (0), 0, 0);
 
415
 
 
416
  txtComputer = GTK_COMBO (cboComputer)->entry;
 
417
  gtk_widget_set_name (txtComputer, "txtComputer");
 
418
  gtk_entry_set_activates_default (GTK_ENTRY (txtComputer), TRUE);
 
419
  gtk_tooltips_set_tip (tooltips, txtComputer, _("Enter the name or address of the remote system."), NULL);
 
420
 
 
421
  optProtocol = gtk_option_menu_new ();
 
422
  gtk_widget_set_name (optProtocol, "optProtocol");
 
423
  gtk_table_attach (GTK_TABLE (tblLogon1), optProtocol, 1, 2, 1, 2,
 
424
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
425
                    (GtkAttachOptions) (0), 0, 0);
 
426
  gtk_tooltips_set_tip (tooltips, optProtocol, _("Select the protocol to use for this connection."), NULL);
 
427
 
 
428
  mnuProtocol = gtk_menu_new ();
 
429
  gtk_widget_set_name (mnuProtocol, "mnuProtocol");
 
430
 
 
431
  miProtocol = gtk_menu_item_new_with_mnemonic ("RDP");
 
432
  gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
 
433
  gtk_tooltips_set_tip (tooltips, miProtocol, _("RDP protocol is used to connect to Microsoft Windows 2000 and older systems."), NULL);
 
434
  g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)0);
 
435
  gtk_widget_ref (miProtocol);
 
436
  if (!g_find_program_in_path ("rdesktop")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
 
437
 
 
438
  miProtocol = gtk_menu_item_new_with_mnemonic ("RDPv5");
 
439
  gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
 
440
  gtk_tooltips_set_tip (tooltips, miProtocol, _("RDPv5 protocol is used to connect to Microsoft Windows XP and newer systems."), NULL);
 
441
  g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)4);
 
442
  gtk_widget_ref (miProtocol);
 
443
  if (!g_find_program_in_path ("rdesktop")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
 
444
 
 
445
  miProtocol = gtk_menu_item_new_with_mnemonic ("VNC");
 
446
  gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
 
447
  gtk_tooltips_set_tip (tooltips, miProtocol, _("VNC protocol is used to connect to systems sharing the desktop by using VNC."), NULL);
 
448
  g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)1);
 
449
  gtk_widget_ref (miProtocol);
 
450
  if (!g_find_program_in_path ("vncviewer") &&
 
451
      !g_find_program_in_path ("xvncviewer") &&
 
452
      !g_find_program_in_path ("xtightvncviewer") &&
 
453
      !g_find_program_in_path ("svncviewer") )
 
454
    { gtk_widget_set_sensitive (miProtocol, FALSE); }
 
455
    
 
456
  miProtocol = gtk_menu_item_new_with_mnemonic ("XDMCP");
 
457
  gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
 
458
  gtk_tooltips_set_tip (tooltips, miProtocol, _("XDMCP protocol uses Xnest to connect to servers running X."), NULL);
 
459
  g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)2);
 
460
  gtk_widget_ref (miProtocol);
 
461
  if (!g_find_program_in_path ("Xnest")) { gtk_widget_set_sensitive (miProtocol, FALSE); }
 
462
 
 
463
  miProtocol = gtk_menu_item_new_with_mnemonic ("ICA");
 
464
  gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol);
 
465
  gtk_tooltips_set_tip (tooltips, miProtocol, _("ICA protocol is used to connect to Citrix servers."), NULL);
 
466
  g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)3);
 
467
  gtk_widget_ref (miProtocol);
 
468
  if (!g_find_program_in_path ("wfica") &&
 
469
      !g_file_test ("/usr/lib/ICAClient/wfica", G_FILE_TEST_EXISTS) )
 
470
    { gtk_widget_set_sensitive (miProtocol, FALSE); }
 
471
 
 
472
  gtk_option_menu_set_menu (GTK_OPTION_MENU (optProtocol), mnuProtocol);
 
473
 
 
474
 
 
475
  txtUsername = gtk_entry_new ();
 
476
  gtk_widget_set_name (txtUsername, "txtUsername");
 
477
  gtk_entry_set_activates_default (GTK_ENTRY (txtUsername), TRUE);
 
478
  gtk_table_attach (GTK_TABLE (tblLogon1), txtUsername, 1, 2, 2, 3,
 
479
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
480
                    (GtkAttachOptions) (0), 0, 0);
 
481
  gtk_tooltips_set_tip (tooltips, txtUsername, _("Enter the username for the remote system.\nFor VNC, enter the path to your saved vnc password file."), NULL);
 
482
 
 
483
  txtPassword = gtk_entry_new ();
 
484
  gtk_widget_set_name (txtPassword, "txtPassword");
 
485
  gtk_entry_set_activates_default (GTK_ENTRY (txtPassword), TRUE);
 
486
  gtk_table_attach (GTK_TABLE (tblLogon1), txtPassword, 1, 2, 3, 4,
 
487
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
488
                    (GtkAttachOptions) (0), 0, 0);
 
489
  gtk_entry_set_visibility (GTK_ENTRY (txtPassword), FALSE);
 
490
  gtk_tooltips_set_tip (tooltips, txtPassword, _("Enter the password for the remote system."), NULL);
 
491
 
 
492
  txtDomain = gtk_entry_new ();
 
493
  gtk_widget_set_name (txtDomain, "txtDomain");
 
494
  gtk_entry_set_activates_default (GTK_ENTRY (txtDomain), TRUE);
 
495
  gtk_table_attach (GTK_TABLE (tblLogon1), txtDomain, 1, 2, 4, 5,
 
496
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
497
                    (GtkAttachOptions) (0), 0, 0);
 
498
  gtk_tooltips_set_tip (tooltips, txtDomain, _("Enter the domain for the remote system."), NULL);
 
499
 
 
500
  txtClientHostname = gtk_entry_new ();
 
501
  gtk_widget_set_name (txtClientHostname, "txtClientHostname");
 
502
  gtk_entry_set_activates_default (GTK_ENTRY (txtClientHostname), TRUE);
 
503
  gtk_table_attach (GTK_TABLE (tblLogon1), txtClientHostname, 1, 2, 5, 6,
 
504
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
505
                    (GtkAttachOptions) (0), 0, 0);
 
506
  gtk_tooltips_set_tip (tooltips, txtClientHostname, _("Enter the local hostname for this system."), NULL);
 
507
 
 
508
  hbxProtoFile = gtk_hbox_new (FALSE, 2);
 
509
  gtk_widget_set_name (hbxProtoFile, "hbxProtoFile");
 
510
  gtk_table_attach (GTK_TABLE (tblLogon1), hbxProtoFile, 1, 2, 6, 7,
 
511
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
512
                    (GtkAttachOptions) (0), 0, 0);
 
513
 
 
514
  txtProtoFile = gtk_entry_new ();
 
515
  gtk_widget_set_name (txtProtoFile, "txtProtoFile");
 
516
  gtk_entry_set_activates_default (GTK_ENTRY (txtProtoFile), TRUE);
 
517
  gtk_box_pack_start (GTK_BOX (hbxProtoFile), txtProtoFile, TRUE, TRUE, 0);
 
518
  gtk_tooltips_set_tip (tooltips, txtProtoFile, _("Some protocols require a file containing settings. If required, enter the path to the file here."), NULL);
 
519
 
 
520
  btnProtoFile = gtk_button_new_with_label ("...");
 
521
  gtk_widget_set_name (btnProtoFile, "btnProtoFile");
 
522
  gtk_container_add (GTK_CONTAINER (hbxProtoFile), btnProtoFile);
 
523
 
 
524
 
 
525
  vbxDisplayTab1 = gtk_vbox_new (FALSE, 0);
 
526
  gtk_widget_set_name (vbxDisplayTab1, "vbxDisplayTab1");
 
527
  gtk_container_add (GTK_CONTAINER (nbkComplete), vbxDisplayTab1);
 
528
  gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (nbkComplete), vbxDisplayTab1,
 
529
                                      TRUE, TRUE, GTK_PACK_START);
 
530
 
 
531
  frameSize = gtk_frame_new (NULL);
 
532
  gtk_widget_set_name (frameSize, "frameSize");
 
533
  gtk_box_pack_start (GTK_BOX (vbxDisplayTab1), frameSize, TRUE, TRUE, 0);
 
534
  gtk_container_set_border_width (GTK_CONTAINER (frameSize), 3);
 
535
  gtk_frame_set_shadow_type (GTK_FRAME (frameSize), GTK_SHADOW_NONE);
 
536
 
 
537
  lblSizeFrame = gtk_label_new (_("Remote Desktop Size"));
 
538
  gtk_widget_set_name (lblSizeFrame, "lblSizeFrame");
 
539
  gtk_label_set_markup (GTK_LABEL (lblSizeFrame), g_strconcat ("<span weight=\"bold\">", _("Remote Desktop Size"), "</span>", NULL));
 
540
  gtk_frame_set_label_widget (GTK_FRAME (frameSize), lblSizeFrame);
 
541
  gtk_label_set_justify (GTK_LABEL (lblSizeFrame), GTK_JUSTIFY_LEFT);
 
542
 
 
543
  hbxSize = gtk_hbox_new (FALSE, 0);
 
544
  gtk_widget_set_name (hbxSize, "hbxSize");
 
545
  gtk_container_add (GTK_CONTAINER (frameSize), hbxSize);
 
546
 
 
547
  imgSize = create_pixmap (frmConnect, "size.png");
 
548
  gtk_widget_set_name (imgSize, "imgSize");
 
549
  gtk_box_pack_start (GTK_BOX (hbxSize), imgSize, FALSE, TRUE, 0);
 
550
  gtk_misc_set_alignment (GTK_MISC (imgSize), 0, 0);
 
551
  gtk_misc_set_padding (GTK_MISC (imgSize), 3, 3);
 
552
 
 
553
  vbxSize = gtk_vbox_new (FALSE, 0);
 
554
  gtk_widget_set_name (vbxSize, "vbxSize");
 
555
  gtk_box_pack_start (GTK_BOX (hbxSize), vbxSize, TRUE, TRUE, 0);
 
556
 
 
557
  optSize1 = gtk_radio_button_new_with_mnemonic (NULL, _("Use default screen size"));
 
558
  gtk_widget_set_name (optSize1, "optSize1");
 
559
  gtk_box_pack_start (GTK_BOX (vbxSize), optSize1, FALSE, FALSE, 0);
 
560
  gtk_container_set_border_width (GTK_CONTAINER (optSize1), 3);
 
561
  gtk_tooltips_set_tip (tooltips, optSize1, _("Use the default screen size."), NULL);
 
562
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSize1), optSize1_group);
 
563
  optSize1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSize1));
 
564
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (optSize1), TRUE);
 
565
 
 
566
  optSize2 = gtk_radio_button_new_with_mnemonic (NULL, _("Use specified screen size"));
 
567
  gtk_widget_set_name (optSize2, "optSize2");
 
568
  gtk_box_pack_start (GTK_BOX (vbxSize), optSize2, FALSE, FALSE, 0);
 
569
  gtk_container_set_border_width (GTK_CONTAINER (optSize2), 3);
 
570
  gtk_tooltips_set_tip (tooltips, optSize2, _("Use the list to choose the screen size to use."), NULL);
 
571
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSize2), optSize1_group);
 
572
  optSize1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSize2));
 
573
 
 
574
  alnSize = gtk_alignment_new (0.5, 0.5, 0.88, 1);
 
575
  gtk_widget_set_name (alnSize, "alnSize");
 
576
  gtk_box_pack_start (GTK_BOX (vbxSize), alnSize, FALSE, TRUE, 0);
 
577
 
 
578
  optSize = tsc_option_menu_factory (size_items);
 
579
  gtk_widget_set_name (optSize, "optSize");
 
580
  gtk_container_add (GTK_CONTAINER (alnSize), optSize);
 
581
 
 
582
  optSize3 = gtk_radio_button_new_with_mnemonic (NULL, _("Operate in full screen mode"));
 
583
  gtk_widget_set_name (optSize3, "optSize3");
 
584
  gtk_box_pack_start (GTK_BOX (vbxSize), optSize3, FALSE, FALSE, 0);
 
585
  gtk_container_set_border_width (GTK_CONTAINER (optSize3), 3);
 
586
  gtk_tooltips_set_tip (tooltips, optSize3, _("Work in full screen mode."), NULL);
 
587
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSize3), optSize1_group);
 
588
  optSize1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSize3));
 
589
 
 
590
  alnAltFullSwitch = gtk_alignment_new (0.5, 0.5, 0.88, 1);
 
591
  gtk_widget_set_name (alnAltFullSwitch, "alnAltFullSwitch");
 
592
  gtk_box_pack_start (GTK_BOX (vbxSize), alnAltFullSwitch, FALSE, FALSE, 0);
 
593
  gtk_widget_set_sensitive (alnAltFullSwitch, FALSE);
 
594
 
 
595
  chkAltFullSwitch = gtk_check_button_new_with_mnemonic (_("Use alternate full screen switch (-F)"));
 
596
  gtk_widget_set_name (chkAltFullSwitch, "chkAltFullSwitch");
 
597
  gtk_container_add (GTK_CONTAINER (alnAltFullSwitch), chkAltFullSwitch);
 
598
  gtk_container_set_border_width (GTK_CONTAINER (chkAltFullSwitch), 3);
 
599
  gtk_tooltips_set_tip (tooltips, chkAltFullSwitch, _("Check this if you use rdesktop with the unified patches."), NULL);
 
600
 
 
601
 
 
602
  frameColor = gtk_frame_new (NULL);
 
603
  gtk_widget_set_name (frameColor, "frameColor");
 
604
  gtk_box_pack_start (GTK_BOX (vbxDisplayTab1), frameColor, TRUE, TRUE, 0);
 
605
  gtk_container_set_border_width (GTK_CONTAINER (frameColor), 3);
 
606
  gtk_frame_set_shadow_type (GTK_FRAME (frameColor), GTK_SHADOW_NONE);
 
607
 
 
608
  lblColorFrame = gtk_label_new (_("Colors"));
 
609
  gtk_widget_set_name (lblColorFrame, "lblColorFrame");
 
610
  gtk_label_set_markup (GTK_LABEL (lblColorFrame), g_strconcat ("<span weight=\"bold\">", _("Colors"), "</span>", NULL));
 
611
  gtk_frame_set_label_widget (GTK_FRAME (frameColor), lblColorFrame);
 
612
  gtk_label_set_justify (GTK_LABEL (lblColorFrame), GTK_JUSTIFY_LEFT);
 
613
 
 
614
  hbxColor = gtk_hbox_new (FALSE, 0);
 
615
  gtk_widget_set_name (hbxColor, "hbxColor");
 
616
  gtk_container_add (GTK_CONTAINER (frameColor), hbxColor);
 
617
 
 
618
  imgColor = create_pixmap (frmConnect, "colors.png");
 
619
  gtk_widget_set_name (imgColor, "imgColor");
 
620
  gtk_box_pack_start (GTK_BOX (hbxColor), imgColor, FALSE, TRUE, 0);
 
621
  gtk_misc_set_alignment (GTK_MISC (imgColor), 0, 0);
 
622
  gtk_misc_set_padding (GTK_MISC (imgColor), 3, 3);
 
623
 
 
624
  vbxColor = gtk_vbox_new (FALSE, 0);
 
625
  gtk_widget_set_name (vbxColor, "vbxColor");
 
626
  gtk_box_pack_start (GTK_BOX (hbxColor), vbxColor, TRUE, TRUE, 0);
 
627
 
 
628
  optColor1 = gtk_radio_button_new_with_mnemonic (NULL, _("Use default color depth"));
 
629
  gtk_widget_set_name (optColor1, "optColor1");
 
630
  gtk_box_pack_start (GTK_BOX (vbxColor), optColor1, FALSE, FALSE, 0);
 
631
  gtk_container_set_border_width (GTK_CONTAINER (optColor1), 3);
 
632
  gtk_tooltips_set_tip (tooltips, optColor1, _("Use the default color depth."), NULL);
 
633
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optColor1), optColor1_group);
 
634
  optColor1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optColor1));
 
635
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (optColor1), TRUE);
 
636
 
 
637
  optColor2 = gtk_radio_button_new_with_mnemonic (NULL, _("Use specified color depth"));
 
638
  gtk_widget_set_name (optColor2, "optColor2");
 
639
  gtk_box_pack_start (GTK_BOX (vbxColor), optColor2, FALSE, FALSE, 0);
 
640
  gtk_container_set_border_width (GTK_CONTAINER (optColor2), 3);
 
641
  gtk_tooltips_set_tip (tooltips, optColor2, _("Use the list to choose the color depth to use."), NULL);
 
642
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optColor2), optColor1_group);
 
643
  optColor1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optColor2));
 
644
 
 
645
  alnColor = gtk_alignment_new (0.5, 0.5, 0.88, 1);
 
646
  gtk_widget_set_name (alnColor, "alnColor");
 
647
  gtk_box_pack_start (GTK_BOX (vbxColor), alnColor, FALSE, TRUE, 0);
 
648
 
 
649
  optColor = tsc_option_menu_factory (color_items);
 
650
  gtk_widget_set_name (optColor, "optColor");
 
651
  gtk_container_add (GTK_CONTAINER (alnColor), optColor);
 
652
 
 
653
  vbxLocalTab1 = gtk_vbox_new (FALSE, 0);
 
654
  gtk_widget_set_name (vbxLocalTab1, "vbxLocalTab1");
 
655
  gtk_container_add (GTK_CONTAINER (nbkComplete), vbxLocalTab1);
 
656
  gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (nbkComplete), vbxLocalTab1,
 
657
                                      TRUE, TRUE, GTK_PACK_START);
 
658
 
 
659
  frameSound = gtk_frame_new (NULL);
 
660
  gtk_widget_set_name (frameSound, "frameSound");
 
661
  gtk_box_pack_start (GTK_BOX (vbxLocalTab1), frameSound, TRUE, TRUE, 0);
 
662
  gtk_container_set_border_width (GTK_CONTAINER (frameSound), 3);
 
663
  gtk_frame_set_shadow_type (GTK_FRAME (frameSound), GTK_SHADOW_NONE);
 
664
 
 
665
  lblSoundFrame = gtk_label_new_with_mnemonic (_("Remote Computer _Sound"));
 
666
  gtk_widget_set_name (lblSoundFrame, "lblSoundFrame");
 
667
  gtk_label_set_markup (GTK_LABEL (lblSoundFrame), g_strconcat ("<span weight=\"bold\">", _("Remote Computer Sound"), "</span>", NULL));
 
668
  gtk_frame_set_label_widget (GTK_FRAME (frameSound), lblSoundFrame);
 
669
  gtk_label_set_justify (GTK_LABEL (lblSoundFrame), GTK_JUSTIFY_LEFT);
 
670
 
 
671
  tblSound = gtk_table_new (1, 2, FALSE);
 
672
  gtk_widget_set_name (tblSound, "tblSound");
 
673
  gtk_container_add (GTK_CONTAINER (frameSound), tblSound);
 
674
  gtk_table_set_col_spacings (GTK_TABLE (tblSound), 6);
 
675
 
 
676
  imgSound = create_pixmap (frmConnect, "sound.png");
 
677
  gtk_widget_set_name (imgSound, "imgSound");
 
678
  gtk_misc_set_padding (GTK_MISC (imgSound), 3, 3);
 
679
  gtk_table_attach (GTK_TABLE (tblSound), imgSound, 0, 1, 0, 1,
 
680
                    (GtkAttachOptions) (GTK_FILL),
 
681
                    (GtkAttachOptions) 0, 0, 0);
 
682
 
 
683
  vbxSound = gtk_vbox_new (FALSE, 0);
 
684
  gtk_widget_set_name (vbxSound, "vbxSound");
 
685
  gtk_table_attach (GTK_TABLE (tblSound), vbxSound, 1, 2, 0, 2,
 
686
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
687
                    (GtkAttachOptions) (0), 0, 0);
 
688
 
 
689
  optSound1 = gtk_radio_button_new_with_mnemonic (NULL, _("On the local computer"));
 
690
  gtk_widget_set_name (optSound1, "optSound1");
 
691
  gtk_box_pack_start (GTK_BOX (vbxSound), optSound1, FALSE, FALSE, 0);
 
692
  gtk_container_set_border_width (GTK_CONTAINER (optSound1), 3);
 
693
  gtk_tooltips_set_tip (tooltips, optSound1, _("On the local computer"), NULL);
 
694
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSound1), optSound1_group);
 
695
  optSound1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSound1));
 
696
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (optSound1), TRUE);
 
697
 
 
698
  optSound2 = gtk_radio_button_new_with_mnemonic (NULL, _("On the remote computer"));
 
699
  gtk_widget_set_name (optSound2, "optSound2");
 
700
  gtk_box_pack_start (GTK_BOX (vbxSound), optSound2, FALSE, FALSE, 0);
 
701
  gtk_container_set_border_width (GTK_CONTAINER (optSound2), 3);
 
702
  gtk_tooltips_set_tip (tooltips, optSound2, _("On the remote computer"), NULL);
 
703
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSound2), optSound1_group);
 
704
  optSound1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSound2));
 
705
 
 
706
  optSound3 = gtk_radio_button_new_with_mnemonic (NULL, _("Do not play"));
 
707
  gtk_widget_set_name (optSound3, "optSound3");
 
708
  gtk_box_pack_start (GTK_BOX (vbxSound), optSound3, FALSE, FALSE, 0);
 
709
  gtk_container_set_border_width (GTK_CONTAINER (optSound3), 3);
 
710
  gtk_tooltips_set_tip (tooltips, optSound3, _("Do not play"), NULL);
 
711
  gtk_radio_button_set_group (GTK_RADIO_BUTTON (optSound3), optSound1_group);
 
712
  optSound1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (optSound3));
 
713
 
 
714
 
 
715
  frameKeyboard = gtk_frame_new (NULL);
 
716
  gtk_widget_set_name (frameKeyboard, "frameKeyboard");
 
717
  gtk_box_pack_start (GTK_BOX (vbxLocalTab1), frameKeyboard, TRUE, TRUE, 0);
 
718
  gtk_container_set_border_width (GTK_CONTAINER (frameKeyboard), 3);
 
719
  gtk_frame_set_shadow_type (GTK_FRAME (frameKeyboard), GTK_SHADOW_NONE);
 
720
 
 
721
  lblKeyboardFrame = gtk_label_new_with_mnemonic (_("_Keyboard"));
 
722
  gtk_widget_set_name (lblKeyboardFrame, "lblKeyboardFrame");
 
723
  gtk_label_set_markup (GTK_LABEL (lblKeyboardFrame), g_strconcat ("<span weight=\"bold\">", _("Keyboard"), "</span>", NULL));
 
724
  gtk_frame_set_label_widget (GTK_FRAME (frameKeyboard), lblKeyboardFrame);
 
725
  gtk_label_set_justify (GTK_LABEL (lblKeyboardFrame), GTK_JUSTIFY_LEFT);
 
726
 
 
727
  tblKeyboard = gtk_table_new (2, 2, FALSE);
 
728
  gtk_widget_set_name (tblKeyboard, "tblKeyboard");
 
729
  gtk_container_add (GTK_CONTAINER (frameKeyboard), tblKeyboard);
 
730
  gtk_table_set_col_spacings (GTK_TABLE (tblKeyboard), 6);
 
731
 
 
732
  optKeyboard = gtk_option_menu_new ();
 
733
  gtk_widget_set_name (optKeyboard, "optKeyboard");
 
734
  gtk_table_attach (GTK_TABLE (tblKeyboard), optKeyboard, 1, 2, 1, 2,
 
735
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
736
                    (GtkAttachOptions) (0), 0, 0);
 
737
 
 
738
  mnuKeyboard = gtk_menu_new ();
 
739
 
 
740
  miKeyboard = gtk_menu_item_new_with_mnemonic (_("On the local computer"));
 
741
  gtk_container_add (GTK_CONTAINER (mnuKeyboard), miKeyboard);
 
742
 
 
743
  miKeyboard = gtk_menu_item_new_with_mnemonic (_("On the remote computer"));
 
744
  gtk_container_add (GTK_CONTAINER (mnuKeyboard), miKeyboard);
 
745
 
 
746
  miKeyboard = gtk_menu_item_new_with_mnemonic (_("In full screen mode only"));
 
747
  gtk_container_add (GTK_CONTAINER (mnuKeyboard), miKeyboard);
 
748
 
 
749
  gtk_option_menu_set_menu (GTK_OPTION_MENU (optKeyboard), mnuKeyboard);
 
750
 
 
751
 
 
752
  lblKeyboardLang = gtk_label_new (_("Use the following keyboard language\n(2 char keycode)"));
 
753
  gtk_widget_set_name (lblKeyboardLang, "lblKeyboardLang");
 
754
  gtk_table_attach (GTK_TABLE (tblKeyboard), lblKeyboardLang, 1, 2, 2, 3,
 
755
                    (GtkAttachOptions) (GTK_FILL),
 
756
                    (GtkAttachOptions) (0), 0, 0);
 
757
  gtk_label_set_justify (GTK_LABEL (lblKeyboardLang), GTK_JUSTIFY_LEFT);
 
758
  gtk_misc_set_alignment (GTK_MISC (lblKeyboardLang), 0, 0.5);
 
759
 
 
760
  cboKeyboardLang = gtk_combo_new ();
 
761
  gtk_object_set_data ( GTK_OBJECT ( GTK_COMBO ( cboKeyboardLang)->popwin ),
 
762
                        "GladeParentLangKey", cboKeyboardLang );
 
763
  gtk_widget_set_name ( cboKeyboardLang, "cboKeyboardLang" );
 
764
  gtk_table_attach (GTK_TABLE (tblKeyboard), cboKeyboardLang, 1, 2, 3, 4,
 
765
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
766
                    (GtkAttachOptions) (0), 0, 0);
 
767
 
 
768
  cboKeyboard_items = NULL;
 
769
  i = 0;
 
770
  while(langlist[i]){
 
771
    cboKeyboard_items = g_list_append (cboKeyboard_items, (gpointer) langlist[i]);
 
772
          i++;
 
773
  }
 
774
  gtk_combo_set_popdown_strings (GTK_COMBO (cboKeyboardLang), cboKeyboard_items);
 
775
  g_list_free (cboKeyboard_items);  
 
776
 
 
777
  txtKeyboardLang = GTK_COMBO (cboKeyboardLang)->entry;
 
778
  gtk_widget_set_name (txtKeyboardLang, "txtKeyboardLang");
 
779
 
 
780
  lblKeyboard = gtk_label_new (_("Apply Windows key combinations\n(for example ALT+TAB) (unsupported)"));
 
781
  gtk_widget_set_name (lblKeyboard, "lblKeyboard");
 
782
  gtk_table_attach (GTK_TABLE (tblKeyboard), lblKeyboard, 1, 2, 0, 1,
 
783
                    (GtkAttachOptions) (GTK_FILL),
 
784
                    (GtkAttachOptions) (0), 0, 0);
 
785
  gtk_label_set_justify (GTK_LABEL (lblKeyboard), GTK_JUSTIFY_LEFT);
 
786
  gtk_misc_set_alignment (GTK_MISC (lblKeyboard), 0, 0.5);
 
787
 
 
788
  imgKeyboard = create_pixmap (frmConnect, "keyboard.png");
 
789
  gtk_widget_set_name (imgKeyboard, "imgKeyboard");
 
790
  gtk_table_attach (GTK_TABLE (tblKeyboard), imgKeyboard, 0, 1, 0, 1,
 
791
                    (GtkAttachOptions) (GTK_FILL),
 
792
                    (GtkAttachOptions) 0, 0, 0);
 
793
  gtk_misc_set_padding (GTK_MISC (imgKeyboard), 3, 3);
 
794
 
 
795
  frameProgram = gtk_frame_new (NULL);
 
796
  gtk_widget_set_name (frameProgram, "frameProgram");
 
797
  gtk_container_add (GTK_CONTAINER (nbkComplete), frameProgram);
 
798
  gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (nbkComplete), frameProgram,
 
799
                                      TRUE, TRUE, GTK_PACK_START);
 
800
  gtk_container_set_border_width (GTK_CONTAINER (frameProgram), 3);
 
801
  gtk_frame_set_shadow_type (GTK_FRAME (frameProgram), GTK_SHADOW_NONE);
 
802
 
 
803
  lblProgramFrame = gtk_label_new (_("Start a Program"));
 
804
  gtk_widget_set_name (lblProgramFrame, "lblProgramFrame");
 
805
  gtk_label_set_markup (GTK_LABEL (lblProgramFrame), g_strconcat ("<span weight=\"bold\">", _("Start a Program"), "</span>", NULL));
 
806
  gtk_frame_set_label_widget (GTK_FRAME (frameProgram), lblProgramFrame);
 
807
  gtk_label_set_justify (GTK_LABEL (lblProgramFrame), GTK_JUSTIFY_LEFT);
 
808
 
 
809
  tblProgram = gtk_table_new (2, 5, FALSE);
 
810
  gtk_widget_set_name (tblProgram, "tblProgram");
 
811
  gtk_container_add (GTK_CONTAINER (frameProgram), tblProgram);
 
812
 
 
813
  imgProgram = create_pixmap (frmConnect, "program.png");
 
814
  gtk_widget_set_name (imgProgram, "imgProgram");
 
815
  gtk_table_attach (GTK_TABLE (tblProgram), imgProgram, 0, 1, 0, 1,
 
816
                    (GtkAttachOptions) (GTK_FILL),
 
817
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
818
  gtk_misc_set_padding (GTK_MISC (imgProgram), 3, 3);
 
819
 
 
820
  chkStartProgram = gtk_check_button_new_with_mnemonic (_("Start the following program on connection"));
 
821
  gtk_widget_set_name (chkStartProgram, "chkStartProgram");
 
822
  gtk_table_attach (GTK_TABLE (tblProgram), chkStartProgram, 1, 2, 0, 1,
 
823
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
824
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
825
  gtk_container_set_border_width (GTK_CONTAINER (chkStartProgram), 3);
 
826
 
 
827
  lblProgramPath = gtk_label_new (_("Program path and filename"));
 
828
  gtk_widget_set_name (lblProgramPath, "lblProgramPath");
 
829
  gtk_table_attach (GTK_TABLE (tblProgram), lblProgramPath, 1, 2, 1, 2,
 
830
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
831
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
832
  gtk_label_set_justify (GTK_LABEL (lblProgramPath), GTK_JUSTIFY_LEFT);
 
833
 
 
834
  txtProgramPath = gtk_entry_new ();
 
835
  gtk_widget_set_name (txtProgramPath, "txtProgramPath");
 
836
  gtk_table_attach (GTK_TABLE (tblProgram), txtProgramPath, 1, 2, 2, 3,
 
837
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
838
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
839
 
 
840
  lblStartFolder = gtk_label_new (_("Start in the following folder"));
 
841
  gtk_widget_set_name (lblStartFolder, "lblStartFolder");
 
842
  gtk_table_attach (GTK_TABLE (tblProgram), lblStartFolder, 1, 2, 3, 4,
 
843
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
844
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
845
  gtk_label_set_justify (GTK_LABEL (lblStartFolder), GTK_JUSTIFY_LEFT);
 
846
 
 
847
  txtStartFolder = gtk_entry_new ();
 
848
  gtk_widget_set_name (txtStartFolder, "txtStartFolder");
 
849
  gtk_table_attach (GTK_TABLE (tblProgram), txtStartFolder, 1, 2, 4, 5,
 
850
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
851
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
852
 
 
853
 
 
854
  framePerform = gtk_frame_new (NULL);
 
855
  gtk_widget_set_name (framePerform, "framePerform");
 
856
  gtk_container_add (GTK_CONTAINER (nbkComplete), framePerform);
 
857
  gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (nbkComplete), framePerform,
 
858
                                      TRUE, TRUE, GTK_PACK_START);
 
859
  gtk_container_set_border_width (GTK_CONTAINER (framePerform), 3);
 
860
  gtk_frame_set_shadow_type (GTK_FRAME (framePerform), GTK_SHADOW_NONE);
 
861
 
 
862
  lblPerformFrame = gtk_label_new (_("Optimize Performance"));
 
863
  gtk_widget_set_name (lblPerformFrame, "lblPerformFrame");
 
864
  gtk_label_set_markup (GTK_LABEL (lblPerformFrame), g_strconcat ("<span weight=\"bold\">", _("Optimize Performance"), "</span>", NULL));
 
865
  gtk_frame_set_label_widget (GTK_FRAME (framePerform), lblPerformFrame);
 
866
  gtk_label_set_justify (GTK_LABEL (lblPerformFrame), GTK_JUSTIFY_LEFT);
 
867
 
 
868
  tblPerform = gtk_table_new (2, 2, FALSE);
 
869
  gtk_widget_set_name (tblPerform, "tblPerform");
 
870
  gtk_container_add (GTK_CONTAINER (framePerform), tblPerform);
 
871
 
 
872
  imgPerform = create_pixmap (frmConnect, "perform.png");
 
873
  gtk_widget_set_name (imgPerform, "imgPerform");
 
874
  gtk_table_attach (GTK_TABLE (tblPerform), imgPerform, 0, 1, 0, 1,
 
875
                    (GtkAttachOptions) (GTK_FILL),
 
876
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
877
  gtk_misc_set_padding (GTK_MISC (imgPerform), 3, 3);
 
878
 
 
879
  vbxExpChecks = gtk_vbox_new (FALSE, 0);
 
880
  gtk_widget_set_name (vbxExpChecks, "vbxExpChecks");
 
881
  gtk_table_attach (GTK_TABLE (tblPerform), vbxExpChecks, 1, 2, 1, 2,
 
882
                    (GtkAttachOptions) (GTK_FILL),
 
883
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
884
 
 
885
  chkDesktopBackground = gtk_check_button_new_with_mnemonic (_("Desktop background (u)"));
 
886
  gtk_widget_set_name (chkDesktopBackground, "chkDesktopBackground");
 
887
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkDesktopBackground, FALSE, FALSE, 0);
 
888
 
 
889
  chkWindowContent = gtk_check_button_new_with_mnemonic (_("Show content of window while dragging (u)"));
 
890
  gtk_widget_set_name (chkWindowContent, "chkWindowContent");
 
891
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkWindowContent, FALSE, FALSE, 0);
 
892
 
 
893
  chkAnimation = gtk_check_button_new_with_mnemonic (_("Menu and window animation (u)"));
 
894
  gtk_widget_set_name (chkAnimation, "chkAnimation");
 
895
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkAnimation, FALSE, FALSE, 0);
 
896
 
 
897
  chkThemes = gtk_check_button_new_with_mnemonic (_("Themes (u)"));
 
898
  gtk_widget_set_name (chkThemes, "chkThemes");
 
899
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkThemes, FALSE, FALSE, 0);
 
900
 
 
901
  chkBitmapCache = gtk_check_button_new_with_mnemonic (_("Enable bitmap caching"));
 
902
  gtk_widget_set_name (chkBitmapCache, "chkBitmapCache");
 
903
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkBitmapCache, FALSE, FALSE, 0);
 
904
 
 
905
  chkNoMotionEvents = gtk_check_button_new_with_mnemonic (_("Do not send motion events"));
 
906
  gtk_widget_set_name (chkNoMotionEvents, "chkNoMotionEvents");
 
907
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkNoMotionEvents, FALSE, FALSE, 0);
 
908
 
 
909
  chkEnableWMKeys = gtk_check_button_new_with_mnemonic (_("Enable window manager's key bindings"));
 
910
  gtk_widget_set_name (chkEnableWMKeys, "chkEnableWMKeys");
 
911
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkEnableWMKeys, FALSE, FALSE, 0);
 
912
 
 
913
  chkHideWMDecorations = gtk_check_button_new_with_mnemonic (_("Hide window manager's decorations"));
 
914
  gtk_widget_set_name (chkHideWMDecorations, "chkHideWMDecorations");
 
915
  gtk_box_pack_start (GTK_BOX (vbxExpChecks), chkHideWMDecorations, FALSE, FALSE, 0);
 
916
 
 
917
 
 
918
  lblPerformanceOptions = gtk_label_new (_("Options available for optimizing performance"));
 
919
  gtk_widget_set_name (lblPerformanceOptions, "lblPerformanceOptions");
 
920
  gtk_table_attach (GTK_TABLE (tblPerform), lblPerformanceOptions, 1, 2, 0, 1,
 
921
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
 
922
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
 
923
  gtk_label_set_justify (GTK_LABEL (lblPerformanceOptions), GTK_JUSTIFY_LEFT);
 
924
  gtk_label_set_line_wrap (GTK_LABEL (lblPerformanceOptions), TRUE);
 
925
  gtk_misc_set_alignment (GTK_MISC (lblPerformanceOptions), 0, 0.5);
 
926
 
 
927
  /*
 
928
    These are the labels for the notebook control
 
929
  */
 
930
 
 
931
  lblGeneralTab1 = gtk_label_new_with_mnemonic (_("_General"));
 
932
  gtk_widget_set_name (lblGeneralTab1, "lblGeneralTab1");
 
933
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (nbkComplete), gtk_notebook_get_nth_page (GTK_NOTEBOOK (nbkComplete), 0), lblGeneralTab1);
 
934
  gtk_label_set_justify (GTK_LABEL (lblGeneralTab1), GTK_JUSTIFY_LEFT);
 
935
 
 
936
  lblDisplayTab1 = gtk_label_new_with_mnemonic (_("_Display"));
 
937
  gtk_widget_set_name (lblDisplayTab1, "lblDisplayTab1");
 
938
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (nbkComplete), gtk_notebook_get_nth_page (GTK_NOTEBOOK (nbkComplete), 1), lblDisplayTab1);
 
939
  gtk_label_set_justify (GTK_LABEL (lblDisplayTab1), GTK_JUSTIFY_LEFT);
 
940
 
 
941
  lblLocalTab1 = gtk_label_new_with_mnemonic (_("Local _Resources"));
 
942
  gtk_widget_set_name (lblLocalTab1, "lblLocalTab1");
 
943
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (nbkComplete), gtk_notebook_get_nth_page (GTK_NOTEBOOK (nbkComplete), 2), lblLocalTab1);
 
944
  gtk_label_set_justify (GTK_LABEL (lblLocalTab1), GTK_JUSTIFY_LEFT);
 
945
 
 
946
  lblProgramsTab1 = gtk_label_new_with_mnemonic (_("_Programs"));
 
947
  gtk_widget_set_name (lblProgramsTab1, "lblProgramsTab1");
 
948
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (nbkComplete), gtk_notebook_get_nth_page (GTK_NOTEBOOK (nbkComplete), 3), lblProgramsTab1);
 
949
  gtk_label_set_justify (GTK_LABEL (lblProgramsTab1), GTK_JUSTIFY_LEFT);
 
950
 
 
951
  lblPerformanceTab1 = gtk_label_new_with_mnemonic (_("Perf_ormance"));
 
952
  gtk_widget_set_name (lblPerformanceTab1, "lblPerformanceTab1");
 
953
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (nbkComplete), gtk_notebook_get_nth_page (GTK_NOTEBOOK (nbkComplete), 4), lblPerformanceTab1);
 
954
  gtk_label_set_justify (GTK_LABEL (lblPerformanceTab1), GTK_JUSTIFY_LEFT);
 
955
 
 
956
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblComputer), txtComputer);
 
957
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblProtocol), optProtocol);
 
958
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblUsername), txtUsername);
 
959
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblPassword), txtPassword);
 
960
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblDomain), txtDomain);
 
961
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblClientHostname), txtClientHostname);
 
962
  gtk_label_set_mnemonic_widget (GTK_LABEL (lblProtoFile), txtProtoFile);
 
963
 
 
964
 
 
965
  /*
 
966
    This is the Profile Launcher
 
967
  */
 
968
  hbxProfileLauncher = gtk_hbox_new (FALSE, 3);
 
969
  gtk_widget_set_name (hbxProfileLauncher, "hbxProfileLauncher");
 
970
  gtk_box_pack_start (GTK_BOX (vbxComplete), hbxProfileLauncher, TRUE, TRUE, 0);
 
971
  gtk_container_set_border_width (GTK_CONTAINER (hbxProfileLauncher), 6);
 
972
  gtk_box_set_spacing (GTK_BOX (hbxProfileLauncher), 6);
 
973
 
 
974
  optProfileLauncher = gtk_option_menu_new ();
 
975
  gtk_widget_set_name (optProfileLauncher, "optProfileLauncher");
 
976
  gtk_box_pack_start (GTK_BOX (hbxProfileLauncher), optProfileLauncher, TRUE, TRUE, 0);
 
977
  gtk_tooltips_set_tip (tooltips, optProfileLauncher, _("Select a saved profile to launch it immediately."), NULL);
 
978
 
 
979
  hbxFileOps = gtk_hbox_new (TRUE, 0);
 
980
  gtk_widget_set_name (hbxFileOps, "hbxFileOps");
 
981
  gtk_box_pack_start (GTK_BOX (hbxProfileLauncher), hbxFileOps, FALSE, TRUE, 0);
 
982
  gtk_container_set_border_width (GTK_CONTAINER (hbxFileOps), 0);
 
983
  gtk_box_set_spacing (GTK_BOX (hbxFileOps), 6);
 
984
 
 
985
  btnOpen = gtk_button_new_from_stock ("gtk-open");
 
986
  gtk_widget_set_name (btnOpen, "btnOpen");
 
987
  gtk_box_pack_start (GTK_BOX (hbxFileOps), btnOpen, TRUE, TRUE, 0);
 
988
 
 
989
  btnSaveAs = gtk_button_new_from_stock ("gtk-save-as");
 
990
  gtk_widget_set_name (btnSaveAs, "btnSaveAs");
 
991
  gtk_box_pack_start (GTK_BOX (hbxFileOps), btnSaveAs, TRUE, TRUE, 0);
 
992
 
 
993
 
 
994
  /*
 
995
    This is the button box for the Complete mode
 
996
  */
 
997
 
 
998
  hbbAppOps = gtk_hbutton_box_new ();
 
999
  gtk_widget_set_name (hbbAppOps, "hbbAppOps");
 
1000
  gtk_box_pack_start (GTK_BOX (vbxComplete), hbbAppOps, FALSE, TRUE, 0);
 
1001
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbAppOps), GTK_BUTTONBOX_END);
 
1002
  gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbAppOps), 6);
 
1003
  gtk_container_set_border_width (GTK_CONTAINER (hbbAppOps), 6);
 
1004
 
 
1005
  btnHelp = gtk_button_new_from_stock ("gtk-help");
 
1006
  gtk_widget_set_name (btnHelp, "btnHelp");
 
1007
  gtk_container_add (GTK_CONTAINER (hbbAppOps), btnHelp);
 
1008
 
 
1009
  btnQuit = gtk_button_new_from_stock ("gtk-cancel");
 
1010
  gtk_widget_set_name (btnQuit, "btnQuit");
 
1011
  gtk_container_add (GTK_CONTAINER (hbbAppOps), btnQuit);
 
1012
 
 
1013
  btnConnect = gtk_button_new ();
 
1014
  gtk_widget_set_name (btnConnect, "btnConnect");
 
1015
  gtk_container_add (GTK_CONTAINER (hbbAppOps), btnConnect);
 
1016
  GTK_WIDGET_SET_FLAGS (btnConnect, GTK_CAN_DEFAULT);
 
1017
 
 
1018
 
 
1019
  alnConnect = gtk_alignment_new (0.5, 0.5, 0, 0);
 
1020
  gtk_widget_set_name (alnConnect, "alnConnect");
 
1021
  gtk_container_add (GTK_CONTAINER (btnConnect), alnConnect);
 
1022
 
 
1023
  hbxConnect = gtk_hbox_new (FALSE, 2);
 
1024
  gtk_widget_set_name (hbxConnect, "hbxConnect");
 
1025
  gtk_container_add (GTK_CONTAINER (alnConnect), hbxConnect);
 
1026
 
 
1027
  imgConnect = gtk_image_new_from_stock ("gtk-ok", GTK_ICON_SIZE_BUTTON);
 
1028
  gtk_widget_set_name (imgConnect, "imgConnect");
 
1029
  gtk_box_pack_start (GTK_BOX (hbxConnect), imgConnect, FALSE, FALSE, 0);
 
1030
 
 
1031
  lblConnect = gtk_label_new_with_mnemonic (_("Co_nnect"));
 
1032
  gtk_widget_set_name (lblConnect, "lblConnect");
 
1033
  gtk_box_pack_start (GTK_BOX (hbxConnect), lblConnect, FALSE, FALSE, 0);
 
1034
  gtk_label_set_justify (GTK_LABEL (lblConnect), GTK_JUSTIFY_LEFT);
 
1035
 
 
1036
 
 
1037
  gtk_signal_connect (GTK_OBJECT (frmConnect), "destroy_event",
 
1038
                      GTK_SIGNAL_FUNC (gtk_main_quit),
 
1039
                      NULL);
 
1040
  gtk_signal_connect (GTK_OBJECT (frmConnect), "delete_event",
 
1041
                      GTK_SIGNAL_FUNC (gtk_main_quit),
 
1042
                      NULL);
 
1043
  gtk_signal_connect (GTK_OBJECT (btnConnect), "clicked",
 
1044
                      GTK_SIGNAL_FUNC (on_btnConnect_clicked),
 
1045
                      NULL);
 
1046
  gtk_signal_connect (GTK_OBJECT (btnQuit), "clicked",
 
1047
                      GTK_SIGNAL_FUNC (on_btnQuit_clicked),
 
1048
                      NULL);
 
1049
  gtk_signal_connect (GTK_OBJECT (btnHelp), "clicked",
 
1050
                      GTK_SIGNAL_FUNC (on_btnHelp_clicked),
 
1051
                      NULL);
 
1052
 
 
1053
  gtk_signal_connect (GTK_OBJECT (optSize1), "clicked",
 
1054
                      GTK_SIGNAL_FUNC (on_optSize1_clicked),
 
1055
                      NULL);
 
1056
  gtk_signal_connect (GTK_OBJECT (optSize2), "clicked",
 
1057
                      GTK_SIGNAL_FUNC (on_optSize2_clicked),
 
1058
                      NULL);
 
1059
  gtk_signal_connect (GTK_OBJECT (optSize3), "clicked",
 
1060
                      GTK_SIGNAL_FUNC (on_optSize3_clicked),
 
1061
                      NULL);
 
1062
 
 
1063
  gtk_signal_connect (GTK_OBJECT (optColor1), "clicked",
 
1064
                      GTK_SIGNAL_FUNC (on_optColor1_clicked),
 
1065
                      NULL);
 
1066
  gtk_signal_connect (GTK_OBJECT (optColor2), "clicked",
 
1067
                      GTK_SIGNAL_FUNC (on_optColor2_clicked),
 
1068
                      NULL);
 
1069
 
 
1070
  gtk_signal_connect (GTK_OBJECT (btnSaveAs), "clicked",
 
1071
                      GTK_SIGNAL_FUNC (on_btnSaveAs_clicked),
 
1072
                      NULL);
 
1073
  gtk_signal_connect (GTK_OBJECT (btnOpen), "clicked",
 
1074
                      GTK_SIGNAL_FUNC (on_btnOpen_clicked),
 
1075
                      NULL);
 
1076
  gtk_signal_connect (GTK_OBJECT (btnProtoFile), "clicked",
 
1077
                      GTK_SIGNAL_FUNC (on_btnProtoFile_clicked),
 
1078
                      NULL);
 
1079
 
 
1080
  gtk_signal_connect ((gpointer) chkStartProgram, "toggled",
 
1081
                      G_CALLBACK (on_chkStartProgram_toggled),
 
1082
                      NULL);
 
1083
 
 
1084
  /* Store pointers to all widgets, for use by lookup_widget(). */
 
1085
  gtk_object_set_data (GTK_OBJECT (frmConnect), "frmConnect", frmConnect);
 
1086
 
 
1087
  HOOKUP_OBJECT (frmConnect, vbxComplete, "vbxComplete");
 
1088
  HOOKUP_OBJECT (frmConnect, nbkComplete, "nbkComplete");
 
1089
 
 
1090
  HOOKUP_OBJECT (frmConnect, vbxMain, "vbxMain");
 
1091
  HOOKUP_OBJECT (frmConnect, vbxBanner, "vbxBanner");
 
1092
  HOOKUP_OBJECT (frmConnect, imgBanner, "imgBanner");
 
1093
 
 
1094
  // General Tab Widgets
 
1095
  HOOKUP_OBJECT (frmConnect, lblGeneralTab1, "lblGeneralTab1");
 
1096
  HOOKUP_OBJECT (frmConnect, vbxGeneralTab1, "vbxGeneralTab1");
 
1097
 
 
1098
    // Logon Frame Widgets
 
1099
    HOOKUP_OBJECT (frmConnect, frameLogon, "frameLogon");
 
1100
    HOOKUP_OBJECT (frmConnect, lblLogonFrame, "lblLogonFrame");
 
1101
    HOOKUP_OBJECT (frmConnect, tblLogon0, "tblLogon0");
 
1102
    HOOKUP_OBJECT (frmConnect, tblLogon1, "tblLogon1");
 
1103
    HOOKUP_OBJECT (frmConnect, lblLogonNote, "lblLogonNote");
 
1104
    HOOKUP_OBJECT (frmConnect, imgGeneralLogon, "imgGeneralLogon");
 
1105
    HOOKUP_OBJECT (frmConnect, lblComputer, "lblComputer");
 
1106
    HOOKUP_OBJECT (frmConnect, cboComputer, "cboComputer");
 
1107
    HOOKUP_OBJECT (frmConnect, txtComputer, "txtComputer");
 
1108
    HOOKUP_OBJECT (frmConnect, lblProtocol, "lblProtocol");
 
1109
    HOOKUP_OBJECT (frmConnect, optProtocol, "optProtocol");
 
1110
    HOOKUP_OBJECT (frmConnect, mnuProtocol, "mnuProtocol");
 
1111
    HOOKUP_OBJECT (frmConnect, lblUsername, "lblUsername");
 
1112
    HOOKUP_OBJECT (frmConnect, txtUsername, "txtUsername");
 
1113
    HOOKUP_OBJECT (frmConnect, lblPassword, "lblPassword");
 
1114
    HOOKUP_OBJECT (frmConnect, txtPassword, "txtPassword");
 
1115
    HOOKUP_OBJECT (frmConnect, lblDomain, "lblDomain");
 
1116
    HOOKUP_OBJECT (frmConnect, txtDomain, "txtDomain");
 
1117
    HOOKUP_OBJECT (frmConnect, lblClientHostname, "lblClientHostname");
 
1118
    HOOKUP_OBJECT (frmConnect, txtClientHostname, "txtClientHostname");
 
1119
    HOOKUP_OBJECT (frmConnect, lblProtoFile, "lblProtoFile");
 
1120
    HOOKUP_OBJECT (frmConnect, hbxProtoFile, "hbxProtoFile");
 
1121
    HOOKUP_OBJECT (frmConnect, txtProtoFile, "txtProtoFile");
 
1122
    HOOKUP_OBJECT (frmConnect, btnProtoFile, "btnProtoFile");
 
1123
 
 
1124
    // Profile Launcher Widgets
 
1125
    HOOKUP_OBJECT (frmConnect, hbxProfileLauncher, "hbxProfileLauncher");
 
1126
    HOOKUP_OBJECT (frmConnect, optProfileLauncher, "optProfileLauncher");
 
1127
    // Profile File Ops Widgets
 
1128
    HOOKUP_OBJECT (frmConnect, hbxFileOps, "hbxFileOps");
 
1129
    HOOKUP_OBJECT (frmConnect, btnSaveAs, "btnSaveAs");
 
1130
    HOOKUP_OBJECT (frmConnect, btnOpen, "btnOpen");
 
1131
 
 
1132
  // Display Tab Widgets
 
1133
  HOOKUP_OBJECT (frmConnect, lblDisplayTab1, "lblDisplayTab1");
 
1134
  HOOKUP_OBJECT (frmConnect, vbxDisplayTab1, "vbxDisplayTab1");
 
1135
 
 
1136
    // Size Frame Widgets
 
1137
    HOOKUP_OBJECT (frmConnect, frameSize, "frameSize");
 
1138
    HOOKUP_OBJECT (frmConnect, lblSizeFrame, "lblSizeFrame");
 
1139
    HOOKUP_OBJECT (frmConnect, hbxSize, "hbxSize");
 
1140
    HOOKUP_OBJECT (frmConnect, imgSize, "imgSize");
 
1141
    HOOKUP_OBJECT (frmConnect, vbxSize, "vbxSize");
 
1142
    HOOKUP_OBJECT (frmConnect, optSize1, "optSize1");
 
1143
    HOOKUP_OBJECT (frmConnect, optSize2, "optSize2");
 
1144
    HOOKUP_OBJECT (frmConnect, alnSize, "alnSize");
 
1145
    HOOKUP_OBJECT (frmConnect, optSize, "optSize");
 
1146
    HOOKUP_OBJECT (frmConnect, optSize3, "optSize3");
 
1147
    HOOKUP_OBJECT (frmConnect, alnAltFullSwitch, "alnAltFullSwitch");
 
1148
    HOOKUP_OBJECT (frmConnect, chkAltFullSwitch, "chkAltFullSwitch");
 
1149
 
 
1150
    // Color Frame Widgets
 
1151
    HOOKUP_OBJECT (frmConnect, frameColor, "frameColor");
 
1152
    HOOKUP_OBJECT (frmConnect, lblColorFrame, "lblColorFrame");
 
1153
    HOOKUP_OBJECT (frmConnect, hbxColor, "hbxColor");
 
1154
    HOOKUP_OBJECT (frmConnect, imgColor, "imgColor");
 
1155
    HOOKUP_OBJECT (frmConnect, vbxColor, "vbxColor");
 
1156
    HOOKUP_OBJECT (frmConnect, optColor1, "optColor1");
 
1157
    HOOKUP_OBJECT (frmConnect, optColor2, "optColor2");
 
1158
    HOOKUP_OBJECT (frmConnect, alnColor, "alnColor");
 
1159
    HOOKUP_OBJECT (frmConnect, optColor, "optColor");
 
1160
 
 
1161
  // Local Resources Tab Widgets
 
1162
  HOOKUP_OBJECT (frmConnect, lblLocalTab1, "lblLocalTab1");
 
1163
  HOOKUP_OBJECT (frmConnect, vbxLocalTab1, "vbxLocalTab1");
 
1164
 
 
1165
    // Sound Frame Widgets
 
1166
    HOOKUP_OBJECT (frmConnect, frameSound, "frameSound");
 
1167
    HOOKUP_OBJECT (frmConnect, lblSoundFrame, "lblSoundFrame");
 
1168
    HOOKUP_OBJECT (frmConnect, tblSound, "tblSound");
 
1169
    HOOKUP_OBJECT (frmConnect, imgSound, "imgSound");
 
1170
    HOOKUP_OBJECT (frmConnect, vbxSound, "vbxSound");
 
1171
    HOOKUP_OBJECT (frmConnect, optSound1, "optSound1");
 
1172
    HOOKUP_OBJECT (frmConnect, optSound2, "optSound2");
 
1173
    HOOKUP_OBJECT (frmConnect, optSound3, "optSound3");
 
1174
 
 
1175
    // Keyboard Frame Widgets
 
1176
    HOOKUP_OBJECT (frmConnect, frameKeyboard, "frameKeyboard");
 
1177
    HOOKUP_OBJECT (frmConnect, lblKeyboardFrame, "lblKeyboardFrame");
 
1178
    HOOKUP_OBJECT (frmConnect, tblKeyboard, "tblKeyboard");
 
1179
    HOOKUP_OBJECT (frmConnect, lblKeyboard, "lblKeyboard");
 
1180
    HOOKUP_OBJECT (frmConnect, optKeyboard, "optKeyboard");
 
1181
    HOOKUP_OBJECT (frmConnect, mnuKeyboard, "mnuKeyboard");
 
1182
    HOOKUP_OBJECT (frmConnect, miKeyboard, "miKeyboard");
 
1183
    HOOKUP_OBJECT (frmConnect, lblKeyboardLang, "lblKeyboardLang");
 
1184
    HOOKUP_OBJECT (frmConnect, cboKeyboardLang, "cboKeyboardLang");
 
1185
    HOOKUP_OBJECT (frmConnect, txtKeyboardLang, "txtKeyboardLang");
 
1186
    HOOKUP_OBJECT (frmConnect, imgKeyboard, "imgKeyboard");
 
1187
 
 
1188
 
 
1189
  // Program Tab Widgets
 
1190
  HOOKUP_OBJECT (frmConnect, lblProgramsTab1, "lblProgramsTab1");
 
1191
 
 
1192
    // Program Frame Widgets
 
1193
    HOOKUP_OBJECT (frmConnect, frameProgram, "frameProgram");
 
1194
    HOOKUP_OBJECT (frmConnect, lblProgramFrame, "lblProgramFrame");
 
1195
    HOOKUP_OBJECT (frmConnect, tblProgram, "tblProgram");
 
1196
    HOOKUP_OBJECT (frmConnect, chkStartProgram, "chkStartProgram");
 
1197
    HOOKUP_OBJECT (frmConnect, imgProgram, "imgProgram");
 
1198
    HOOKUP_OBJECT (frmConnect, lblProgramPath, "lblProgramPath");
 
1199
    HOOKUP_OBJECT (frmConnect, txtProgramPath, "txtProgramPath");
 
1200
    HOOKUP_OBJECT (frmConnect, lblStartFolder, "lblStartFolder");
 
1201
    HOOKUP_OBJECT (frmConnect, txtStartFolder, "txtStartFolder");
 
1202
 
 
1203
  // Performance Tab Widgets
 
1204
  HOOKUP_OBJECT (frmConnect, lblPerformanceTab1, "lblPerformanceTab1");
 
1205
 
 
1206
    // Performance Frame Widgets
 
1207
    HOOKUP_OBJECT (frmConnect, framePerform, "framePerform");
 
1208
    HOOKUP_OBJECT (frmConnect, lblPerformFrame, "lblPerformFrame");
 
1209
    HOOKUP_OBJECT (frmConnect, tblPerform, "tblPerform");
 
1210
    HOOKUP_OBJECT (frmConnect, imgPerform, "imgPerform");
 
1211
    HOOKUP_OBJECT (frmConnect, lblPerformanceOptions, "lblPerformanceOptions");
 
1212
    HOOKUP_OBJECT (frmConnect, vbxExpChecks, "vbxExpChecks");
 
1213
    HOOKUP_OBJECT (frmConnect, chkDesktopBackground, "chkDesktopBackground");
 
1214
    HOOKUP_OBJECT (frmConnect, chkWindowContent, "chkWindowContent");
 
1215
    HOOKUP_OBJECT (frmConnect, chkAnimation, "chkAnimation");
 
1216
    HOOKUP_OBJECT (frmConnect, chkThemes, "chkThemes");
 
1217
    HOOKUP_OBJECT (frmConnect, chkBitmapCache, "chkBitmapCache");
 
1218
    HOOKUP_OBJECT (frmConnect, chkNoMotionEvents, "chkNoMotionEvents");
 
1219
    HOOKUP_OBJECT (frmConnect, chkEnableWMKeys, "chkEnableWMKeys");
 
1220
    HOOKUP_OBJECT (frmConnect, chkHideWMDecorations, "chkHideWMDecorations");
 
1221
 
 
1222
  // Complete Button Box Widgets
 
1223
  HOOKUP_OBJECT (frmConnect, hbbAppOps, "hbbAppOps");
 
1224
  HOOKUP_OBJECT (frmConnect, btnConnect, "btnConnect");
 
1225
  HOOKUP_OBJECT (frmConnect, alnConnect, "alnConnect");
 
1226
  HOOKUP_OBJECT (frmConnect, hbxConnect, "hbxConnect");
 
1227
  HOOKUP_OBJECT (frmConnect, imgConnect, "imgConnect");
 
1228
  HOOKUP_OBJECT (frmConnect, lblConnect, "lblConnect");
 
1229
  HOOKUP_OBJECT (frmConnect, btnQuit, "btnQuit");
 
1230
  HOOKUP_OBJECT (frmConnect, btnHelp, "btnHelp");
 
1231
 
 
1232
  // disable the keyboard opts until they are supported
 
1233
  gtk_widget_set_sensitive (optKeyboard, FALSE);
 
1234
 
 
1235
  // toggle the start program thingy to false.  will be set after this by loading.
 
1236
  gtk_toggle_button_set_active ((GtkToggleButton*) chkStartProgram, FALSE);
 
1237
  gtk_widget_set_sensitive (txtProgramPath, FALSE);
 
1238
  gtk_widget_set_sensitive (txtStartFolder, FALSE);
 
1239
  
 
1240
  gtk_widget_set_sensitive (alnSize, FALSE);
 
1241
  gtk_toggle_button_set_active ((GtkToggleButton*) chkAltFullSwitch, FALSE);
 
1242
  gtk_widget_set_sensitive (alnAltFullSwitch, FALSE);
 
1243
  gtk_widget_set_sensitive (alnColor, FALSE);
 
1244
 
 
1245
  gtk_widget_show_all (frmConnect);
 
1246
 
 
1247
  // load mru & profile launcher
 
1248
  mru_to_screen (frmConnect);
 
1249
  rdp_load_profile_launcher (frmConnect);
 
1250
 
 
1251
  gtk_widget_hide (chkDesktopBackground);
 
1252
  gtk_widget_hide (chkWindowContent);
 
1253
  gtk_widget_hide (chkAnimation);
 
1254
  gtk_widget_hide (chkThemes);
 
1255
 
 
1256
  gConnect = frmConnect;
 
1257
 
 
1258
  //return frmConnect;
 
1259
  return 0;
 
1260
}
 
1261
 
 
1262
 
 
1263
/***************************************
 
1264
*                                      *
 
1265
*   Event Handlers                     *
 
1266
*                                      *
 
1267
***************************************/
 
1268
 
 
1269
 
 
1270
 
 
1271
void
 
1272
on_btnConnect_clicked                  (GtkButton       *button,
 
1273
                                        gpointer         user_data)
 
1274
{
 
1275
  GtkWidget *main_window;
 
1276
  rdp_file *rdp = NULL;
 
1277
 
 
1278
  #ifdef TSCLIENT_DEBUG
 
1279
  printf ("on_btnConnect_clicked\n");
 
1280
  #endif
 
1281
 
 
1282
  main_window = lookup_widget((GtkWidget*)button, "frmConnect");
 
1283
 
 
1284
  rdp = g_new0 (rdp_file, 1);
 
1285
  rdp_file_init (rdp);
 
1286
  rdp_file_get_screen (rdp, main_window);
 
1287
  // save the damn thing as last
 
1288
  rdp_file_save (rdp, g_build_path ("/", tsc_home_path(), "last.tsc", NULL));
 
1289
 
 
1290
  gtk_widget_hide (main_window);
 
1291
  gtk_widget_destroy (main_window);
 
1292
 
 
1293
  if (tsc_launch_remote (rdp, 0) == 0) {
 
1294
    mru_add_server (rdp->full_address);
 
1295
  }
 
1296
  // recreate the main window
 
1297
  create_frmConnect ();
 
1298
  rdp_file_set_screen (rdp, gConnect);
 
1299
  g_free (rdp);
 
1300
}
 
1301
 
 
1302
 
 
1303
void
 
1304
on_btnQuit_clicked                     (GtkButton       *button,
 
1305
                                        gpointer         user_data)
 
1306
{
 
1307
  GtkWidget *main_window;
 
1308
  rdp_file *rdp_last = NULL;
 
1309
 
 
1310
  #ifdef TSCLIENT_DEBUG
 
1311
  printf ("on_btnQuit_clicked\n");
 
1312
  #endif
 
1313
 
 
1314
  main_window = gConnect;
 
1315
  gtk_widget_hide (main_window);
 
1316
 
 
1317
  // save the damn thing
 
1318
  rdp_last = g_new0 (rdp_file, 1);
 
1319
  rdp_file_init (rdp_last);
 
1320
  rdp_file_get_screen (rdp_last, main_window);
 
1321
  rdp_file_save (rdp_last, g_build_path ("/", tsc_home_path(), "last.tsc", NULL));
 
1322
  g_free (rdp_last);
 
1323
 
 
1324
  gtk_main_quit();
 
1325
}
 
1326
 
 
1327
 
 
1328
void
 
1329
on_btnHelp_clicked                     (GtkButton       *button,
 
1330
                                        gpointer         user_data)
 
1331
{
 
1332
  tsc_about_dialog ();
 
1333
}
 
1334
 
 
1335
 
 
1336
void
 
1337
on_optSize1_clicked                    (GtkButton       *button,
 
1338
                                        gpointer         user_data)
 
1339
{
 
1340
  GtkWidget *aln_size, *aln_afss;
 
1341
 
 
1342
  aln_size = lookup_widget (gConnect, "alnSize");
 
1343
  aln_afss = lookup_widget (gConnect, "alnAltFullSwitch");
 
1344
  
 
1345
  gtk_widget_set_sensitive (aln_size, FALSE);
 
1346
  gtk_widget_set_sensitive (aln_afss, FALSE);
 
1347
}
 
1348
 
 
1349
 
 
1350
void
 
1351
on_optSize2_clicked                    (GtkButton       *button,
 
1352
                                        gpointer         user_data)
 
1353
{
 
1354
  GtkWidget *aln_size, *aln_afss;
 
1355
 
 
1356
  aln_size = lookup_widget (gConnect, "alnSize");
 
1357
  aln_afss = lookup_widget (gConnect, "alnAltFullSwitch");
 
1358
  gtk_widget_set_sensitive (aln_size, TRUE);
 
1359
  gtk_widget_set_sensitive (aln_afss, FALSE);
 
1360
}
 
1361
 
 
1362
 
 
1363
void
 
1364
on_optSize3_clicked                    (GtkButton       *button,
 
1365
                                        gpointer         user_data)
 
1366
{
 
1367
  GtkWidget *aln_size, *aln_afss;
 
1368
 
 
1369
  aln_size = lookup_widget (gConnect, "alnSize");
 
1370
  aln_afss = lookup_widget (gConnect, "alnAltFullSwitch");
 
1371
  gtk_widget_set_sensitive (aln_size, FALSE);
 
1372
  gtk_widget_set_sensitive (aln_afss, TRUE);
 
1373
}
 
1374
 
 
1375
 
 
1376
void
 
1377
on_optColor1_clicked                   (GtkButton       *button,
 
1378
                                        gpointer         user_data)
 
1379
{
 
1380
  GtkWidget *aln_color;
 
1381
 
 
1382
  aln_color = lookup_widget (gConnect, "alnColor");
 
1383
  gtk_widget_set_sensitive (aln_color, FALSE);
 
1384
}
 
1385
 
 
1386
 
 
1387
void
 
1388
on_optColor2_clicked                   (GtkButton       *button,
 
1389
                                        gpointer         user_data)
 
1390
{
 
1391
  GtkWidget *aln_color;
 
1392
 
 
1393
  aln_color = lookup_widget (gConnect, "alnColor");
 
1394
  gtk_widget_set_sensitive (aln_color, TRUE);
 
1395
}
 
1396
 
 
1397
void
 
1398
on_btnSaveAs_clicked                   (GtkButton       *button,
 
1399
                                        gpointer         user_data)
 
1400
{
 
1401
  GtkWidget *save_selector = NULL;
 
1402
  GtkWidget *main_window;
 
1403
  rdp_file *rdp = NULL;
 
1404
 
 
1405
  save_selector = gtk_file_selection_new ("Select File");
 
1406
  gtk_widget_set_name (save_selector, "save_selector");
 
1407
  gtk_container_set_border_width (GTK_CONTAINER (save_selector), 12);
 
1408
  gtk_window_set_position (GTK_WINDOW (save_selector), GTK_WIN_POS_CENTER);
 
1409
  gtk_window_set_modal (GTK_WINDOW (save_selector), TRUE);
 
1410
  gtk_window_set_destroy_with_parent (GTK_WINDOW (save_selector), TRUE);
 
1411
  gtk_window_set_title ((GtkWindow*) save_selector, _("Input a filename to save as..."));
 
1412
  gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (save_selector));
 
1413
  gtk_file_selection_set_select_multiple (GTK_FILE_SELECTION (save_selector), FALSE);
 
1414
  gtk_window_set_icon (GTK_WINDOW (save_selector), create_pixbuf ("tsclient.png"));
 
1415
  gtk_widget_grab_default (GTK_FILE_SELECTION (save_selector)->ok_button);
 
1416
  gtk_file_selection_set_filename (GTK_FILE_SELECTION (save_selector), g_build_path ("/", tsc_home_path(), "/", NULL));
 
1417
 
 
1418
  if (gtk_dialog_run (GTK_DIALOG (save_selector)) == GTK_RESPONSE_OK) {
 
1419
    gchar *filename = (gchar*)gtk_file_selection_get_filename (GTK_FILE_SELECTION (save_selector));
 
1420
    if (filename) {
 
1421
      #ifdef TSCLIENT_DEBUG
 
1422
      printf ("filename: %s\n", filename);
 
1423
      #endif
 
1424
      main_window = lookup_widget((GtkWidget*)button, "frmConnect");
 
1425
      // save rdp file
 
1426
      rdp = g_new0 (rdp_file, 1);
 
1427
      rdp_file_init (rdp);
 
1428
      rdp_file_get_screen (rdp, main_window);
 
1429
      rdp_file_save (rdp, filename);
 
1430
      g_free (rdp);
 
1431
    }
 
1432
  }
 
1433
  gtk_widget_destroy (GTK_WIDGET (save_selector));
 
1434
  return;
 
1435
}
 
1436
 
 
1437
 
 
1438
void
 
1439
on_btnOpen_clicked                     (GtkButton       *button,
 
1440
                                        gpointer         user_data)
 
1441
{
 
1442
  GtkWidget *open_selector = NULL;
 
1443
  GtkWidget *main_window;
 
1444
  rdp_file *rdp = NULL;
 
1445
 
 
1446
  open_selector = gtk_file_selection_new ("Select File");
 
1447
  gtk_widget_set_name (open_selector, "open_selector");
 
1448
  gtk_container_set_border_width (GTK_CONTAINER (open_selector), 12);
 
1449
  gtk_window_set_position (GTK_WINDOW (open_selector), GTK_WIN_POS_CENTER);
 
1450
  gtk_window_set_modal (GTK_WINDOW (open_selector), TRUE);
 
1451
  gtk_window_set_destroy_with_parent (GTK_WINDOW (open_selector), TRUE);
 
1452
  gtk_window_set_title ((GtkWindow*) open_selector, _("Choose an RDP file to open..."));
 
1453
  gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (open_selector));
 
1454
  gtk_file_selection_set_select_multiple (GTK_FILE_SELECTION (open_selector), FALSE);
 
1455
  gtk_window_set_icon (GTK_WINDOW (open_selector), create_pixbuf ("tsclient.png"));
 
1456
  gtk_widget_grab_default (GTK_FILE_SELECTION (open_selector)->ok_button);
 
1457
  gtk_file_selection_set_filename (GTK_FILE_SELECTION (open_selector), g_build_path ("/", tsc_home_path(), "/", NULL));
 
1458
 
 
1459
  if (gtk_dialog_run (GTK_DIALOG (open_selector)) == GTK_RESPONSE_OK) {
 
1460
    gchar *filename = (gchar*)gtk_file_selection_get_filename (GTK_FILE_SELECTION (open_selector));
 
1461
    if (filename) {
 
1462
      #ifdef TSCLIENT_DEBUG
 
1463
      printf ("filename: %s\n", filename);
 
1464
      #endif
 
1465
      main_window = lookup_widget((GtkWidget*)button, "frmConnect");
 
1466
      // check for file in ~/
 
1467
      if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
 
1468
        // load if exists
 
1469
        rdp = g_new0 (rdp_file, 1);
 
1470
        rdp_file_init (rdp);
 
1471
        rdp_file_load (rdp, filename);
 
1472
        rdp_file_set_screen (rdp, main_window);
 
1473
      }
 
1474
      g_free (rdp);
 
1475
    }
 
1476
  }
 
1477
  gtk_widget_destroy (GTK_WIDGET (open_selector));
 
1478
  return;
 
1479
}
 
1480
 
 
1481
 
 
1482
void
 
1483
on_btnProtoFile_clicked                (GtkButton       *button,
 
1484
                                        gpointer         user_data)
 
1485
{
 
1486
  GtkWidget *open_selector = NULL;
 
1487
  GtkWidget *main_window, *proto_file;
 
1488
  guint pos = 0;
 
1489
 
 
1490
  open_selector = gtk_file_selection_new ("Select File");
 
1491
  gtk_widget_set_name (open_selector, "open_selector");
 
1492
  gtk_container_set_border_width (GTK_CONTAINER (open_selector), 12);
 
1493
  gtk_window_set_position (GTK_WINDOW (open_selector), GTK_WIN_POS_CENTER);
 
1494
  gtk_window_set_modal (GTK_WINDOW (open_selector), TRUE);
 
1495
  gtk_window_set_destroy_with_parent (GTK_WINDOW (open_selector), TRUE);
 
1496
  gtk_window_set_title ((GtkWindow*) open_selector, _("Choose an RDP file to open..."));
 
1497
  gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (open_selector));
 
1498
  gtk_file_selection_set_select_multiple (GTK_FILE_SELECTION (open_selector), FALSE);
 
1499
  gtk_window_set_icon (GTK_WINDOW (open_selector), create_pixbuf ("tsclient.png"));
 
1500
  gtk_widget_grab_default (GTK_FILE_SELECTION (open_selector)->ok_button);
 
1501
  gtk_file_selection_set_filename (GTK_FILE_SELECTION (open_selector), g_build_path ("/", tsc_home_path(), "/", NULL));
 
1502
 
 
1503
  if (gtk_dialog_run (GTK_DIALOG (open_selector)) == GTK_RESPONSE_OK) {
 
1504
    gchar *filename = (gchar*)gtk_file_selection_get_filename (GTK_FILE_SELECTION (open_selector));
 
1505
    if (filename) {
 
1506
      #ifdef TSCLIENT_DEBUG
 
1507
      printf ("filename: %s\n", filename);
 
1508
      #endif
 
1509
      main_window = lookup_widget((GtkWidget*)button, "frmConnect");
 
1510
      proto_file = lookup_widget((GtkWidget*)main_window, "txtProtoFile");
 
1511
      gtk_editable_delete_text ((GtkEditable*) proto_file, 0, -1);
 
1512
      gtk_editable_insert_text((GtkEditable*) proto_file, filename, strlen(filename), &pos);
 
1513
    }
 
1514
  }
 
1515
  gtk_widget_destroy (GTK_WIDGET (open_selector));
 
1516
  return;
 
1517
}
 
1518
 
 
1519
 
 
1520
void
 
1521
on_chkStartProgram_toggled             (GtkToggleButton *togglebutton,
 
1522
                                        gpointer         user_data)
 
1523
{
 
1524
  GtkWidget *txtProgramPath, *txtStartFolder;
 
1525
  txtProgramPath = lookup_widget (GTK_WIDGET (gConnect), "txtProgramPath");
 
1526
  txtStartFolder = lookup_widget (GTK_WIDGET (gConnect), "txtStartFolder");
 
1527
 
 
1528
  if (gtk_toggle_button_get_active (togglebutton)) {
 
1529
    gtk_widget_set_sensitive (txtProgramPath, TRUE);
 
1530
    gtk_widget_set_sensitive (txtStartFolder, TRUE);
 
1531
  } else {
 
1532
    gtk_widget_set_sensitive (txtProgramPath, FALSE);
 
1533
    gtk_widget_set_sensitive (txtStartFolder, FALSE);
 
1534
  }
 
1535
}
 
1536
 
 
1537
 
 
1538
void
 
1539
on_protocol_changed (GtkMenuItem *menuitem, gpointer user_data)
 
1540
{
 
1541
  GtkWidget *main_win;
 
1542
  main_win = lookup_widget (GTK_WIDGET (menuitem), "frmConnect");
 
1543
  tsc_set_protocol_widgets (main_win, (gint)user_data);
 
1544
}
 
1545