示例#1
0
        public ToolBarLabel AddLabel(string text)
        {
            ToolBarLabel label = new ToolBarLabel(text);

            AddSubview(label);
            return(label);
        }
        private void CreateUI()
        {
            this.AutoresizeMask = ViewAutoresizing.FlexibleWidth | ViewAutoresizing.FlexibleHeight;

            ToolBar toolbar = new ToolBar(this.Width);
            toolbar.Width = this.Width;

            toolbar.AddButton("Clear", delegate(Button button)
            {
                Terminal.Clear();
            });

            // copy to clipboard
            toolbar.AddButton("Copy", delegate(Button button)
                {
                    string text = GetText();
                    Editor.CopyToClipboard(text);
                });

            // save to file
            toolbar.AddButton("Save", delegate(Button button)
                {
                    string title = "Console log";
                    string directory = FileUtils.DataPath;
                    string defaultName = string.Format("console");
                    string filename = Editor.SaveFilePanel(title, directory, defaultName, "log");
                    if (!string.IsNullOrEmpty(filename))
                    {
                        string text = GetText();
                        FileUtils.Write(filename, text);
                    }
                });

            m_infoLabel = toolbar.AddLabel("");

            toolbar.AddFlexibleSpace();

            AddSubview(toolbar);

            m_commandField = new TextField();
            m_commandField.Width = Width;
            AddSubview(m_commandField);
            m_commandField.AlignX(View.AlignCenter);
            m_commandField.AlignBottom(0);
            m_commandField.AutoresizeMask = ViewAutoresizing.FlexibleTopMargin | ViewAutoresizing.FlexibleWidth;

            m_commandField.TextKeyDelegate = delegate(TextField tf, KeyCode code, bool pressed)
            {
                if (pressed)
                {
                    switch (code)
                    {
                        case KeyCode.Return:
                        case KeyCode.KeypadEnter:
                        {
                            string commandLine = tf.Text.Trim();
                            if (commandLine.Length > 0)
                            {
                                HistoryPush(commandLine);
                                ExecCommand(commandLine);
                            }
                            tf.Text = "";
                            HistoryReset();

                            return true;
                        }

                        case KeyCode.Tab:
                        {
                            string line = Terminal.DoAutoComplete(tf.Text, tf.CaretPos, IsDoubleTab());
                            if (line != null)
                            {
                                tf.Text = line;
                            }
                            m_lastTabTimestamp = Time.realtimeSinceStartup;
                            return true;
                        }

                        case KeyCode.Escape:
                        {
                            tf.Text = "";
                            HistoryReset();
                            return true;
                        }

                        case KeyCode.C:
                        {
                            if (tf.IsCtrlPressed)
                            {
                                tf.Text = "";
                                HistoryReset();
                                return true;
                            }
                            break;
                        }

                        case KeyCode.K:
                        {
                            if (tf.IsCtrlPressed)
                            {
                                Terminal.Clear();
                                return true;
                            }
                            break;
                        }

                        case KeyCode.DownArrow:
                        {
                            if (HistoryNext(tf))
                            {
                                return true;
                            }

                            if (m_lastUserInput != null)
                            {
                                tf.Text = m_lastUserInput;
                                HistoryReset();
                                return true;
                            }

                            return true;
                        }

                        case KeyCode.UpArrow:
                        {
                            // keep user input to restore it
                            if (m_lastUserInput == null)
                            {
                                m_lastUserInput = tf.Text;
                            }

                            if (HistoryPrev(tf))
                            {
                                return true;
                            }

                            return true;
                        }
                    }
                }

                return false;
            };

            m_commandField.TextChangedDelegate = delegate(TextField field) {
                HistoryReset();
            };

            m_consoleView = new ConsoleView(Terminal, m_commandField.Width, this.Height - (toolbar.Height + m_commandField.Height));
            m_consoleView.Y = toolbar.Bottom;
            m_consoleView.IsScrollLocked = true;
            m_consoleView.AutoresizeMask = ViewAutoresizing.FlexibleWidth | ViewAutoresizing.FlexibleHeight;
            AddSubview(m_consoleView);

            m_lastUserInput = null;
        }
