00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifdef HAVE_CONFIG_H
00028 # include <config.h>
00029 #endif
00030
00031 #include <sys/types.h>
00032 #include <sys/stat.h>
00033 #include <unistd.h>
00034 #include <string.h>
00035
00036 #include <gdk/gdkkeysyms.h>
00037 #include <gtk/gtk.h>
00038
00039 #include "callbacks.h"
00040 #include "interface.h"
00041 #include "support.h"
00042 #include "main.h"
00043 #include "debug.h"
00044 #include "help.h"
00045
00046 GtkWidget*
00047 create_mainWindow (void)
00048 {
00049 GtkWidget *mainWindow;
00050 GtkWidget *vbox1;
00051 GtkWidget *hbox1;
00052
00053 GtkWidget *combo_entry1;
00054 guint browseButton_key;
00055 GtkWidget *browseButton;
00056 GtkWidget *hbox2;
00057 guint checkbutton_key;
00058
00059 guint optionsButton_key;
00060 GtkWidget *optionsButton;
00061 guint runButton_key;
00062 GtkWidget *runButton;
00063
00064 GtkWidget *hbox3;
00065 guint label1_key;
00066 GtkWidget *label1;
00067 GtkWidget *whoEntry;
00068 GtkWidget *hbox4;
00069 guint label2_key;
00070 GtkWidget *label2;
00071 GtkWidget *passwordEntry;
00072 GtkAccelGroup *accel_group;
00073
00074 accel_group = gtk_accel_group_new ();
00075
00076 mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
00077
00078
00079
00080
00081 gtk_object_set_data (GTK_OBJECT (mainWindow), "mainWindow", mainWindow);
00082 gtk_window_set_title (GTK_WINDOW (mainWindow), "run-free");
00083
00084 vbox1 = gtk_vbox_new (FALSE, 0);
00085 gtk_widget_ref (vbox1);
00086 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "vbox1", vbox1,
00087 (GtkDestroyNotify) gtk_widget_unref);
00088 gtk_widget_show (vbox1);
00089 gtk_container_add (GTK_CONTAINER (mainWindow), vbox1);
00090
00091 hbox1 = gtk_hbox_new (FALSE, 0);
00092 gtk_widget_ref (hbox1);
00093 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "hbox1", hbox1,
00094 (GtkDestroyNotify) gtk_widget_unref);
00095 gtk_widget_show (hbox1);
00096 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
00097
00098 combo1 = gtk_combo_new ();
00099 gtk_widget_ref (combo1);
00100 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "combo1", combo1,
00101 (GtkDestroyNotify) gtk_widget_unref);
00102 gtk_widget_show (combo1);
00103 gtk_box_pack_start (GTK_BOX (hbox1), combo1, TRUE, TRUE, 0);
00104
00105 combo_entry1 = GTK_COMBO (combo1)->entry;
00106 gtk_widget_ref (combo_entry1);
00107 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "combo_entry1", combo_entry1,
00108 (GtkDestroyNotify) gtk_widget_unref);
00109
00110 gtk_widget_show (combo_entry1);
00111
00112 gtk_combo_set_use_arrows_always(GTK_COMBO(combo1), 1);
00113
00114 browseButton = gtk_button_new_with_label ("");
00115 browseButton_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (browseButton)->child),
00116 "Bro_wse");
00117 gtk_widget_add_accelerator (browseButton, "clicked", accel_group,
00118 browseButton_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
00119 gtk_widget_ref (browseButton);
00120 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "browseButton", browseButton,
00121 (GtkDestroyNotify) gtk_widget_unref);
00122 gtk_widget_show (browseButton);
00123 gtk_box_pack_start (GTK_BOX (hbox1), browseButton, FALSE, FALSE, 0);
00124 gtk_widget_set_usize (browseButton, 49, -2);
00125
00126 hbox2 = gtk_hbox_new (FALSE, 9);
00127 gtk_widget_ref (hbox2);
00128 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "hbox2", hbox2,
00129 (GtkDestroyNotify) gtk_widget_unref);
00130 gtk_widget_show (hbox2);
00131 gtk_box_pack_start (GTK_BOX (vbox1), hbox2, TRUE, TRUE, 0);
00132
00133 checkbutton = gtk_check_button_new_with_label ("");
00134 checkbutton_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (checkbutton)->child),
00135 "Run in _Terminal");
00136 gtk_widget_add_accelerator (checkbutton, "clicked", accel_group,
00137 checkbutton_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
00138 gtk_widget_ref (checkbutton);
00139 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "checkbutton", checkbutton,
00140 (GtkDestroyNotify) gtk_widget_unref);
00141 gtk_widget_show (checkbutton);
00142 gtk_box_pack_start (GTK_BOX (hbox2), checkbutton, FALSE, FALSE, 0);
00143
00144
00145
00146
00147 optionsButton = gtk_button_new_with_label ("");
00148 optionsButton_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (optionsButton)->child),
00149 "_Options");
00150
00151
00152 gtk_widget_ref (optionsButton);
00153 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "optionsButton", optionsButton,
00154 (GtkDestroyNotify) gtk_widget_unref);
00155
00156 gtk_box_pack_start (GTK_BOX (hbox2), optionsButton, FALSE, FALSE, 0);
00157
00158 runButton = gtk_button_new_with_label ("");
00159 runButton_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (runButton)->child),
00160 "_Run");
00161 gtk_widget_add_accelerator (runButton, "clicked", accel_group,
00162 runButton_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
00163 gtk_widget_ref (runButton);
00164 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "runButton", runButton,
00165 (GtkDestroyNotify) gtk_widget_unref);
00166 gtk_widget_show (runButton);
00167 gtk_box_pack_start (GTK_BOX (hbox2), runButton, FALSE, FALSE, 0);
00168
00169
00170
00171
00172
00173
00174 gtk_widget_set_usize (runButton, 103, -2);
00175
00176 vbox2 = gtk_vbox_new (FALSE, 0);
00177 gtk_widget_ref (vbox2);
00178 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "vbox2", vbox2,
00179 (GtkDestroyNotify) gtk_widget_unref);
00180
00181
00182
00183
00184 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0);
00185
00186 hbox3 = gtk_hbox_new (FALSE, 14);
00187 gtk_widget_ref (hbox3);
00188 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "hbox3", hbox3,
00189 (GtkDestroyNotify) gtk_widget_unref);
00190 gtk_widget_show (hbox3);
00191 gtk_box_pack_start (GTK_BOX (vbox2), hbox3, TRUE, TRUE, 0);
00192
00193 label1 = gtk_label_new ("");
00194 label1_key = gtk_label_parse_uline (GTK_LABEL (label1),
00195 "Run _As");
00196 gtk_widget_ref (label1);
00197 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "label1", label1,
00198 (GtkDestroyNotify) gtk_widget_unref);
00199 gtk_widget_show (label1);
00200 gtk_box_pack_start (GTK_BOX (hbox3), label1, FALSE, FALSE, 0);
00201
00202 whoEntry = gtk_entry_new ();
00203 gtk_widget_ref (whoEntry);
00204 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "whoEntry", whoEntry,
00205 (GtkDestroyNotify) gtk_widget_unref);
00206 gtk_widget_show (whoEntry);
00207 gtk_box_pack_start (GTK_BOX (hbox3), whoEntry, TRUE, TRUE, 0);
00208
00209 hbox4 = gtk_hbox_new (FALSE, 0);
00210 gtk_widget_ref (hbox4);
00211 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "hbox4", hbox4,
00212 (GtkDestroyNotify) gtk_widget_unref);
00213 gtk_widget_show (hbox4);
00214 gtk_box_pack_start (GTK_BOX (vbox2), hbox4, TRUE, TRUE, 0);
00215
00216 label2 = gtk_label_new ("");
00217 label2_key = gtk_label_parse_uline (GTK_LABEL (label2),
00218 "Pa_ssword");
00219 gtk_widget_ref (label2);
00220 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "label2", label2,
00221 (GtkDestroyNotify) gtk_widget_unref);
00222 gtk_widget_show (label2);
00223 gtk_box_pack_start (GTK_BOX (hbox4), label2, FALSE, FALSE, 0);
00224
00225 passwordEntry = gtk_entry_new ();
00226 gtk_widget_ref (passwordEntry);
00227 gtk_object_set_data_full (GTK_OBJECT (mainWindow), "passwordEntry", passwordEntry,
00228 (GtkDestroyNotify) gtk_widget_unref);
00229 gtk_widget_show (passwordEntry);
00230 gtk_box_pack_start (GTK_BOX (hbox4), passwordEntry, TRUE, TRUE, 0);
00231 gtk_entry_set_visibility (GTK_ENTRY (passwordEntry), FALSE);
00232
00233 gtk_signal_connect (GTK_OBJECT (mainWindow), "destroy",
00234 GTK_SIGNAL_FUNC (on_mainWindow_destroy),
00235 NULL);
00236 gtk_signal_connect (GTK_OBJECT (mainWindow), "key_press_event",
00237 GTK_SIGNAL_FUNC (on_mainWindow_key_press_event),
00238 NULL);
00239 gtk_signal_connect (GTK_OBJECT (combo_entry1), "changed",
00240 GTK_SIGNAL_FUNC (on_combo_entry1_changed),
00241 NULL);
00242 gtk_signal_connect (GTK_OBJECT (combo1), "key_press_event",
00243 GTK_SIGNAL_FUNC (on_combo_key_press_event),
00244 NULL);
00245 gtk_signal_connect (GTK_OBJECT (combo_entry1), "key_press_event",
00246 GTK_SIGNAL_FUNC (on_combo_entry1_key_press_event),
00247 NULL);
00248 gtk_signal_connect (GTK_OBJECT (browseButton), "clicked",
00249 GTK_SIGNAL_FUNC (on_browseButton_clicked),
00250 NULL);
00251 gtk_signal_connect (GTK_OBJECT (checkbutton), "toggled",
00252 GTK_SIGNAL_FUNC (on_checkbutton_toggled),
00253 NULL);
00254 gtk_signal_connect (GTK_OBJECT (optionsButton), "clicked",
00255 GTK_SIGNAL_FUNC (on_optionsButton_clicked),
00256 NULL);
00257 gtk_signal_connect (GTK_OBJECT (runButton), "clicked",
00258 GTK_SIGNAL_FUNC (on_runButton_clicked),
00259 NULL);
00260 gtk_signal_connect (GTK_OBJECT (whoEntry), "grab_focus",
00261 GTK_SIGNAL_FUNC (on_whoEntry_grab_focus),
00262 NULL);
00263 gtk_signal_connect (GTK_OBJECT (passwordEntry), "grab_focus",
00264 GTK_SIGNAL_FUNC (on_passwordEntry_grab_focus),
00265 NULL);
00266
00267 gtk_widget_add_accelerator (whoEntry, "grab_focus", accel_group,
00268 label1_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
00269 gtk_widget_add_accelerator (passwordEntry, "grab_focus", accel_group,
00270 label2_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
00271
00272 gtk_combo_disable_activate(GTK_COMBO(combo1));
00273 gtk_widget_grab_focus (combo_entry1);
00274
00275
00276 gtk_window_add_accel_group (GTK_WINDOW (mainWindow), accel_group);
00277
00278 return mainWindow;
00279 }
00280
00281 GtkWidget*
00282 create_fileselection (void)
00283 {
00284 GtkWidget *fileselection;
00285 GtkWidget *ok_button1;
00286 GtkWidget *cancel_button1;
00287
00288 fileselection = gtk_file_selection_new ("Select File");
00289 gtk_object_set_data (GTK_OBJECT (fileselection), "fileselection", fileselection);
00290 gtk_container_set_border_width (GTK_CONTAINER (fileselection), 10);
00291
00292 ok_button1 = GTK_FILE_SELECTION (fileselection)->ok_button;
00293 gtk_object_set_data (GTK_OBJECT (fileselection), "ok_button1", ok_button1);
00294 gtk_widget_show (ok_button1);
00295 GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT);
00296
00297 cancel_button1 = GTK_FILE_SELECTION (fileselection)->cancel_button;
00298 gtk_object_set_data (GTK_OBJECT (fileselection), "cancel_button1", cancel_button1);
00299 gtk_widget_show (cancel_button1);
00300 GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT);
00301
00302
00303
00304
00305 gtk_signal_connect (GTK_OBJECT (fileselection), "delete_event",
00306 GTK_SIGNAL_FUNC (on_fileselection_delete_event),
00307 NULL);
00308 gtk_signal_connect (GTK_OBJECT (fileselection), "key_press_event",
00309 GTK_SIGNAL_FUNC (on_fileselection_key_press_event),
00310 NULL);
00311 gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked",
00312 GTK_SIGNAL_FUNC (on_ok_button1_clicked),
00313 NULL);
00314 gtk_signal_connect (GTK_OBJECT (cancel_button1), "clicked",
00315 GTK_SIGNAL_FUNC (on_cancel_button1_clicked),
00316 NULL);
00317
00318 return fileselection;
00319 }
00320
00321
00322
00323
00324
00325
00326
00327
00328 void keystrokes_dialog(void)
00329 {
00330 GtkWidget *dialog;
00331 GtkWidget *scrollwin;
00332 GtkWidget *help;
00333 GtkWidget *ok;
00334
00335 dialog = gtk_dialog_new();
00336
00337 gtk_window_set_title(GTK_WINDOW(dialog), "run-free Keystroke Help");
00338 gtk_container_border_width(GTK_CONTAINER(dialog), 5);
00339 gtk_widget_set_usize(dialog, 300, 300);
00340
00341 scrollwin = gtk_scrolled_window_new(NULL, NULL);
00342 gtk_container_border_width(GTK_CONTAINER(scrollwin), 10);
00343
00344 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
00345 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0);
00346 gtk_widget_show(scrollwin);
00347
00348 help = gtk_label_new(KEYSTROKES);
00349 gtk_label_set_justify(help, GTK_JUSTIFY_LEFT);
00350 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin), help);
00351 gtk_widget_show(help);
00352
00353 ok = gtk_button_new_with_label("OK");
00354 gtk_signal_connect(GTK_OBJECT(ok), "clicked",GTK_SIGNAL_FUNC(dialog_ok_clicked), dialog);
00355 GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT);
00356 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok, TRUE, TRUE, 0);
00357 gtk_widget_grab_default(ok);
00358 gtk_widget_show(ok);
00359
00360
00361 gtk_widget_show(dialog);
00362 }
00363
00364
00365