Пример #1
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 = 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);
            });
        }
Пример #2
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)
        {
            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;
            });
        }
Пример #3
0
        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);
            }
        }
Пример #4
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);
        }