Home | History | Annotate | Download | only in ui
      1 #include <newt.h>
      2 #include <signal.h>
      3 #include <stdbool.h>
      4 
      5 #include "../cache.h"
      6 #include "../debug.h"
      7 #include "browser.h"
      8 #include "helpline.h"
      9 #include "ui.h"
     10 
     11 pthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER;
     12 
     13 static void newt_suspend(void *d __used)
     14 {
     15 	newtSuspend();
     16 	raise(SIGTSTP);
     17 	newtResume();
     18 }
     19 
     20 void setup_browser(bool fallback_to_pager)
     21 {
     22 	if (!isatty(1) || !use_browser || dump_trace) {
     23 		use_browser = 0;
     24 		if (fallback_to_pager)
     25 			setup_pager();
     26 		return;
     27 	}
     28 
     29 	use_browser = 1;
     30 	newtInit();
     31 	newtCls();
     32 	newtSetSuspendCallback(newt_suspend, NULL);
     33 	ui_helpline__init();
     34 	ui_browser__init();
     35 }
     36 
     37 void exit_browser(bool wait_for_ok)
     38 {
     39 	if (use_browser > 0) {
     40 		if (wait_for_ok) {
     41 			char title[] = "Fatal Error", ok[] = "Ok";
     42 			newtWinMessage(title, ok, ui_helpline__last_msg);
     43 		}
     44 		newtFinished();
     45 	}
     46 }
     47