124
128
gtk_box_pack_start(GTK_BOX(hbox), scriptsCombo, TRUE, TRUE, 0);
125
129
items = g_list_append(items, SCRIPT_SUSPEND);
126
130
items = g_list_append(items, SCRIPT_RESUME);
127
items = g_list_append(items, SCRIPT_OFF);
131
items = g_list_append(items, SCRIPT_OFF);
128
132
items = g_list_append(items, SCRIPT_ON);
129
133
gtk_combo_set_popdown_strings(GTK_COMBO(scriptsCombo), items);
130
134
gtk_combo_set_use_arrows(GTK_COMBO(scriptsCombo), TRUE);
132
136
gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(scriptsCombo)->entry), FALSE);
133
137
gtk_signal_connect(GTK_OBJECT(GTK_COMBO(scriptsCombo)->entry), "changed",
134
138
GTK_SIGNAL_FUNC(Scripts_OnComboChanged), NULL);
140
gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_COMBO(scriptsCombo)->entry);
142
scriptsUseScript = gtk_check_button_new_with_mnemonic("_Use Script");
136
144
scriptsUseScript = gtk_check_button_new_with_label("Use Script");
137
146
gtk_widget_show(scriptsUseScript);
138
147
gtk_box_pack_start(GTK_BOX(scriptstab), scriptsUseScript, FALSE, FALSE, 0);
139
148
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(scriptsUseScript), TRUE);
172
181
termAppOption = "-x";
175
scriptsDefaultScript =
185
scriptsDefaultScript =
186
gtk_radio_button_new_with_mnemonic(NULL,("_Default Script"));
188
scriptsDefaultScript =
176
189
gtk_radio_button_new_with_label(NULL,("Default Script"));
177
191
gtk_widget_show(scriptsDefaultScript);
178
192
gtk_box_pack_start(GTK_BOX(scriptstab), scriptsDefaultScript, FALSE, FALSE, 0);
180
194
gtk_radio_button_group(GTK_RADIO_BUTTON(scriptsDefaultScript));
181
195
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(scriptsDefaultScript), TRUE);
182
196
gtk_signal_connect(GTK_OBJECT(scriptsDefaultScript), "toggled",
183
197
GTK_SIGNAL_FUNC(Scripts_OnDefaultScriptToggled), NULL);
200
scriptsCustomScript = gtk_radio_button_new_with_mnemonic(NULL,("Cu_stom Script"));
185
202
scriptsCustomScript = gtk_radio_button_new_with_label(NULL,("Custom Script"));
186
204
gtk_widget_show(scriptsCustomScript);
187
205
gtk_box_pack_start(GTK_BOX(scriptstab), scriptsCustomScript, FALSE, FALSE, 0);
188
206
gtk_radio_button_set_group(GTK_RADIO_BUTTON(scriptsCustomScript),
191
209
hbox = gtk_hbox_new(FALSE, 10);
192
210
gtk_widget_show(hbox);
193
211
gtk_box_pack_start(GTK_BOX(scriptstab), hbox, FALSE, FALSE, 0);
194
212
gtk_widget_set_usize(hbox, -1, 25);
196
214
scriptsPath = gtk_entry_new();
197
215
gtk_widget_show(scriptsPath);
198
216
gtk_box_pack_start(GTK_BOX(hbox), scriptsPath, TRUE, TRUE, 0);
199
217
gtk_widget_set_sensitive(scriptsPath, FALSE);
200
218
gtk_signal_connect(GTK_OBJECT(scriptsPath), "changed",
201
219
GTK_SIGNAL_FUNC(Scripts_PathOnChanged), NULL);
222
scriptsBrowse = gtk_button_new_with_mnemonic("_Browse...");
203
224
scriptsBrowse = gtk_button_new_with_label("Browse...");
204
226
gtk_widget_show(scriptsBrowse);
206
228
gtk_box_pack_start(GTK_BOX(hbox), scriptsBrowse, FALSE, FALSE, 0);
210
232
gtk_widget_set_usize(scriptsBrowse, 70, 6);
211
233
gtk_widget_set_sensitive(scriptsBrowse, FALSE);
212
gtk_signal_connect(GTK_OBJECT(scriptsBrowse), "clicked",
234
gtk_signal_connect(GTK_OBJECT(scriptsBrowse), "clicked",
213
235
GTK_SIGNAL_FUNC(Scripts_OnBrowse), NULL);
215
237
/* Only create edit button if there is an available X terminal app. */
240
scriptsEdit = gtk_button_new_with_mnemonic("_Edit...");
217
242
scriptsEdit = gtk_button_new_with_label("Edit...");
218
244
gtk_widget_show(scriptsEdit);
219
245
gtk_box_pack_end(GTK_BOX(hbox), scriptsEdit, FALSE, FALSE, 0);
220
246
gtk_widget_set_usize(scriptsEdit, 70, 25);
221
gtk_signal_connect(GTK_OBJECT(scriptsEdit), "clicked",
247
gtk_signal_connect(GTK_OBJECT(scriptsEdit), "clicked",
222
248
GTK_SIGNAL_FUNC(Scripts_OnEdit), NULL);
225
251
hbox = gtk_hbox_new(FALSE, 10);
226
252
gtk_widget_show(hbox);
227
253
gtk_box_pack_end(GTK_BOX(scriptstab), hbox, FALSE, FALSE, 0);
256
scriptsRun = gtk_button_new_with_mnemonic("_Run Now");
229
258
scriptsRun = gtk_button_new_with_label("Run Now");
230
260
gtk_widget_show(scriptsRun);
231
261
gtk_box_pack_end(GTK_BOX(hbox), scriptsRun, FALSE, FALSE, 0);
232
262
gtk_widget_set_usize(scriptsRun, 70, 25);
233
gtk_signal_connect(GTK_OBJECT(scriptsRun), "clicked",
263
gtk_signal_connect(GTK_OBJECT(scriptsRun), "clicked",
234
264
GTK_SIGNAL_FUNC(Scripts_OnRun), NULL);
267
scriptsApply = gtk_button_new_with_mnemonic("_Apply");
236
269
scriptsApply = gtk_button_new_with_label("Apply");
237
271
gtk_widget_show(scriptsApply);
238
272
gtk_box_pack_end(GTK_BOX(hbox), scriptsApply, FALSE, FALSE, 0);
239
273
gtk_widget_set_usize(scriptsApply, 70, 6);
240
274
gtk_widget_set_sensitive(scriptsApply, FALSE);
241
gtk_signal_connect(GTK_OBJECT(scriptsApply), "clicked",
275
gtk_signal_connect(GTK_OBJECT(scriptsApply), "clicked",
242
276
GTK_SIGNAL_FUNC(Scripts_OnApply), NULL);
244
278
gtk_signal_emit_by_name(GTK_OBJECT(GTK_COMBO(scriptsCombo)->entry), "changed");
291
325
* Callback for the gtk signal "changed" on the Scripts tab's combo box.
292
326
* Lookup the script paths based on the entry selected and update the UI
293
* to match the contents of confDict. It temporarily blocks the "toggled"
294
* signals because the callbacks for those signal should only be called
327
* to match the contents of confDict. It temporarily blocks the "toggled"
328
* signals because the callbacks for those signal should only be called
295
329
* if a user makes a change, not when the state is changed internally
317
351
path = GuestApp_GetDictEntry(confDict, CONFNAME_RESUMESCRIPT);
318
352
defaultPath = GuestApp_GetDictEntryDefault(confDict, CONFNAME_RESUMESCRIPT);
319
353
} else if (strcmp(currentState, SCRIPT_OFF) == 0) {
320
path = GuestApp_GetDictEntry(confDict, CONFNAME_POWEROFFSCRIPT);
354
path = GuestApp_GetDictEntry(confDict, CONFNAME_POWEROFFSCRIPT);
321
355
defaultPath = GuestApp_GetDictEntryDefault(confDict, CONFNAME_POWEROFFSCRIPT);
322
356
} else if (strcmp(currentState, SCRIPT_ON) == 0) {
323
path = GuestApp_GetDictEntry(confDict, CONFNAME_POWERONSCRIPT);
357
path = GuestApp_GetDictEntry(confDict, CONFNAME_POWERONSCRIPT);
324
358
defaultPath = GuestApp_GetDictEntryDefault(confDict, CONFNAME_POWERONSCRIPT);
331
365
GTK_SIGNAL_FUNC(Scripts_OnUseScriptToggled),
333
367
gtk_signal_handler_block_by_func(GTK_OBJECT(scriptsDefaultScript),
334
GTK_SIGNAL_FUNC(Scripts_OnDefaultScriptToggled),
368
GTK_SIGNAL_FUNC(Scripts_OnDefaultScriptToggled),
336
370
if (strcmp(path, "") == 0) {
337
371
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(scriptsUseScript), FALSE);
588
622
char path[PATH_MAX];
589
623
const char *defaultPath;
590
624
struct stat statBuf;
592
626
scriptsFileDlg = gtk_file_selection_new("Select a file");
593
627
gtk_widget_show(scriptsFileDlg);
595
629
defaultPath = gtk_entry_get_text(GTK_ENTRY(scriptsPath));
596
630
Str_Strcpy(path, defaultPath, sizeof path);
599
* If the filename represents a directory but does not end with a path
633
* If the filename represents a directory but does not end with a path
600
634
* separator, append a path separator to it so that the file chooser will
601
635
* start off in that directory instead of its parent.
605
639
S_ISDIR(statBuf.st_mode)) {
606
640
Str_Strcat(path, "/", sizeof path);
609
gtk_file_selection_set_filename(GTK_FILE_SELECTION(scriptsFileDlg),
643
gtk_file_selection_set_filename(GTK_FILE_SELECTION(scriptsFileDlg),
611
645
gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(scriptsFileDlg));
612
646
gtk_widget_set_sensitive(GTK_FILE_SELECTION(scriptsFileDlg)->ok_button, FALSE);
648
gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(scriptsFileDlg), FALSE);
613
650
gtk_clist_set_selection_mode(GTK_CLIST(GTK_FILE_SELECTION(scriptsFileDlg)->
615
652
GTK_SELECTION_BROWSE);
616
654
gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(scriptsFileDlg)->ok_button),
617
655
"clicked", (GtkSignalFunc)Scripts_BrowseOnOk, &path);
618
656
gtk_signal_connect(GTK_OBJECT(scriptsFileDlg), "destroy",
622
660
"clicked", (GtkSignalFunc)gtk_widget_destroy,
623
661
GTK_OBJECT(scriptsFileDlg));
624
gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(scriptsFileDlg)->selection_entry),
662
gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(scriptsFileDlg)->selection_entry),
626
(GtkSignalFunc)Scripts_BrowseOnChanged,
664
(GtkSignalFunc)Scripts_BrowseOnChanged,
627
665
GTK_FILE_SELECTION(scriptsFileDlg)->ok_button);