diff --git a/bitch/Makefile b/bitch/Makefile new file mode 100644 index 0000000..78ba04b --- /dev/null +++ b/bitch/Makefile @@ -0,0 +1,19 @@ +CFLAGS = -g `pkg-config --cflags gtk4` `pkg-config --libs gtk4` +RM = rm -f +TARGETS = bitch + +all: $(TARGETS) +clean: + $(RM) $(TARGETS) + +naughty: + $(CC) -g `pkg-config --cflags gtk4` `pkg-config --libs gtk4` \ + -D APPLICATION_NAME=\"org.trinity.bitch\" bitch.c -o bitch +nice: + $(CC) -g `pkg-config --cflags gtk4` `pkg-config --libs gtk4` \ + -D APPLICATION_NAME=\"org.trinity.project\" bitch.c -o project + +%: %.c + $(CC) -o $@ $(CFLAGS) $@.c + +.PHONY: all clean diff --git a/bitch/bitch.c b/bitch/bitch.c new file mode 100644 index 0000000..8be8476 --- /dev/null +++ b/bitch/bitch.c @@ -0,0 +1,58 @@ +#include +#include +#include /* Written for GTK 4 */ + +static char *argv0; +static char buf[100]; + +static void button_pressed(GtkWidget *button, gpointer data); + +static void +activate(GtkApplication *app, gpointer user_data){ + GtkWidget *button; + int c; + GtkWidget *window; + + window = gtk_application_window_new(app); + gtk_window_set_title(GTK_WINDOW(window), "Bitch"); + gtk_window_set_default_size(GTK_WINDOW(window), 720, 1440); + g_print("bitch: stdin: reading...\n"); + for(;;){ + if(fgets(buf, sizeof(buf) / sizeof(*buf), stdin) == NULL){ + if(feof(stdin)) + g_print("bitch: stdin: reached EOF\n", argv0); + else if(ferror(stdin) != 0) + g_print("bitch: stdin: file read error\n", argv0); + break; + } + button = gtk_button_new_with_label(buf); + g_signal_connect(button, "clicked", G_CALLBACK(button_pressed), NULL); + gtk_window_set_child(GTK_WINDOW(window), button); + if(strchr(buf, '\n') == NULL) /* flush */ + while((c = getc(stdin)) != '\n' && c != EOF); + } + gtk_window_present(GTK_WINDOW(window)); + + return; +} + +static void +button_pressed(GtkWidget *button, gpointer data){ + + system(gtk_button_get_label(GTK_BUTTON(button))); + + return; +} + +int main(int argc, char *argv[]){ + GtkApplication *app; + int status; + + argv0 = argv[0]; + app = gtk_application_new("org.trinity.femaledog", G_APPLICATION_FLAGS_NONE); + g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + status = g_application_run(G_APPLICATION(app), argc, argv); + g_object_unref(app); + + return status; +}