267
267
void settings_cb (GtkButton *, gpointer user_data);
268
268
void settings_adv_cb (GtkButton *, gpointer user_data);
269
269
void settings_std_cb (GtkButton *, gpointer user_data);
270
void settings_reset_cb (GtkButton *, gpointer user_data);
270
271
void settings_switch_page_cb (GtkNotebook *, GtkNotebookPage *,
271
272
gint page_num, gpointer user_data);
272
273
void settings_cancel_cb (GtkButton *, gpointer user_data);
273
274
void settings_ok_cb (GtkButton *, gpointer user_data);
276
static void kill_gnome_screensaver (void);
277
static void kill_kde_screensaver (void);
276
280
/* Some random utility functions
482
486
warning_dialog_dismiss_cb (widget, user_data);
489
static void warning_dialog_killg_cb (GtkWidget *widget, gpointer user_data)
491
kill_gnome_screensaver ();
492
warning_dialog_dismiss_cb (widget, user_data);
495
static void warning_dialog_killk_cb (GtkWidget *widget, gpointer user_data)
497
kill_kde_screensaver ();
498
warning_dialog_dismiss_cb (widget, user_data);
501
typedef enum { D_NONE, D_LAUNCH, D_GNOME, D_KDE } dialog_button;
486
504
warning_dialog (GtkWidget *parent, const char *message,
487
Boolean restart_button_p, int center)
505
dialog_button button_type, int center)
489
507
char *msg = strdup (message);
571
589
ok = gtk_button_new_with_label ("OK");
572
590
gtk_container_add (GTK_CONTAINER (label), ok);
574
if (restart_button_p)
592
if (button_type != D_NONE)
576
594
cancel = gtk_button_new_with_label ("Cancel");
577
595
gtk_container_add (GTK_CONTAINER (label), cancel);
582
600
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
583
601
gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
584
602
gtk_window_set_title (GTK_WINDOW (dialog), progclass);
585
STFU GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);
603
GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);
586
604
gtk_widget_show (ok);
587
605
gtk_widget_grab_focus (ok);
591
STFU GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
609
GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
592
610
gtk_widget_show (cancel);
594
612
gtk_widget_show (label);
595
613
gtk_widget_show (dialog);
597
if (restart_button_p)
615
if (button_type != D_NONE)
599
gtk_signal_connect_object (GTK_OBJECT (ok), "clicked",
600
GTK_SIGNAL_FUNC (warning_dialog_restart_cb),
618
switch (button_type) {
619
case D_LAUNCH: fn = GTK_SIGNAL_FUNC (warning_dialog_restart_cb); break;
620
case D_GNOME: fn = GTK_SIGNAL_FUNC (warning_dialog_killg_cb); break;
621
case D_KDE: fn = GTK_SIGNAL_FUNC (warning_dialog_killk_cb); break;
622
default: abort(); break;
624
gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", fn,
601
625
(gpointer) dialog);
602
626
gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked",
603
627
GTK_SIGNAL_FUNC (warning_dialog_dismiss_cb),
644
668
sprintf (buf, "Error:\n\n%s", err);
646
670
strcpy (buf, "Unknown error!");
647
warning_dialog (s->toplevel_widget, buf, False, 100);
671
warning_dialog (s->toplevel_widget, buf, D_NONE, 100);
649
673
if (err) free (err);
685
709
sprintf (buf, "Error:\n\n%s", err);
687
711
strcpy (buf, "Unknown error!");
688
warning_dialog (s->toplevel_widget, buf, False, 100);
712
warning_dialog (s->toplevel_widget, buf, D_NONE, 100);
700
724
"The XScreenSaver daemon doesn't seem to be running\n"
701
725
"on display \"%s\". Launch it now?"),
703
warning_dialog (s->toplevel_widget, msg, True, 1);
727
warning_dialog (s->toplevel_widget, msg, D_LAUNCH, 1);
876
900
warning_dialog (s->toplevel_widget,
878
"No Help URL has been specified.\n"), False, 100);
902
"No Help URL has been specified.\n"), D_NONE, 100);
1002
1026
strcat (buf, _("Please check your $PATH and permissions."));
1004
warning_dialog (s->toplevel_widget, buf, False, 1);
1028
warning_dialog (s->toplevel_widget, buf, D_NONE, 1);
1007
1031
force_dialog_repaint (s);
1039
1063
warning_dialog (s->toplevel_widget,
1040
1064
_("Error:\n\nCouldn't determine init file name!\n"),
1044
1068
char *b = (char *) malloc (strlen(f) + 1024);
1045
1069
sprintf (b, _("Error:\n\nCouldn't write %s\n"), f);
1046
warning_dialog (s->toplevel_widget, b, False, 100);
1070
warning_dialog (s->toplevel_widget, b, D_NONE, 100);
1292
1316
"Unparsable time format: \"%s\"\n"),
1294
warning_dialog (s->toplevel_widget, b, False, 100);
1318
warning_dialog (s->toplevel_widget, b, D_NONE, 100);
1297
1321
*store = value;
1538
1562
sprintf (b, "Error:\n\n" "Directory does not exist: \"%s\"\n",
1539
1563
p2->image_directory);
1540
warning_dialog (s->toplevel_widget, b, False, 100);
1564
warning_dialog (s->toplevel_widget, b, D_NONE, 100);
1811
STFU g_return_if_fail (!gdk_pointer_is_grabbed ());
1835
g_return_if_fail (!gdk_pointer_is_grabbed ());
1813
1837
str = gtk_tree_path_to_string (path);
1814
1838
list_elt = strtol (str, NULL, 10);
1998
2022
sprintf (b, _("Error:\n\n" "Directory does not exist: \"%s\"\n"), path);
1999
warning_dialog (GTK_WIDGET (top), b, False, 100);
2023
warning_dialog (GTK_WIDGET (top), b, D_NONE, 100);
2028
2052
sprintf (b, _("Error:\n\n" "File does not exist: \"%s\"\n"), path);
2029
warning_dialog (GTK_WIDGET (top), b, False, 100);
2053
warning_dialog (GTK_WIDGET (top), b, D_NONE, 100);
2059
2083
sprintf (b, _("Error:\n\n" "File does not exist: \"%s\"\n"), path);
2060
warning_dialog (GTK_WIDGET (top), b, False, 100);
2084
warning_dialog (GTK_WIDGET (top), b, D_NONE, 100);
2231
2255
# ifdef HAVE_XML
2232
2256
GtkWidget *cmd = GTK_WIDGET (name_to_widget (s, "cmd_text"));
2233
char *cmd_line = get_configurator_command_line (s->cdata);
2257
char *cmd_line = get_configurator_command_line (s->cdata, False);
2234
2258
gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
2235
2259
gtk_entry_set_position (GTK_ENTRY (cmd), strlen (cmd_line));
2236
2260
free (cmd_line);
2264
2288
G_MODULE_EXPORT void
2289
settings_reset_cb (GtkButton *button, gpointer user_data)
2292
state *s = global_state_kludge; /* I hate C so much... */
2293
GtkWidget *cmd = GTK_WIDGET (name_to_widget (s, "cmd_text"));
2294
char *cmd_line = get_configurator_command_line (s->cdata, True);
2295
gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
2296
gtk_entry_set_position (GTK_ENTRY (cmd), strlen (cmd_line));
2298
populate_popup_window (s);
2299
# endif /* HAVE_XML */
2302
G_MODULE_EXPORT void
2265
2303
settings_switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page,
2266
2304
gint page_num, gpointer user_data)
3200
3238
screenhack *hack;
3201
3239
char *pretty_name;
3202
3240
GtkFrame *frame1 = GTK_FRAME (name_to_widget (s, "preview_frame"));
3203
GtkFrame *frame2 = GTK_FRAME (name_to_widget (s, "doc_frame"));
3241
GtkFrame *frame2 = GTK_FRAME (name_to_widget (s, "opt_frame"));
3204
3242
GtkEntry *cmd = GTK_ENTRY (name_to_widget (s, "cmd_text"));
3205
3243
GtkCombo *vis = GTK_COMBO (name_to_widget (s, "visual_combo"));
3206
3244
GtkWidget *list = GTK_WIDGET (name_to_widget (s, "list"));
3414
3452
_("Warning:\n\n"
3415
3453
"file \"%s\" has changed, reloading.\n"),
3417
warning_dialog (s->toplevel_widget, b, False, 100);
3455
warning_dialog (s->toplevel_widget, b, D_NONE, 100);
3420
3458
load_init_file (dpy, p);
4024
4062
return FALSE; /* do not re-execute timer */
4066
settings_timer (gpointer data)
4028
4073
/* Call this when you think you might want a preview process running.
4029
4074
It will set a timer that will actually launch that program a second
4296
gnome_screensaver_window (Screen *screen)
4298
Display *dpy = DisplayOfScreen (screen);
4299
Window root = RootWindowOfScreen (screen);
4300
Window parent, *kids;
4302
Window gnome_window = 0;
4305
if (! XQueryTree (dpy, root, &root, &parent, &kids, &nkids))
4307
for (i = 0; i < nkids; i++)
4311
unsigned long nitems, bytesafter;
4312
unsigned char *name;
4313
if (XGetWindowProperty (dpy, kids[i], XA_WM_COMMAND, 0, 128,
4314
False, XA_STRING, &type, &format, &nitems,
4318
&& !strcmp ((char *) name, "gnome-screensaver"))
4320
gnome_window = kids[i];
4325
if (kids) XFree ((char *) kids);
4326
return gnome_window;
4330
gnome_screensaver_active_p (void)
4332
Display *dpy = GDK_DISPLAY();
4333
Window w = gnome_screensaver_window (DefaultScreenOfDisplay (dpy));
4334
return (w ? True : False);
4338
kill_gnome_screensaver (void)
4340
Display *dpy = GDK_DISPLAY();
4341
Window w = gnome_screensaver_window (DefaultScreenOfDisplay (dpy));
4342
if (w) XKillClient (dpy, (XID) w);
4346
kde_screensaver_active_p (void)
4348
FILE *p = popen ("dcop kdesktop KScreensaverIface isEnabled 2>/dev/null",
4351
fgets (buf, sizeof(buf)-1, p);
4353
if (!strcmp (buf, "true\n"))
4360
kill_kde_screensaver (void)
4362
system ("dcop kdesktop KScreensaverIface enable false");
4251
4367
the_network_is_not_the_computer (state *s)
4363
warning_dialog (s->toplevel_widget, msg, True, 1);
4479
warning_dialog (s->toplevel_widget, msg, D_LAUNCH, 1);
4365
4481
if (rversion) free (rversion);
4366
4482
if (ruser) free (ruser);
4367
4483
if (rhost) free (rhost);
4487
/* Note: since these dialogs are not modal, they will stack up.
4488
So we do this check *after* popping up the "xscreensaver is not
4489
running" dialog so that these are on top. Good enough.
4492
if (gnome_screensaver_active_p ())
4493
warning_dialog (s->toplevel_widget,
4495
"The GNOME screensaver daemon appears to be running.\n"
4496
"It must be stopped for XScreenSaver to work properly.\n"
4498
"Stop the GNOME screen saver daemon now?\n"),
4501
if (kde_screensaver_active_p ())
4502
warning_dialog (s->toplevel_widget,
4504
"The KDE screen saver daemon appears to be running.\n"
4505
"It must be stopped for XScreenSaver to work properly.\n"
4507
"Stop the KDE screen saver daemon now?\n"),
4802
4943
if (str[0] == '-' && str[1] == '-')
4804
4945
if (!strcmp (str, "-prefs"))
4947
else if (!strcmp (str, "-settings"))
4806
4949
else if (crapplet_p)
4807
4950
/* There are lots of random args that we don't care about when we're
4808
4951
started as a crapplet, so just ignore unknown args in that case. */
4908
5051
gtk_widget_set_sensitive (std, False);
4909
5052
std = GTK_WIDGET (name_to_widget (s, "adv_button"));
4910
5053
gtk_widget_hide (std);
5054
std = GTK_WIDGET (name_to_widget (s, "reset_button"));
5055
gtk_widget_hide (std);
4912
5057
# endif /* !HAVE_XML */
5062
5207
gtk_timeout_add (60 * 1000, check_blanked_timer, s);
5210
/* Handle the --settings command-line argument. */
5212
gtk_timeout_add (500, settings_timer, 0);
5065
5215
/* Issue any warnings about the running xscreensaver daemon. */
5066
5216
if (! s->debug_p)
5067
5217
the_network_is_not_the_computer (s);