Пример #1
0
 public SelectionKeyProcessor(TerminalPane owner, TerminalDocument doc, GLine line, int pos)
 {
     _owner = owner;
     _document = doc;
     Debug.Assert(line!=null);
     _currentLine = line;
     _caretPos = pos;
 }
Пример #2
0
 private void InitializeTerminalPane()
 {
     if (GApp._frame == null)
     {
         string[] args = new string[0];
         GApp.Run(args);
         GApp._frame._multiPaneControl.InitUI(null, GApp.Options);
         GEnv.InterThreadUIService.MainFrameHandle = GApp._frame.Handle;
     }
     this._terminalPane = new TerminalPane();
     this.TerminalPane.Dock = DockStyle.Fill;
     this.Controls.Add(this.TerminalPane);
 }
Пример #3
0
        public void InitUI(ContainerOptions prev, ContainerOptions opt)
        {
            ConnectionTag[] cons = new ConnectionTag[_panes.Length];
            for(int i=0; i<_panes.Length; i++) {
                cons[i] = (_panes[i]==null || !_panes[i].FakeVisible)? null : _panes[i].ConnectionTag;
                if(_panes[i]!=null) _panes[i].Detach();
                _panes[i] = null;
            }

            Controls.Clear();

            GFrameStyle style = opt.FrameStyle;
            int pane_count = StyleToPaneCount(style);
            int prev_pane_count = prev==null? 1 : StyleToPaneCount(prev.FrameStyle);
            bool is_vertical = style==GFrameStyle.DivVertical || style==GFrameStyle.DivVertical3;

            //Control�̏�����
            this.SuspendLayout();
            for(int i = pane_count-1; i>=0; i--) {
                TerminalPane p = new TerminalPane();
                _panes[i] = p;
                p.Visible = true;
                p.Dock = i==pane_count-1? DockStyle.Fill : is_vertical? DockStyle.Left : DockStyle.Top;
                if(i<pane_count-1) {
                    int a = (int)((is_vertical? this.Width : this.Height) * (i==0? 0 : _splitterRatio[pane_count-2][i-1]));
                    int b = (int)((is_vertical? this.Width : this.Height) * (_splitterRatio[pane_count-2][i] - (i==0? 0 : _splitterRatio[pane_count-2][i-1])));
                    if(is_vertical) {
                        p.Left = a;
                        p.Width = b;
                    }
                    else {
                        p.Top = a;
                        p.Height = b;
                    }
                }
                this.Controls.Add(p);

                if(i>0) {
                    Splitter s = new Splitter();
                    _splitters[i-1] = s;
                    s.SplitterMoving += new SplitterEventHandler(this.OnSplitterMoving);
                    s.SplitterMoved  += new SplitterEventHandler(this.OnSplitterMoved);
                    s.Dock = is_vertical? DockStyle.Left : DockStyle.Top;
                    s.BorderStyle = BorderStyle.Fixed3D;
                    s.MinSize = 8;
                    s.SplitPosition = (int)((is_vertical? this.Width : this.Height) * _splitterRatio[pane_count-2][i-1]);
                    this.Controls.Add(s);
                }
            }
            this.ResumeLayout(true);

            //�K�v�Ȃ�̂�Attach
            foreach(ConnectionTag ct in GEnv.Connections.OrderedConnections) {
                int pos = ct.PositionIndex;
                if(prev_pane_count<pane_count && ct.PreservedPositionIndex>=prev_pane_count) { //�������y�C���ւ̋������蓖��
                    pos = ct.PreservedPositionIndex;
                    if(pos >= pane_count) pos = pane_count-1;
                    ct.PositionIndex = pos;
                    if(_panes[pos].ConnectionTag==null) {
                        _panes[pos].Attach(ct);
                        _panes[pos].FakeVisible = true;
                        GEnv.Frame.RefreshConnection(ct);
                    }
                }
                else if(pos < pane_count) { //���a�ȏꍇ
                    if(_panes[pos].ConnectionTag==null) {
                        _panes[pos].Attach(ct);
                        _panes[pos].FakeVisible = true;
                        GEnv.Frame.RefreshConnection(ct);
                    }
                }
                else { //�B���ꍇ
                    ct.PositionIndex = pane_count-1;
                    if(ct!=null && _panes[pane_count-1].ConnectionTag==null) {
                        _panes[pane_count-1].Attach(ct);
                        _panes[pane_count-1].FakeVisible = true;
                        GEnv.Frame.RefreshConnection(ct);
                    }
                }
            }
        }
 public override CommandResult SetConnectionLocation(ConnectionTag ct, TerminalPane pane)
 {
     if(ct.AttachedPane==pane) return CommandResult.Ignored;
     _frame.PaneContainer.SetConnectionLocation(ct, pane);
     return CommandResult.Success;
 }
