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