Removes hard dependency on GTK in favour of stdin calls. --- a/g_src/KeybindingScreen.cpp +++ b/g_src/KeybindingScreen.cpp @@ -1,7 +1,9 @@ #ifdef __APPLE__ # include "osx_messagebox.h" #elif defined(unix) -# include +# ifdef HAVE_GTK +# include +# endif #endif #include "GL/glew.h" --- a/g_src/enabler.cpp +++ b/g_src/enabler.cpp @@ -1,7 +1,9 @@ #ifdef __APPLE__ # include "osx_messagebox.h" #elif defined(unix) -# include +# ifdef HAVE_GTK +# include +# endif #endif #include @@ -713,7 +715,7 @@ int main (int argc, char* argv[]) { #ifdef unix setlocale(LC_ALL, ""); #endif -#if !defined(__APPLE__) && defined(unix) +#if !defined(__APPLE__) && defined(unix) && defined(HAVE_GTK) bool gtk_ok = false; if (getenv("DISPLAY")) gtk_ok = gtk_init_check(&argc, &argv); @@ -734,6 +736,7 @@ int main (int argc, char* argv[]) { init.begin(); // Load init.txt settings #if !defined(__APPLE__) && defined(unix) + #if defined(HAVE_GTK) if (!gtk_ok && !init.display.flag.has_flag(INIT_DISPLAY_FLAG_TEXT)) { puts("Display not found and PRINT_MODE not set to TEXT, aborting."); exit(EXIT_FAILURE); @@ -743,6 +746,7 @@ int main (int argc, char* argv[]) { puts("Graphical tiles are not compatible with text output, sorry"); exit(EXIT_FAILURE); } + #endif #endif // Initialize video, if we /use/ video --- a/g_src/renderer_curses.cpp +++ b/g_src/renderer_curses.cpp @@ -1,3 +1,7 @@ +#if defined(__APPLE__) || defined(unix) +# include +#endif + static bool curses_initialized = false; static void endwin_void() { --- a/g_src/win32_compat.cpp +++ b/g_src/win32_compat.cpp @@ -13,7 +13,11 @@ # ifdef __APPLE__ # include "osx_messagebox.h" # elif defined(unix) -# include +# ifdef HAVE_GTK +# include +# else +# include +# endif # endif #endif @@ -112,6 +116,7 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type) } # else // GTK code if (getenv("DISPLAY")) { + #ifdef HAVE_GTK // Have X, will dialog GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, @@ -141,6 +146,23 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type) break; } } + #else + if (isatty(fileno(stdin))) { + dprintf(2, "Alert %s:\n%s\n", caption ? caption : "", text ? text : ""); + if (type & MB_YESNO) { + while(ret == IDOK) { + dprintf(2, "please answer with 'yes' or 'no'\n"); + char buf[16]; + fgets(buf, sizeof buf, stdin); + if(!strncmp(buf, "yes", 3)) ret = IDYES; + else if(!strncmp(buf, "no", 2)) ret = IDNO; + } + } + } else { + /* just assume windowed if no TTY is available to ask */ + ret = IDNO; + } + #endif /* HAVE_GTK */ } else { // Use curses init_curses(); @@ -173,7 +195,7 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type) } nodelay(*stdscr_p, -1); } -# endif + #endif if (toggle_screen) { enabler.toggle_fullscreen();