void screen_init(const char* argv[]) { dpy_init(argv); const static luaL_Reg funcs[] = { { "initscreen", initscreen_cb }, { "clearscreen", clearscreen_cb }, { "sync", sync_cb }, { "setbold", setbold_cb }, { "setunderline", setunderline_cb }, { "setreverse", setreverse_cb }, { "setbright", setbright_cb }, { "setdim", setdim_cb }, { "setitalic", setitalic_cb }, { "setnormal", setnormal_cb }, { "write", write_cb }, { "cleararea", cleararea_cb }, { "gotoxy", gotoxy_cb }, { "getscreensize", getscreensize_cb }, { "getstringwidth", getstringwidth_cb }, { "getboundedstring", getboundedstring_cb }, { "getbytesofcharacter", getbytesofcharacter_cb }, { "getchar", getchar_cb }, { NULL, NULL } }; lua_getglobal(L, "wg"); luaL_setfuncs(L, funcs, 0); }
int main (int argc, char *argv[]) { GDeviceSetup gds = { NULL, NULL, NULL, NULL, 0}; GtkWidget *window; GtkWidget *scrollwin; GtkWidget *bt_new; GtkWidget *icon; GtkWidget *message; int response; int loop = TRUE; gds.dpy = dpy_init(); if (!gds.dpy) { fprintf(stderr, "Cannot connect to X server, or X server does not " "support XI 2."); return 1; } gtk_init(&argc, &argv); gds.display = gdk_display_get_default(); /* init dialog window */ window = gtk_dialog_new(); gtk_window_set_default_size (GTK_WINDOW(window), 10, 500); gds.window = window; gtk_container_set_border_width(GTK_CONTAINER(window), 10); gtk_dialog_add_buttons(GTK_DIALOG(window), GTK_STOCK_HELP, GTK_RESPONSE_HELP, GTK_STOCK_UNDO, GTK_RESPONSE_CANCEL, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); toggle_undo_button(&gds, FALSE); /* main dialog area */ gds.treeview = get_tree_view(&gds); scrollwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scrollwin), GTK_WIDGET(gds.treeview)); bt_new = gtk_button_new_with_mnemonic("_Create Cursor/Keyboard Focus"); icon = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON); gtk_button_set_image(GTK_BUTTON(bt_new), icon); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(window))), GTK_WIDGET(scrollwin), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(window))), bt_new, 0, 0, 10); g_signal_connect(G_OBJECT(bt_new), "clicked", G_CALLBACK(signal_new_md), &gds); g_signal_connect (gdk_display_get_device_manager (gds.display), "device-added", G_CALLBACK (on_device_change), &gds); g_signal_connect (gdk_display_get_device_manager (gds.display), "device-removed", G_CALLBACK (on_device_change), &gds); g_signal_connect (gdk_display_get_device_manager (gds.display), "device-changed", G_CALLBACK (on_device_change), &gds); gtk_widget_show_all(window); do { response = gtk_dialog_run(GTK_DIALOG(window)); switch(response) { case GTK_RESPONSE_HELP: break; case GTK_RESPONSE_CANCEL: g_printerr("undo !\n"); /*query_devices(&gds); g_list_free(gds.changes); gds.changes = NULL; */ toggle_undo_button(&gds, FALSE); break; case GTK_RESPONSE_CLOSE: if (gds.changes) { message = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "You have unapplied " "changes. Are you sure " "you want to quit?"); response = gtk_dialog_run(GTK_DIALOG(message)); gtk_widget_destroy(message); loop = (response == GTK_RESPONSE_NO); } else loop = FALSE; break; case GTK_RESPONSE_DELETE_EVENT: loop = FALSE; break; } } while (loop); g_list_free(gds.changes); XCloseDisplay(gds.dpy); return 0; }