Пример #5
0
 public virtual CommandResult SetConnectionLocation(ConnectionTag ct, TerminalPane pane)
 {
     return CommandResult.Ignored;
 }
Пример #6
0
        public ConnectionTag(TerminalConnection c)
        {
            _connection = c;
            _pane = null;
            _invalidateParam = new InvalidateParam();
            _tabButton = null;
            _document = new TerminalDocument(_connection);
            _receiver = new TerminalDataReceiver(this);
            _terminated = false;
            _timer = null;
            _windowTitle = "";

            //null�̂Ƃ��̓f�t�H���g�v���t�@�C����g��
            _renderProfile = c.Param.RenderProfile;

            //VT100�w��ł�xterm�V�[�P���X�𑗂��Ă���A�v���P�[�V�������������Ȃ��̂�
            //_terminal = new XTerm(this, new JapaneseCharDecoder(_connection));

            if(c.Param.TerminalType==TerminalType.XTerm || c.Param.TerminalType==TerminalType.KTerm)
                _terminal = new XTerm(this, new JapaneseCharDecoder(_connection));
            else
                _terminal = new VT100Terminal(this, new JapaneseCharDecoder(_connection));

            GEnv.Connections.KeepAlive.SetTimerToConnectionTag(this);
        }
Пример #7
0
 public TextSelection()
 {
     _owner = null;
 }
Пример #8
0
        internal bool StartSelection(TerminalPane owner, GLine line, int position, RangeType type, int x, int y)
        {
            Debug.Assert(owner!=null);
            Debug.Assert(position>=0);
            line.ExpandBuffer(position+1);

            _disabledTemporary = false;
            _owner = owner;
            _pivotType = type;
            _forwardPivot._line = line.ID;
            _backwardPivot._line = line.ID;
            _forwardDestination._line = line.ID;
            _forwardDestination._position = position;
            _backwardDestination._line = line.ID;
            _backwardDestination._position = position;
            switch(type) {
                case RangeType.Char:
                    _forwardPivot._position = position;
                    _backwardPivot._position = position;
                    break;
                case RangeType.Word:
                    _forwardPivot._position = line.FindPrevWordBreak(position)+1;
                    _backwardPivot._position = line.FindNextWordBreak(position);
                    break;
                case RangeType.Line:
                    _forwardPivot._position = 0;
                    _backwardPivot._position = line.CharLength;
                    break;
            }
            _state = SelectionState.Pivot;
            _startX = x;
            _startY = y;
            return true;
        }
Пример #9
0
        internal void SelectAll(TerminalPane owner)
        {
            _disabledTemporary = false;
            Debug.Assert(owner!=null);
            _owner = owner;
            _forwardPivot._line = _owner.Document.FirstLine.ID;
            _forwardPivot._position = 0;
            _backwardPivot = _forwardPivot;
            _forwardDestination._line = _owner.Document.LastLine.ID;
            _forwardDestination._position = _owner.Document.LastLine.CharLength-1;
            _backwardDestination = _forwardDestination;

            _state = SelectionState.Fixed;
            _pivotType = RangeType.Char;
        }
Пример #10
0
 public void Clear()
 {
     if(_owner!=null) {
         _owner.ExitTextSelection();
     }
     _owner = null;
     _state = SelectionState.Empty;
     _pivotType = RangeType.Char;
     _forwardPivot.Clear();
     _backwardPivot.Clear();
     _forwardDestination.Clear();
     _backwardDestination.Clear();
     _disabledTemporary = false;
 }