示例#3
0
 public ToolBarLabel AddLabel(string text)
 {
     ToolBarLabel label = new ToolBarLabel(text);
     AddSubview(label);
     return label;
 }
示例#4
0
        private void CreateUI()
        {
            this.AutoresizeMask = ViewAutoresizing.FlexibleWidth | ViewAutoresizing.FlexibleHeight;

            ToolBar toolbar = new ToolBar(this.Width);

            toolbar.Width = this.Width;

            toolbar.AddButton("Clear", delegate(Button button)
            {
                Terminal.Clear();
            });

            // copy to clipboard
            toolbar.AddButton("Copy", delegate(Button button)
            {
                string text = GetText();
                Editor.CopyToClipboard(text);
            });

            // save to file
            toolbar.AddButton("Save", delegate(Button button)
            {
                string title       = "Console log";
                string directory   = FileUtils.DataPath;
                string defaultName = string.Format("console");
                string filename    = Editor.SaveFilePanel(title, directory, defaultName, "log");
                if (!string.IsNullOrEmpty(filename))
                {
                    string text = GetText();
                    FileUtils.Write(filename, text);
                }
            });

            m_infoLabel = toolbar.AddLabel("");

            toolbar.AddFlexibleSpace();

            AddSubview(toolbar);

            m_commandField       = new TextField();
            m_commandField.Width = Width;
            AddSubview(m_commandField);
            m_commandField.AlignX(View.AlignCenter);
            m_commandField.AlignBottom(0);
            m_commandField.AutoresizeMask = ViewAutoresizing.FlexibleTopMargin | ViewAutoresizing.FlexibleWidth;

            m_commandField.TextKeyDelegate = delegate(TextField tf, KeyCode code, bool pressed)
            {
                if (pressed)
                {
                    switch (code)
                    {
                    case KeyCode.Return:
                    case KeyCode.KeypadEnter:
                    {
                        string commandLine = tf.Text.Trim();
                        if (commandLine.Length > 0)
                        {
                            HistoryPush(commandLine);
                            ExecCommand(commandLine);
                        }
                        tf.Text = "";
                        HistoryReset();

                        return(true);
                    }

                    case KeyCode.Tab:
                    {
                        string line = Terminal.DoAutoComplete(tf.Text, tf.CaretPos, IsDoubleTab());
                        if (line != null)
                        {
                            tf.Text = line;
                        }
                        m_lastTabTimestamp = Time.realtimeSinceStartup;
                        return(true);
                    }

                    case KeyCode.Escape:
                    {
                        tf.Text = "";
                        HistoryReset();
                        return(true);
                    }

                    case KeyCode.C:
                    {
                        if (tf.IsCtrlPressed)
                        {
                            tf.Text = "";
                            HistoryReset();
                            return(true);
                        }
                        break;
                    }

                    case KeyCode.K:
                    {
                        if (tf.IsCtrlPressed)
                        {
                            Terminal.Clear();
                            return(true);
                        }
                        break;
                    }

                    case KeyCode.DownArrow:
                    {
                        if (HistoryNext(tf))
                        {
                            return(true);
                        }

                        if (m_lastUserInput != null)
                        {
                            tf.Text = m_lastUserInput;
                            HistoryReset();
                            return(true);
                        }

                        return(true);
                    }

                    case KeyCode.UpArrow:
                    {
                        // keep user input to restore it
                        if (m_lastUserInput == null)
                        {
                            m_lastUserInput = tf.Text;
                        }

                        if (HistoryPrev(tf))
                        {
                            return(true);
                        }

                        return(true);
                    }
                    }
                }

                return(false);
            };

            m_commandField.TextChangedDelegate = delegate(TextField field) {
                HistoryReset();
            };

            m_consoleView   = new ConsoleView(Terminal, m_commandField.Width, this.Height - (toolbar.Height + m_commandField.Height));
            m_consoleView.Y = toolbar.Bottom;
            m_consoleView.IsScrollLocked = true;
            m_consoleView.AutoresizeMask = ViewAutoresizing.FlexibleWidth | ViewAutoresizing.FlexibleHeight;
            AddSubview(m_consoleView);

            m_lastUserInput = null;
        }