forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
games-roguelike/dwarf-fortress: Added gui? USE flag and removed hard …
…dep. GTK was required for runtime but was only used for a single fullscreen dialog prompt when the config [WINDOWED:PROMPT]. Now, if libgraphics is compiled without using GTK, the game will not ask at all if run from a window manager, but instead open in windowed mode. However, if the game is run from a terminal, a simple scanf procedure will ask the user for yes/no before deciding. Signed-off-by: Finn Rayment <[email protected]> Bug: https://bugs.gentoo.org/856685 Signed-off-by: James Le Cuirot <[email protected]>
- Loading branch information
Showing
4 changed files
with
143 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
119 changes: 119 additions & 0 deletions
119
games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
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 <gtk/gtk.h> | ||
+# ifdef HAVE_GTK | ||
+# include <gtk/gtk.h> | ||
+# 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 <gtk/gtk.h> | ||
+# ifdef HAVE_GTK | ||
+# include <gtk/gtk.h> | ||
+# endif | ||
#endif | ||
|
||
#include <cassert> | ||
@@ -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 <unistd.h> | ||
+#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 <gtk/gtk.h> | ||
+# ifdef HAVE_GTK | ||
+# include <gtk/gtk.h> | ||
+# else | ||
+# include <unistd.h> | ||
+# 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(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters