Fixed gtk signal handling
[mirrors/Programs.git] / c / vizionix / mkxsock.c
CommitLineData
02d6e78a
TM
1#include <stdlib.h>
2#include <stdio.h>
3#include <getopt.h>
4#include <gtk/gtk.h>
5
aa9f75db
TM
6int return_true(void) { return 1; }
7
02d6e78a
TM
8void print_help(char ** argv) {
9 printf(
10 "Usage: %s [args]\n"
11 "Args:\n"
12 "\t -c color\n"
13 "\t -w width\n"
14 "\t -h height\n"
15 "\t -? (display help)"
16 "\nExample: %s -c black -w 640 -h 480\n\n",
17 argv[0], argv[0]);
18}
19
20gint main(gint argc, gchar ** argv)
21{
22 gchar *colorstr = "black";
23 int width = 640;
24 int height = 480;
25
26 int opt;
27 while ((opt = getopt(argc, argv, "?c:w:h:")) != -1) {
28 switch (opt) {
29 case 'c':
30 colorstr = optarg;
31 break;
32 case 'w':
33 width = atoi(optarg);
34 break;
35 case 'h':
36 height = atoi(optarg);
37 break;
38 case '?':
39 print_help(argv);
40 return 0;
41 break;
42 }
43 }
44
45 //printf("%s\n", colorstr); return 0;
46
47 gtk_init(&argc, &argv);
48
49 //Colors
50 GdkColor color;
51 gdk_color_parse(colorstr, &color);
52
53 //Create window
54 GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
55 GtkWidget *sock = gtk_socket_new();
aa9f75db 56 g_signal_connect(sock, "plug-removed", G_CALLBACK(return_true), NULL);
02d6e78a
TM
57 g_signal_connect(win, "delete-event", gtk_main_quit, NULL);
58 gtk_widget_set_size_request(sock, width, height);
59 gtk_widget_modify_bg(sock, GTK_STATE_NORMAL, &color);
60 gtk_container_add(GTK_CONTAINER(win), sock);
61 gtk_widget_show_all(win);
62
63 //Print id
64 GdkNativeWindow wid = gtk_socket_get_id(GTK_SOCKET(sock));
65 int pid;
66 if ((pid = fork())) {
67 printf("XSOCK_WID=%d\nXSOCK_PID=%d\n", wid, pid);
68 return 0;
69 }
70 fclose(stdout);
71
72 //Run
73 gtk_main();
74 return 0;
75}
This page took 0.159332 seconds and 4 git commands to generate.