/// <summary> /// Initializes the runtime. The boolean flag /// indicates whether we are forcing color to be off. /// </summary> public static void Init(bool disable_color = false) { if (inited) { return; } inited = true; empty_container = new Container(0, 0, Terminal.Cols, Terminal.Lines); try { main_window = Curses.InitScr(); } catch (Exception e) { Console.WriteLine("Curses failed to initialize, the exception is: " + e); throw new Exception("Terminal.Init failed"); } Curses.RawMode = true; Curses.Echo = false; //Curses.nonl (); Stdscr.Keypad = true; // MainScreen.stdscr.Keypad = true; #if BREAK_UTF8_RENDERING Curses.Event old = 0; MouseEventsAvailable = Curses.console_sharp_mouse_mask( Curses.Event.Button1Clicked | Curses.Event.Button1DoubleClicked, out old); #endif UsingColor = false; if (!disable_color) { UsingColor = Curses.HasColors; } Curses.StartColor(); Curses.UseDefaultColors(); if (UsingColor) { ColorNormal = MakeColor(Colors.WHITE, Colors.BLUE); ColorFocus = MakeColor(Colors.BLACK, Colors.CYAN); ColorHotNormal = Attrs.BOLD | MakeColor(Colors.YELLOW, Colors.BLUE); ColorHotFocus = Attrs.BOLD | MakeColor(Colors.YELLOW, Colors.CYAN); ColorMenu = Attrs.BOLD | MakeColor(Colors.WHITE, Colors.CYAN); ColorMenuHot = Attrs.BOLD | MakeColor(Colors.YELLOW, Colors.CYAN); ColorMenuSelected = Attrs.BOLD | MakeColor(Colors.WHITE, Colors.BLACK); ColorMenuHotSelected = Attrs.BOLD | MakeColor(Colors.YELLOW, Colors.BLACK); ColorMarked = ColorHotNormal; ColorMarkedSelected = ColorHotFocus; ColorDialogNormal = MakeColor(Colors.BLACK, Colors.WHITE); ColorDialogFocus = MakeColor(Colors.BLACK, Colors.CYAN); ColorDialogHotNormal = MakeColor(Colors.BLUE, Colors.WHITE); ColorDialogHotFocus = MakeColor(Colors.BLUE, Colors.CYAN); ColorError = Attrs.BOLD | MakeColor(Colors.WHITE, Colors.RED); ColorErrorFocus = MakeColor(Colors.BLACK, Colors.WHITE); ColorErrorHot = Attrs.BOLD | MakeColor(Colors.YELLOW, Colors.RED); ColorErrorHotFocus = ColorErrorHot; } else { ColorNormal = Attrs.NORMAL; ColorFocus = Attrs.REVERSE; ColorHotNormal = Attrs.BOLD; ColorHotFocus = Attrs.REVERSE | Attrs.BOLD; ColorMenu = Attrs.REVERSE; ColorMenuHot = Attrs.NORMAL; ColorMenuSelected = Attrs.BOLD; ColorMenuHotSelected = Attrs.NORMAL; ColorMarked = Attrs.BOLD; ColorMarkedSelected = Attrs.REVERSE | Attrs.BOLD; ColorDialogNormal = Attrs.REVERSE; ColorDialogFocus = Attrs.NORMAL; ColorDialogHotNormal = Attrs.BOLD; ColorDialogHotFocus = Attrs.NORMAL; ColorError = Attrs.BOLD; } ColorBasic = MakeColor(-1, -1); mainloop = new Looper(); mainloop.AddWatch(0, Looper.Condition.PollIn, x => { Container top = toplevels.Count > 0 ? toplevels [toplevels.Count - 1] : null; if (top != null) { ProcessChar(top); } return(true); }); }
/// <summary> /// Initializes the runtime. The boolean flag /// indicates whether we are forcing color to be off. /// </summary> public static void Init(bool disable_color) { if (inited) return; inited = true; empty_container = new Container (0, 0, Application.Cols, Application.Lines); try { main_window = Curses.initscr (); } catch (Exception e){ Console.WriteLine ("Curses failed to initialize, the exception is: " + e); throw new Exception ("Application.Init failed"); } Curses.raw (); Curses.noecho (); //Curses.nonl (); Window.Standard.keypad (true); #if BREAK_UTF8_RENDERING Curses.Event old = 0; MouseEventsAvailable = Curses.console_sharp_mouse_mask ( Curses.Event.Button1Clicked | Curses.Event.Button1DoubleClicked, out old); #endif UsingColor = false; if (!disable_color) UsingColor = Curses.has_colors (); Curses.start_color (); Curses.use_default_colors (); if (UsingColor){ ColorNormal = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLUE); ColorFocus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN); ColorHotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLUE); ColorHotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN); ColorMenu = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_CYAN); ColorMenuHot = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN); ColorMenuSelected = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLACK); ColorMenuHotSelected = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLACK); ColorMarked = ColorHotNormal; ColorMarkedSelected = ColorHotFocus; ColorDialogNormal = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE); ColorDialogFocus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN); ColorDialogHotNormal = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_WHITE); ColorDialogHotFocus = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_CYAN); ColorError = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_RED); ColorErrorFocus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE); ColorErrorHot = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_RED); ColorErrorHotFocus = ColorErrorHot; } else { ColorNormal = Curses.A_NORMAL; ColorFocus = Curses.A_REVERSE; ColorHotNormal = Curses.A_BOLD; ColorHotFocus = Curses.A_REVERSE | Curses.A_BOLD; ColorMenu = Curses.A_REVERSE; ColorMenuHot = Curses.A_NORMAL; ColorMenuSelected = Curses.A_BOLD; ColorMenuHotSelected = Curses.A_NORMAL; ColorMarked = Curses.A_BOLD; ColorMarkedSelected = Curses.A_REVERSE | Curses.A_BOLD; ColorDialogNormal = Curses.A_REVERSE; ColorDialogFocus = Curses.A_NORMAL; ColorDialogHotNormal = Curses.A_BOLD; ColorDialogHotFocus = Curses.A_NORMAL; ColorError = Curses.A_BOLD; } ColorBasic = MakeColor (-1, -1); mainloop = new MainLoop (); mainloop.AddWatch (0, MainLoop.Condition.PollIn, x => { Container top = toplevels.Count > 0 ? toplevels [toplevels.Count-1] : null; if (top != null) ProcessChar (top); return true; }); }
MouseFlags MapCursesButton(Curses.Event cursesButton) { switch (cursesButton) { case Curses.Event.Button1Pressed: return(MouseFlags.Button1Pressed); case Curses.Event.Button1Released: return(MouseFlags.Button1Released); case Curses.Event.Button1Clicked: return(MouseFlags.Button1Clicked); case Curses.Event.Button1DoubleClicked: return(MouseFlags.Button1DoubleClicked); case Curses.Event.Button1TripleClicked: return(MouseFlags.Button1TripleClicked); case Curses.Event.Button2Pressed: return(MouseFlags.Button2Pressed); case Curses.Event.Button2Released: return(MouseFlags.Button2Released); case Curses.Event.Button2Clicked: return(MouseFlags.Button2Clicked); case Curses.Event.Button2DoubleClicked: return(MouseFlags.Button2DoubleClicked); case Curses.Event.Button2TrippleClicked: return(MouseFlags.Button2TripleClicked); case Curses.Event.Button3Pressed: return(MouseFlags.Button3Pressed); case Curses.Event.Button3Released: return(MouseFlags.Button3Released); case Curses.Event.Button3Clicked: return(MouseFlags.Button3Clicked); case Curses.Event.Button3DoubleClicked: return(MouseFlags.Button3DoubleClicked); case Curses.Event.Button3TripleClicked: return(MouseFlags.Button3TripleClicked); case Curses.Event.ButtonWheeledUp: return(MouseFlags.WheeledUp); case Curses.Event.ButtonWheeledDown: return(MouseFlags.WheeledDown); case Curses.Event.Button4Pressed: return(MouseFlags.Button4Pressed); case Curses.Event.Button4Released: return(MouseFlags.Button4Released); case Curses.Event.Button4Clicked: return(MouseFlags.Button4Clicked); case Curses.Event.Button4DoubleClicked: return(MouseFlags.Button4DoubleClicked); case Curses.Event.Button4TripleClicked: return(MouseFlags.Button4TripleClicked); case Curses.Event.ButtonShift: return(MouseFlags.ButtonShift); case Curses.Event.ButtonCtrl: return(MouseFlags.ButtonCtrl); case Curses.Event.ButtonAlt: return(MouseFlags.ButtonAlt); case Curses.Event.ReportMousePosition: return(MouseFlags.ReportMousePosition); case Curses.Event.AllEvents: return(MouseFlags.AllEvents); default: return(0); } }
/// <summary> /// Initializes the runtime. The boolean flag /// indicates whether we are forcing color to be off. /// </summary> public static void Init(bool disable_color) { empty_container = new Container (0, 0, Application.Cols, Application.Lines); try { main_window = Curses.initscr (); } catch (Exception e){ Console.WriteLine ("Curses failed to initialize, the exception is: " + e); throw new Exception ("Application.Init failed"); } if (inited) return; inited = true; Curses.Event old = 0; MouseEventsAvailable = Curses.console_sharp_mouse_mask ( Curses.Event.Button1Clicked | Curses.Event.Button1DoubleClicked, out old); UsingColor = false; if (!disable_color) UsingColor = Curses.has_colors (); Curses.start_color (); Curses.use_default_colors (); if (UsingColor){ ColorNormal = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLUE); ColorFocus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN); ColorHotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLUE); ColorHotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN); ColorMenu = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_CYAN); ColorMenuHot = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN); ColorMenuSelected = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLACK); ColorMenuHotSelected = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLACK); ColorMarked = ColorHotNormal; ColorMarkedSelected = ColorHotFocus; ColorDialogNormal = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE); ColorDialogFocus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN); ColorDialogHotNormal = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_WHITE); ColorDialogHotFocus = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_CYAN); ColorError = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_RED); } else { ColorNormal = Curses.A_NORMAL; ColorFocus = Curses.A_REVERSE; ColorHotNormal = Curses.A_BOLD; ColorHotFocus = Curses.A_REVERSE | Curses.A_BOLD; ColorMenu = Curses.A_REVERSE; ColorMenuHot = Curses.A_NORMAL; ColorMenuSelected = Curses.A_BOLD; ColorMenuHotSelected = Curses.A_NORMAL; ColorMarked = Curses.A_BOLD; ColorMarkedSelected = Curses.A_REVERSE | Curses.A_BOLD; ColorDialogNormal = Curses.A_REVERSE; ColorDialogFocus = Curses.A_NORMAL; ColorDialogHotNormal = Curses.A_BOLD; ColorDialogHotFocus = Curses.A_NORMAL; ColorError = Curses.A_BOLD; } ColorBasic = MakeColor (-1, -1); }