public SelectionKeyProcessor(TerminalPane owner, TerminalDocument doc, GLine line, int pos) { _owner = owner; _document = doc; Debug.Assert(line!=null); _currentLine = line; _caretPos = pos; }
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); }
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; }
public virtual CommandResult SetConnectionLocation(ConnectionTag ct, TerminalPane pane) { return CommandResult.Ignored; }
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); }
public TextSelection() { _owner = null; }
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; }
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; }
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; }