forked from gnachman/iTerm2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SessionView.h
102 lines (89 loc) · 3 KB
/
SessionView.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// -*- mode:objc -*-
/*
** SessionView.h
**
** Copyright (c) 2010
**
** Author: George Nachman
**
** Project: iTerm2
**
** Description: This view contains a session's scrollview.
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#import <Cocoa/Cocoa.h>
#import "FindViewController.h"
#import "PTYSession.h"
#import "SessionTitleView.h"
@class PTYSession;
@class SplitSelectionView;
@class SessionTitleView;
@interface SessionView : NSView <SessionTitleViewDelegate> {
PTYSession* session_;
BOOL dim_;
BOOL backgroundDimmed_;
float currentDimmingAmount_;
NSDate* previousUpdate_;
float changePerSecond_;
float targetDimmingAmount_;
NSTimer* timer_;
BOOL shuttingDown_;
// Find window
FindViewController* findView_;
// Unique per-process id of view, used for ordering them in PTYTab.
int viewId_;
// Saved size for unmaximizing.
NSSize savedSize_;
// When moving a pane, a view is put over all sessions to help the user
// choose how to split the destination.
SplitSelectionView *splitSelectionView_;
BOOL showTitle_;
SessionTitleView *title_;
NSCursor *cursor_;
}
+ (double)titleHeight;
+ (NSDate*)lastResizeDate;
+ (void)windowDidResize;
- (id)initWithFrame:(NSRect)frame session:(PTYSession*)session;
- (void)dealloc;
- (PTYSession*)session;
- (void)setSession:(PTYSession*)session;
- (void)setDimmed:(BOOL)isDimmed;
- (void)cancelTimers;
- (FindViewController*)findViewController;
- (int)viewId;
- (void)setViewId:(int)id;
- (void)setBackgroundDimmed:(BOOL)backgroundDimmed;
- (void)updateDim;
- (BOOL)backgroundDimmed;
- (void)saveFrameSize;
- (void)restoreFrameSize;
- (void)setSplitSelectionMode:(SplitSelectionMode)mode;
- (BOOL)setShowTitle:(BOOL)value adjustScrollView:(BOOL)adjustScrollView;
- (BOOL)showTitle;
- (void)setTitle:(NSString *)title;
// For tmux sessions, autoresizing is turned off so the title must be moved
// manually. This repositions the title view and the find view.
- (void)updateTitleFrame;
// Returns the largest possible scrollview frame size that can fit in
// this SessionView.
// It only differs from the scrollview's size for tmux tabs, for which
// autoresizing is off.
- (NSSize)maximumPossibleScrollViewContentSize;
// Smallest SessionView frame that contains our contents based on the session's
// rows and columns.
- (NSSize)compactFrame;
@end