| 16943:284ed14b796b | 16944:921fc0bccf3a |
|---|---|
| 10 #include <sys/types.h> | 10 #include <sys/types.h> |
| 11 #include <sys/wait.h> | 11 #include <sys/wait.h> |
| 12 | 12 |
| 13 #include "gnt.h" | 13 #include "gnt.h" |
| 14 #include "gntbox.h" | 14 #include "gntbox.h" |
| 15 #include "gntbutton.h" | |
| 15 #include "gntcolors.h" | 16 #include "gntcolors.h" |
| 16 #include "gntclipboard.h" | 17 #include "gntclipboard.h" |
| 17 #include "gntkeys.h" | 18 #include "gntkeys.h" |
| 19 #include "gntlabel.h" | |
| 18 #include "gntmenu.h" | 20 #include "gntmenu.h" |
| 19 #include "gntstyle.h" | 21 #include "gntstyle.h" |
| 20 #include "gnttree.h" | 22 #include "gnttree.h" |
| 21 #include "gntutils.h" | 23 #include "gntutils.h" |
| 24 #include "gntwindow.h" | |
| 22 #include "gntwm.h" | 25 #include "gntwm.h" |
| 23 | 26 |
| 24 #include <panel.h> | 27 #include <panel.h> |
| 25 | 28 |
| 26 #include <stdio.h> | 29 #include <stdio.h> |
| 301 perror(errmsg); | 304 perror(errmsg); |
| 302 } | 305 } |
| 303 } | 306 } |
| 304 | 307 |
| 305 static void | 308 static void |
| 309 exit_confirmed(gpointer null) | |
| 310 { | |
| 311 gnt_bindable_perform_action_named(GNT_BINDABLE(wm), "wm-quit", NULL); | |
| 312 } | |
| 313 | |
| 314 static void | |
| 315 exit_win_close(GntWidget *w, GntWidget **win) | |
| 316 { | |
| 317 *win = NULL; | |
| 318 } | |
| 319 | |
| 320 static void | |
| 321 ask_before_exit() | |
| 322 { | |
| 323 static GntWidget *win = NULL; | |
| 324 GntWidget *bbox, *button; | |
| 325 | |
| 326 if (win) | |
| 327 goto raise; | |
| 328 | |
| 329 win = gnt_vwindow_new(FALSE); | |
| 330 gnt_box_add_widget(GNT_BOX(win), gnt_label_new("Are you sure you want to quit?")); | |
| 331 gnt_box_set_title(GNT_BOX(win), "Quit?"); | |
| 332 gnt_box_set_alignment(GNT_BOX(win), GNT_ALIGN_MID); | |
| 333 g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(exit_win_close), &win); | |
| 334 | |
| 335 bbox = gnt_hbox_new(FALSE); | |
| 336 gnt_box_add_widget(GNT_BOX(win), bbox); | |
| 337 | |
| 338 button = gnt_button_new("Quit"); | |
| 339 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(exit_confirmed), NULL); | |
| 340 gnt_box_add_widget(GNT_BOX(bbox), button); | |
| 341 | |
| 342 button = gnt_button_new("Cancel"); | |
| 343 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), win); | |
| 344 gnt_box_add_widget(GNT_BOX(bbox), button); | |
| 345 | |
| 346 gnt_widget_show(win); | |
| 347 raise: | |
| 348 gnt_wm_raise_window(wm, win); | |
| 349 } | |
| 350 | |
| 351 static void | |
| 306 sighandler(int sig) | 352 sighandler(int sig) |
| 307 { | 353 { |
| 308 switch (sig) { | 354 switch (sig) { |
| 309 #ifdef SIGWINCH | 355 #ifdef SIGWINCH |
| 310 case SIGWINCH: | 356 case SIGWINCH: |
| 316 #endif | 362 #endif |
| 317 case SIGCHLD: | 363 case SIGCHLD: |
| 318 clean_pid(); | 364 clean_pid(); |
| 319 signal(SIGCHLD, sighandler); | 365 signal(SIGCHLD, sighandler); |
| 320 break; | 366 break; |
| 367 case SIGINT: | |
| 368 ask_before_exit(); | |
| 369 signal(SIGINT, sighandler); | |
| 370 break; | |
| 321 } | 371 } |
| 322 } | 372 } |
| 323 | 373 |
| 324 static void | 374 static void |
| 325 init_wm() | 375 init_wm() |
| 385 | 435 |
| 386 #ifdef SIGWINCH | 436 #ifdef SIGWINCH |
| 387 signal(SIGWINCH, sighandler); | 437 signal(SIGWINCH, sighandler); |
| 388 #endif | 438 #endif |
| 389 signal(SIGCHLD, sighandler); | 439 signal(SIGCHLD, sighandler); |
| 440 signal(SIGINT, sighandler); | |
| 390 signal(SIGPIPE, SIG_IGN); | 441 signal(SIGPIPE, SIG_IGN); |
| 391 | 442 |
| 392 g_type_init(); | 443 g_type_init(); |
| 393 | 444 |
| 394 init_wm(); | 445 init_wm(); |