diff --git a/2Term.xcodeproj/kelvin.pbxuser b/2Term.xcodeproj/kelvin.pbxuser index 79652d9..b237609 100644 --- a/2Term.xcodeproj/kelvin.pbxuser +++ b/2Term.xcodeproj/kelvin.pbxuser @@ -30,8 +30,8 @@ ); breakpoints = ( B676066111DEBFB000D6B66C /* TwoTermAppDelegate.m:34 */, - B676066711DEC06900D6B66C /* TermWindowController.mm:31 */, - B65FA27911E29E8D00EB447E /* EmulatorView.mm:123 */, + B676066711DEC06900D6B66C /* TermWindowController.mm:35 */, + B65FA27911E29E8D00EB447E /* EmulatorView.mm:126 */, B649E13D11E2BC7A0061921F /* VT52View.mm:460 */, B649E15211E2BF130061921F /* VT52View.mm:107 */, B649E17111E2C3C50061921F /* VT52View.mm:598 */, @@ -44,12 +44,12 @@ B66979AE11E6A8C5002ED475 /* VT52.mm:290 */, B66979B111E6A8D0002ED475 /* VT52.mm:258 */, B66979E511E6BD8B002ED475 /* EmulatorView.mm:50 */, - B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:70 */, + B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:72 */, B60EBE0511E916BD00C1974F /* ScanLineFilter.m:23 */, B60EBE0711E916C000C1974F /* ScanLineFilter.m:24 */, B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:449 */, - B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:486 */, - B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:468 */, + B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:490 */, + B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:472 */, B64925ED11EE73ED0065E73A /* VT52.mm:82 */, B649260011EE74E30065E73A /* VT52.mm:149 */, B6358D0111F6846C00437AA2 /* VT100.mm:502 */, @@ -57,7 +57,11 @@ B6358D0B11F6852300437AA2 /* VT100.mm:457 */, B6358D0E11F685B600437AA2 /* Screen.cpp:205 */, B642D32A11FFA06800CBB349 /* VT100.mm:611 */, - B642D33711FFA16F00CBB349 /* EmulatorView.mm:181 */, + B672877712B9C2E600774C3B /* PTSE.mm:78 */, + B67287A312B9CF0A00774C3B /* PTSE.mm:135 */, + B67287A512B9CF1100774C3B /* PTSE.mm:110 */, + B67287A712B9CF2300774C3B /* PTSE.mm:114 */, + B67287E312BB1E0000774C3B /* PTSE.mm:86 */, ); codeSenseManager = B676054911DADB9100D6B66C /* Code sense */; executables = ( @@ -160,21 +164,17 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 309491801; - PBXWorkspaceStateSaveDate = 309491801; + PBXPerProjectTemplateStateSaveDate = 314163002; + PBXWorkspaceStateSaveDate = 314163002; }; perUserProjectItems = { B60EBDFB11E916AE00C1974F /* PBXTextBookmark */ = B60EBDFB11E916AE00C1974F /* PBXTextBookmark */; B60EBDFC11E916AE00C1974F /* PBXTextBookmark */ = B60EBDFC11E916AE00C1974F /* PBXTextBookmark */; B60EBE6211E91C5900C1974F /* PBXTextBookmark */ = B60EBE6211E91C5900C1974F /* PBXTextBookmark */; - B6126F32127278DA002B2020 /* PBXTextBookmark */ = B6126F32127278DA002B2020 /* PBXTextBookmark */; - B6126F3E1272834C002B2020 /* PBXTextBookmark */ = B6126F3E1272834C002B2020 /* PBXTextBookmark */; - B641C82311EA1B1600B6359F /* PBXTextBookmark */ = B641C82311EA1B1600B6359F /* PBXTextBookmark */; + B61069C412B72942007204C0 /* PBXTextBookmark */ = B61069C412B72942007204C0 /* PBXTextBookmark */; B641C88811EA8DCC00B6359F /* PBXTextBookmark */ = B641C88811EA8DCC00B6359F /* PBXTextBookmark */; B644FBDD1269343B009523CE /* PBXTextBookmark */ = B644FBDD1269343B009523CE /* PBXTextBookmark */; B64925C411EE622D0065E73A /* PBXTextBookmark */ = B64925C411EE622D0065E73A /* PBXTextBookmark */; - B649E0B511E2A88D0061921F /* PBXTextBookmark */ = B649E0B511E2A88D0061921F /* PBXTextBookmark */; - B65FA28111E29EDE00EB447E /* PBXTextBookmark */ = B65FA28111E29EDE00EB447E /* PBXTextBookmark */; B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */ = B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */; B66979BD11E6ACB9002ED475 /* PBXTextBookmark */ = B66979BD11E6ACB9002ED475 /* PBXTextBookmark */; B6697A1B11E6C28A002ED475 /* PBXTextBookmark */ = B6697A1B11E6C28A002ED475 /* PBXTextBookmark */; @@ -186,6 +186,11 @@ B6697A5811E7E072002ED475 /* PBXTextBookmark */ = B6697A5811E7E072002ED475 /* PBXTextBookmark */; B6697A5911E7E072002ED475 /* PBXTextBookmark */ = B6697A5911E7E072002ED475 /* PBXTextBookmark */; B6697A5A11E7E072002ED475 /* PBXTextBookmark */ = B6697A5A11E7E072002ED475 /* PBXTextBookmark */; + B672878912B9C36800774C3B /* PBXBookmark */ = B672878912B9C36800774C3B /* PBXBookmark */; + B67287EC12BD29A100774C3B /* PBXTextBookmark */ = B67287EC12BD29A100774C3B /* PBXTextBookmark */; + B67287ED12BD29A100774C3B /* PBXTextBookmark */ = B67287ED12BD29A100774C3B /* PBXTextBookmark */; + B67287EF12BD29A100774C3B /* PBXTextBookmark */ = B67287EF12BD29A100774C3B /* PBXTextBookmark */; + B67287F012BD29A100774C3B /* PBXTextBookmark */ = B67287F012BD29A100774C3B /* PBXTextBookmark */; B676058811DAE21100D6B66C /* PBXTextBookmark */ = B676058811DAE21100D6B66C /* PBXTextBookmark */; B676058911DAE21100D6B66C /* PBXTextBookmark */ = B676058911DAE21100D6B66C /* PBXTextBookmark */; B676058B11DAE21100D6B66C /* PlistBookmark */ = B676058B11DAE21100D6B66C /* PlistBookmark */; @@ -193,11 +198,12 @@ B676060711DD4FA600D6B66C /* PBXTextBookmark */ = B676060711DD4FA600D6B66C /* PBXTextBookmark */; B676064811DEB80600D6B66C /* PBXTextBookmark */ = B676064811DEB80600D6B66C /* PBXTextBookmark */; B67606C811DED91C00D6B66C /* PBXTextBookmark */ = B67606C811DED91C00D6B66C /* PBXTextBookmark */; + B67B3CD912B6F9F50033AE07 /* PBXTextBookmark */ = B67B3CD912B6F9F50033AE07 /* PBXTextBookmark */; + B67B3D0E12B724790033AE07 /* PBXTextBookmark */ = B67B3D0E12B724790033AE07 /* PBXTextBookmark */; + B67B3D1212B724790033AE07 /* PBXTextBookmark */ = B67B3D1212B724790033AE07 /* PBXTextBookmark */; B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */ = B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */; B6A0F71A11F22CD200AC3547 /* PBXTextBookmark */ = B6A0F71A11F22CD200AC3547 /* PBXTextBookmark */; - B6BED9D111F7B4C30064628F /* PBXTextBookmark */ = B6BED9D111F7B4C30064628F /* PBXTextBookmark */; B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = B6D1D11711FFA83D00196D8E /* PBXTextBookmark */; - B6D596EE12692BBE00BC77BD /* PBXTextBookmark */ = B6D596EE12692BBE00BC77BD /* PBXTextBookmark */; B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */; B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */ = B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */; B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */ = B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */; @@ -226,7 +232,7 @@ sepNavVisRange = "{0, 760}"; }; }; - B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:70 */ = { + B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:72 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -238,9 +244,9 @@ functionName = "-awakeFromNib"; hitCount = 0; ignoreCount = 0; - lineNumber = 70; + lineNumber = 72; location = 2Term; - modificationTime = 309491863.635044; + modificationTime = 314168095.036609; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -299,7 +305,7 @@ ignoreCount = 0; lineNumber = 23; location = 2Term; - modificationTime = 309491863.635279; + modificationTime = 314168095.036785; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -317,7 +323,7 @@ ignoreCount = 0; lineNumber = 24; location = 2Term; - modificationTime = 309491863.635506; + modificationTime = 314168095.036914; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -331,25 +337,22 @@ vrLen = 725; vrLoc = 144; }; - B6126F32127278DA002B2020 /* PBXTextBookmark */ = { + B61069C412B72942007204C0 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */; - name = "TermWindowController.mm: 73"; + fRef = B6EBE2B311E0EA9100EA0458 /* CharacterGenerator.h */; + name = "CharacterGenerator.h: 11"; rLen = 0; - rLoc = 1265; + rLoc = 173; rType = 0; - vrLen = 533; - vrLoc = 1002; + vrLen = 457; + vrLoc = 0; }; - B6126F3E1272834C002B2020 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */; - name = "TermWindowController.mm: 73"; - rLen = 0; - rLoc = 1265; - rType = 0; - vrLen = 723; - vrLoc = 941; + B61D0D5F125B7ACA001C713B /* NewTerminalWindowController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1022, 1053}}"; + sepNavSelRange = "{720, 36}"; + sepNavVisRange = "{0, 1516}"; + }; }; B6358D0111F6846C00437AA2 /* VT100.mm:502 */ = { isa = PBXFileBreakpoint; @@ -365,7 +368,7 @@ ignoreCount = 0; lineNumber = 502; location = 2Term; - modificationTime = 309491863.636745; + modificationTime = 314168095.037946; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -383,7 +386,7 @@ ignoreCount = 0; lineNumber = 477; location = 2Term; - modificationTime = 309491863.636955; + modificationTime = 314168095.038104; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -401,7 +404,7 @@ ignoreCount = 0; lineNumber = 457; location = 2Term; - modificationTime = 309491863.637185; + modificationTime = 314168095.038238; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -419,20 +422,10 @@ ignoreCount = 0; lineNumber = 205; location = 2Term; - modificationTime = 309491863.637398; + modificationTime = 314168095.038371; originalNumberOfMultipleMatches = 1; state = 2; }; - B641C82311EA1B1600B6359F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; - name = "PTSE.mm: 238"; - rLen = 0; - rLoc = 6823; - rType = 0; - vrLen = 399; - vrLoc = 0; - }; B641C88811EA8DCC00B6359F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */; @@ -457,25 +450,7 @@ ignoreCount = 0; lineNumber = 611; location = 2Term; - modificationTime = 309491863.637608; - originalNumberOfMultipleMatches = 1; - state = 2; - }; - B642D33711FFA16F00CBB349 /* EmulatorView.mm:181 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; - functionName = "-drawRect:"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 181; - location = 2Term; - modificationTime = 309491863.637832; + modificationTime = 314168095.038504; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -527,7 +502,7 @@ ignoreCount = 0; lineNumber = 82; location = 2Term; - modificationTime = 309491863.636323; + modificationTime = 314168095.037642; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -545,20 +520,10 @@ ignoreCount = 0; lineNumber = 149; location = 2Term; - modificationTime = 309491863.636529; + modificationTime = 314168095.037783; originalNumberOfMultipleMatches = 1; state = 2; }; - B649E0B511E2A88D0061921F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */; - name = "CharacterGenerator.m: 1276"; - rLen = 0; - rLoc = 26470; - rType = 0; - vrLen = 635; - vrLoc = 828; - }; B649E13D11E2BC7A0061921F /* VT52View.mm:460 */ = { isa = PBXFileBreakpoint; actions = ( @@ -573,7 +538,7 @@ ignoreCount = 0; lineNumber = 460; location = 2Term; - modificationTime = 309491863.632571; + modificationTime = 314168095.025092; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -591,7 +556,7 @@ ignoreCount = 0; lineNumber = 107; location = 2Term; - modificationTime = 309491863.632764; + modificationTime = 314168095.025214; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -609,7 +574,7 @@ ignoreCount = 0; lineNumber = 598; location = 2Term; - modificationTime = 309491863.633019; + modificationTime = 314168095.025335; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -627,7 +592,7 @@ ignoreCount = 0; lineNumber = 607; location = 2Term; - modificationTime = 309491863.63321; + modificationTime = 314168095.025454; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -645,7 +610,7 @@ ignoreCount = 0; lineNumber = 170; location = 2Term; - modificationTime = 309491863.633408; + modificationTime = 314168095.025677; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -663,11 +628,11 @@ ignoreCount = 0; lineNumber = 113; location = 2Term; - modificationTime = 309491863.633601; + modificationTime = 314168095.025795; originalNumberOfMultipleMatches = 1; state = 2; }; - B65FA27911E29E8D00EB447E /* EmulatorView.mm:123 */ = { + B65FA27911E29E8D00EB447E /* EmulatorView.mm:126 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -679,22 +644,12 @@ functionName = "-drawRect:"; hitCount = 0; ignoreCount = 0; - lineNumber = 123; + lineNumber = 126; location = 2Term; - modificationTime = 309491863.632377; + modificationTime = 314168095.024878; originalNumberOfMultipleMatches = 1; state = 2; }; - B65FA28111E29EDE00EB447E /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6EBE2B311E0EA9100EA0458 /* CharacterGenerator.h */; - name = "CharacterGenerator.h: 18"; - rLen = 0; - rLoc = 289; - rType = 0; - vrLen = 360; - vrLoc = 0; - }; B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B65FA2FF11E2A5D200EB447E /* stl_vector.h */; @@ -740,7 +695,7 @@ ignoreCount = 0; lineNumber = 202; location = 2Term; - modificationTime = 309491863.633827; + modificationTime = 314168095.025956; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -758,7 +713,7 @@ ignoreCount = 0; lineNumber = 201; location = 2Term; - modificationTime = 309491863.634029; + modificationTime = 314168095.026081; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -776,7 +731,7 @@ ignoreCount = 0; lineNumber = 296; location = 2Term; - modificationTime = 309491863.634227; + modificationTime = 314168095.026197; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -794,7 +749,7 @@ ignoreCount = 0; lineNumber = 290; location = 2Term; - modificationTime = 309491863.634438; + modificationTime = 314168095.036001; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -812,7 +767,7 @@ ignoreCount = 0; lineNumber = 258; location = 2Term; - modificationTime = 309491863.634645; + modificationTime = 314168095.036199; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -840,22 +795,22 @@ ignoreCount = 0; lineNumber = 50; location = 2Term; - modificationTime = 309491863.634842; + modificationTime = 314168095.036334; originalNumberOfMultipleMatches = 1; state = 2; }; B6697A0D11E6BF95002ED475 /* CurveView.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1249, 955}}"; - sepNavSelRange = "{267, 0}"; - sepNavVisRange = "{0, 274}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 1023}}"; + sepNavSelRange = "{280, 0}"; + sepNavVisRange = "{0, 297}"; }; }; B6697A0E11E6BF95002ED475 /* CurveView.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {999, 1040}}"; - sepNavSelRange = "{188, 0}"; - sepNavVisRange = "{0, 371}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 1209}}"; + sepNavSelRange = "{577, 0}"; + sepNavVisRange = "{0, 2021}"; }; }; B6697A1B11E6C28A002ED475 /* PBXTextBookmark */ = { @@ -870,16 +825,16 @@ }; B6697A3B11E7CCA0002ED475 /* PTSE.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {685, 995}}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 1046}}"; sepNavSelRange = "{312, 0}"; sepNavVisRange = "{0, 328}"; }; }; B6697A3C11E7CCA0002ED475 /* PTSE.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {780, 3562}}"; - sepNavSelRange = "{4983, 0}"; - sepNavVisRange = "{3257, 2868}"; + sepNavIntBoundsRect = "{{0, 0}, {1859, 4043}}"; + sepNavSelRange = "{2160, 0}"; + sepNavVisRange = "{3186, 675}"; }; }; B6697A5211E7E072002ED475 /* PBXTextBookmark */ = { @@ -887,7 +842,7 @@ fRef = B6697A0E11E6BF95002ED475 /* CurveView.m */; name = "CurveView.m: 12"; rLen = 0; - rLoc = 188; + rLoc = 214; rType = 0; vrLen = 593; vrLoc = 0; @@ -962,6 +917,145 @@ vrLen = 387; vrLoc = 0; }; + B672877712B9C2E600774C3B /* PTSE.mm:78 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 78; + location = 2Term; + modificationTime = 314168095.038639; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B672878912B9C36800774C3B /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = B67B3CE412B6FA040033AE07 /* a2-charset-80.png */; + }; + B67287A312B9CF0A00774C3B /* PTSE.mm:135 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 135; + location = 2Term; + modificationTime = 314168095.03889; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B67287A512B9CF1100774C3B /* PTSE.mm:110 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 110; + location = 2Term; + modificationTime = 314168095.039096; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B67287A712B9CF2300774C3B /* PTSE.mm:114 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 114; + location = 2Term; + modificationTime = 314168095.039332; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B67287E312BB1E0000774C3B /* PTSE.mm:86 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 1; + ignoreCount = 0; + lineNumber = 86; + location = 2Term; + modificationTime = 314253077.898513; + originalNumberOfMultipleMatches = 1; + state = 1; + }; + B67287EC12BD29A100774C3B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 364"; + rLen = 0; + rLoc = 8350; + rType = 0; + vrLen = 842; + vrLoc = 3775; + }; + B67287ED12BD29A100774C3B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67287EE12BD29A100774C3B /* Diff BASE vs. Local — EmulatorView.mm */; + name = "Diff BASE vs. Local — EmulatorView.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 916; + vrLoc = 1133; + }; + B67287EE12BD29A100774C3B /* Diff BASE vs. Local — EmulatorView.mm */ = { + isa = PBXFileReference; + path = "Diff BASE vs. Local — EmulatorView.mm"; + sourceTree = ""; + }; + B67287EF12BD29A100774C3B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + name = "PTSE.mm: 114"; + rLen = 0; + rLoc = 2160; + rType = 0; + vrLen = 960; + vrLoc = 2404; + }; + B67287F012BD29A100774C3B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; + name = "PTSE.mm: 114"; + rLen = 0; + rLoc = 2160; + rType = 0; + vrLen = 1011; + vrLoc = 2404; + }; B676053511DADB8100D6B66C /* 2Term */ = { isa = PBXExecutable; activeArgIndices = ( @@ -1075,16 +1169,16 @@ }; B676063911DEAD3500D6B66C /* TermWindowController.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1064, 997}}"; - sepNavSelRange = "{232, 18}"; - sepNavVisRange = "{0, 343}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 998}}"; + sepNavSelRange = "{236, 1}"; + sepNavVisRange = "{0, 659}"; }; }; B676063A11DEAD3500D6B66C /* TermWindowController.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1513, 2418}}"; - sepNavSelRange = "{1265, 0}"; - sepNavVisRange = "{878, 749}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 2470}}"; + sepNavSelRange = "{3662, 0}"; + sepNavVisRange = "{2095, 1674}"; }; }; B676064811DEB80600D6B66C /* PBXTextBookmark */ = { @@ -1111,11 +1205,11 @@ ignoreCount = 0; lineNumber = 34; location = 2Term; - modificationTime = 309491863.631581; + modificationTime = 314168095.024329; originalNumberOfMultipleMatches = 1; state = 2; }; - B676066711DEC06900D6B66C /* TermWindowController.mm:31 */ = { + B676066711DEC06900D6B66C /* TermWindowController.mm:35 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -1127,9 +1221,9 @@ functionName = "-awakeFromNib"; hitCount = 0; ignoreCount = 0; - lineNumber = 31; + lineNumber = 35; location = 2Term; - modificationTime = 309491863.632039; + modificationTime = 314168095.024683; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1160,23 +1254,53 @@ }; B67606D811DF6DAB00D6B66C /* EmulatorView.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1167, 1131}}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 1274}}"; sepNavSelRange = "{1335, 38}"; - sepNavVisRange = "{142, 1317}"; + sepNavVisRange = "{213, 1381}"; }; }; B67606D911DF6DAB00D6B66C /* EmulatorView.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1859, 8450}}"; - sepNavSelRange = "{8798, 0}"; - sepNavVisRange = "{8286, 566}"; + sepNavIntBoundsRect = "{{0, 0}, {1513, 8242}}"; + sepNavSelRange = "{8350, 0}"; + sepNavVisRange = "{3775, 842}"; }; }; + B67B3CD912B6F9F50033AE07 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */; + name = "TermWindowController.mm: 73"; + rLen = 0; + rLoc = 1407; + rType = 0; + vrLen = 695; + vrLoc = 941; + }; + B67B3D0E12B724790033AE07 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B699A09011E572A300F54CC8 /* VT52.mm */; + name = "VT52.mm: 156"; + rLen = 0; + rLoc = 3524; + rType = 0; + vrLen = 838; + vrLoc = 2888; + }; + B67B3D1212B724790033AE07 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */; + name = "CharacterGenerator.m: 135"; + rLen = 0; + rLoc = 3078; + rType = 0; + vrLen = 958; + vrLoc = 730; + }; B699A02E11E528BC00F54CC8 /* Screen.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {653, 2834}}"; - sepNavSelRange = "{3647, 0}"; - sepNavVisRange = "{2850, 266}"; + sepNavIntBoundsRect = "{{0, 0}, {1859, 2912}}"; + sepNavSelRange = "{2875, 0}"; + sepNavVisRange = "{2821, 297}"; }; }; B699A02F11E528BC00F54CC8 /* Screen.cpp */ = { @@ -1223,9 +1347,9 @@ }; B699A09011E572A300F54CC8 /* VT52.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 7007}}"; - sepNavSelRange = "{3524, 0}"; - sepNavVisRange = "{9333, 2657}"; + sepNavIntBoundsRect = "{{0, 0}, {1022, 7280}}"; + sepNavSelRange = "{14594, 28}"; + sepNavVisRange = "{13552, 1484}"; }; }; B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */ = { @@ -1248,22 +1372,17 @@ vrLen = 625; vrLoc = 3609; }; - B6BED9D111F7B4C30064628F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; B6C0EA2F11F22CA400040D2D /* ttydefaults.h */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ttydefaults.h; path = /Developer/SDKs/MacOSX10.6.sdk/usr/include/sys/ttydefaults.h; sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1022, 1625}}"; + sepNavSelRange = "{3998, 0}"; + sepNavVisRange = "{1891, 2927}"; + }; }; B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -1275,16 +1394,6 @@ vrLen = 1231; vrLoc = 16416; }; - B6D596EE12692BBE00BC77BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; - name = "EmulatorView.mm: 360"; - rLen = 0; - rLoc = 8213; - rType = 0; - vrLen = 862; - vrLoc = 8126; - }; B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */; @@ -1309,11 +1418,11 @@ ignoreCount = 0; lineNumber = 449; location = 2Term; - modificationTime = 309491863.635708; + modificationTime = 314168095.037059; originalNumberOfMultipleMatches = 1; state = 2; }; - B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:486 */ = { + B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:490 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -1325,13 +1434,13 @@ functionName = "ViewScreen::setSize(unsigned width, unsigned height, bool resizeView)"; hitCount = 0; ignoreCount = 0; - lineNumber = 486; + lineNumber = 490; location = 2Term; - modificationTime = 309491863.63591; + modificationTime = 314168095.03719; originalNumberOfMultipleMatches = 1; state = 2; }; - B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:468 */ = { + B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:472 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -1342,24 +1451,24 @@ fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; hitCount = 0; ignoreCount = 0; - lineNumber = 468; + lineNumber = 472; location = 2Term; - modificationTime = 309491863.636117; + modificationTime = 314168095.03741; originalNumberOfMultipleMatches = 1; state = 2; }; B6EBE2B311E0EA9100EA0458 /* CharacterGenerator.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {653, 468}}"; - sepNavSelRange = "{289, 0}"; - sepNavVisRange = "{0, 360}"; + sepNavIntBoundsRect = "{{0, 0}, {1513, 395}}"; + sepNavSelRange = "{173, 0}"; + sepNavVisRange = "{0, 457}"; }; }; B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {995, 19474}}"; - sepNavSelRange = "{85, 0}"; - sepNavVisRange = "{23788, 1313}"; + sepNavIntBoundsRect = "{{0, 0}, {1048, 1755}}"; + sepNavSelRange = "{1960, 0}"; + sepNavVisRange = "{1051, 2027}"; }; }; B6F444C611E41AC000C3A836 /* VT05.h */ = { diff --git a/2Term.xcodeproj/kelvin.perspectivev3 b/2Term.xcodeproj/kelvin.perspectivev3 index 3d86a02..bcc2488 100644 --- a/2Term.xcodeproj/kelvin.perspectivev3 +++ b/2Term.xcodeproj/kelvin.perspectivev3 @@ -3,7 +3,7 @@ ActivePerspectiveName - Debug + Project AllowedModules @@ -272,7 +272,6 @@ 080E96DDFE201D6D7F000001 29B97315FDCFA39411CA2CEA 29B97317FDCFA39411CA2CEA - B66979CE11E6BCAE002ED475 1DDD58140DA1D0A300B32029 B676065011DEBAE900D6B66C 29B97323FDCFA39411CA2CEA @@ -285,13 +284,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 16 + 12 8 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {324, 1060}} + {{0, 151}, {324, 1060}} PBXTopSmartGroupGIDs @@ -307,6 +306,8 @@ MainColumn 324 + RubberWindowFrame + 0 59 1920 1119 0 0 1920 1178 Module PBXSmartGroupTreeModule @@ -322,7 +323,7 @@ PBXProjectModuleGUID B676054211DADB9000D6B66C PBXProjectModuleLabel - TermWindowController.mm + PTSE.mm PBXSplitModuleInNavigatorKey Split0 @@ -330,11 +331,11 @@ PBXProjectModuleGUID B676054311DADB9000D6B66C PBXProjectModuleLabel - TermWindowController.mm + PTSE.mm _historyCapacity 0 bookmark - B6126F3E1272834C002B2020 + B67287F012BD29A100774C3B history B676058811DAE21100D6B66C @@ -344,9 +345,7 @@ B676060711DD4FA600D6B66C B676064811DEB80600D6B66C B67606C811DED91C00D6B66C - B65FA28111E29EDE00EB447E B65FA2FE11E2A5D200EB447E - B649E0B511E2A88D0061921F B699A0C211E58D3B00F54CC8 B66979BD11E6ACB9002ED475 B6697A1B11E6C28A002ED475 @@ -361,18 +360,22 @@ B60EBDFB11E916AE00C1974F B60EBDFC11E916AE00C1974F B60EBE6211E91C5900C1974F - B641C82311EA1B1600B6359F B641C88811EA8DCC00B6359F B6E6A7BD11EAA92100A24C0C B64925C411EE622D0065E73A B6A0F71A11F22CD200AC3547 - B6BED9D111F7B4C30064628F B6FA9C5411FCE85B00F38EC1 B6FA9C6611FCE9BC00F38EC1 B6D1D11711FFA83D00196D8E - B6D596EE12692BBE00BC77BD B644FBDD1269343B009523CE - B6126F32127278DA002B2020 + B67B3CD912B6F9F50033AE07 + B67B3D0E12B724790033AE07 + B67B3D1212B724790033AE07 + B61069C412B72942007204C0 + B672878912B9C36800774C3B + B67287EC12BD29A100774C3B + B67287ED12BD29A100774C3B + B67287EF12BD29A100774C3B SplitCount @@ -386,16 +389,18 @@ GeometryConfiguration Frame - {{0, 0}, {1574, 451}} + {{0, 0}, {1574, 414}} + RubberWindowFrame + 0 59 1920 1119 0 0 1920 1178 Module PBXNavigatorGroup Proportion - 451pt + 414pt Proportion - 622pt + 659pt Tabs @@ -409,7 +414,7 @@ GeometryConfiguration Frame - {{10, 27}, {1574, 595}} + {{10, 27}, {1574, 632}} Module XCDetailModule @@ -431,6 +436,8 @@ PBXProjectFindModule + BecomeActive + ContentConfiguration PBXCVSModuleFilterTypeKey @@ -439,7 +446,7 @@ PBXCVSModuleTreeModuleColumnWidthsKey - 200 + 1000 56 63 60 @@ -464,7 +471,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {1574, 632}} + RubberWindowFrame + 0 59 1920 1119 0 0 1920 1178 Module PBXCVSModule @@ -512,11 +521,11 @@ TableOfContents - B6126F271272789C002B2020 + B672875112B9BF4800774C3B 1CA23ED40692098700951B8B - B6126F281272789C002B2020 + B672875212B9BF4800774C3B B676054211DADB9000D6B66C - B6126F291272789C002B2020 + B672875312B9BF4800774C3B 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -557,8 +566,6 @@ Layout - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -569,14 +576,12 @@ GeometryConfiguration Frame - {{0, 0}, {1920, 416}} - RubberWindowFrame - 0 59 1920 1119 0 0 1920 1178 + {{0, 0}, {1920, 403}} Module PBXDebugCLIModule Proportion - 416pt + 403pt ContentConfiguration @@ -595,8 +600,8 @@ yes sizes - {{0, 0}, {937, 322}} - {{937, 0}, {983, 322}} + {{0, 0}, {937, 328}} + {{937, 0}, {983, 328}} VerticalSplitView @@ -611,8 +616,8 @@ yes sizes - {{0, 0}, {1920, 322}} - {{0, 322}, {1920, 335}} + {{0, 0}, {1920, 328}} + {{0, 328}, {1920, 342}} @@ -632,30 +637,26 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 421}, {1920, 657}} + {{0, 408}, {1920, 670}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration Name - 120 + 217 Value 85 Summary - 753 + 656 Frame - {{937, 0}, {983, 322}} - RubberWindowFrame - 0 59 1920 1119 0 0 1920 1178 + {{937, 0}, {983, 328}} - RubberWindowFrame - 0 59 1920 1119 0 0 1920 1178 Module PBXDebugSessionModule Proportion - 657pt + 670pt Name @@ -673,14 +674,14 @@ TableOfContents - B6126F2A1272789C002B2020 + B672876412B9C27F00774C3B 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - B6126F2B1272789C002B2020 - B6126F2C1272789C002B2020 - B6126F2D1272789C002B2020 - B6126F2E1272789C002B2020 - B676054211DADB9000D6B66C + B672876512B9C27F00774C3B + B672876612B9C27F00774C3B + B672876712B9C27F00774C3B + B672876812B9C27F00774C3B + B672876912B9C27F00774C3B ToolbarConfigUserDefaultsMinorVersion 2 @@ -714,11 +715,10 @@ 5 WindowOrderList - B6126F3C1272796D002B2020 - B6126F3B12727935002B2020 - B6126F301272789C002B2020 - B6126F311272789C002B2020 - B6126F3712727905002B2020 + 1C530D5B069F1CE1000CFCEE + B67287F212BD29A100774C3B + B672876B12B9C27F00774C3B + B672876C12B9C27F00774C3B /Users/kelvin/Projects/2Term/2Term.xcodeproj WindowString @@ -1095,7 +1095,7 @@ TableOfContents 1C530D5B069F1CE1000CFCEE - B6BED9FA11F7C2980064628F + B67287F112BD29A100774C3B 1C78EAAC065D492600B07095 ToolbarConfiguration diff --git a/2Term.xcodeproj/project.pbxproj b/2Term.xcodeproj/project.pbxproj index bd8a9f2..2206ce4 100644 --- a/2Term.xcodeproj/project.pbxproj +++ b/2Term.xcodeproj/project.pbxproj @@ -27,6 +27,8 @@ B676063B11DEAD3500D6B66C /* TermWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */; }; B676065111DEBAE900D6B66C /* TermWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B676065011DEBAE900D6B66C /* TermWindow.xib */; }; B67606DA11DF6DAB00D6B66C /* EmulatorView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; }; + B67B3CE512B6FA040033AE07 /* a2-charset-40.png in Resources */ = {isa = PBXBuildFile; fileRef = B67B3CE312B6FA040033AE07 /* a2-charset-40.png */; }; + B67B3CE612B6FA040033AE07 /* a2-charset-80.png in Resources */ = {isa = PBXBuildFile; fileRef = B67B3CE412B6FA040033AE07 /* a2-charset-80.png */; }; B699A03011E528BC00F54CC8 /* Screen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */; }; B699A05D11E54D4500F54CC8 /* OutputChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B699A05C11E54D4500F54CC8 /* OutputChannel.cpp */; }; B699A09111E572A300F54CC8 /* VT52.mm in Sources */ = {isa = PBXBuildFile; fileRef = B699A09011E572A300F54CC8 /* VT52.mm */; }; @@ -94,6 +96,8 @@ B676064D11DEBAE300D6B66C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/TermWindow.xib; sourceTree = ""; }; B67606D811DF6DAB00D6B66C /* EmulatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmulatorView.h; sourceTree = ""; }; B67606D911DF6DAB00D6B66C /* EmulatorView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EmulatorView.mm; sourceTree = ""; }; + B67B3CE312B6FA040033AE07 /* a2-charset-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "a2-charset-40.png"; sourceTree = ""; }; + B67B3CE412B6FA040033AE07 /* a2-charset-80.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "a2-charset-80.png"; sourceTree = ""; }; B699A02E11E528BC00F54CC8 /* Screen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Screen.h; sourceTree = ""; }; B699A02F11E528BC00F54CC8 /* Screen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Screen.cpp; sourceTree = ""; }; B699A03211E528DE00F54CC8 /* iGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iGeometry.h; sourceTree = ""; }; @@ -199,13 +203,13 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - B61D0D5B125B740C001C713B /* NewTerminal.xib */, B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */, B66979CE11E6BCAE002ED475 /* images */, 8D1107310486CEB800E47090 /* TwoTerm-Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, B676065011DEBAE900D6B66C /* TermWindow.xib */, + B61D0D5B125B740C001C713B /* NewTerminal.xib */, ); name = Resources; sourceTree = ""; @@ -222,6 +226,8 @@ B66979CE11E6BCAE002ED475 /* images */ = { isa = PBXGroup; children = ( + B67B3CE312B6FA040033AE07 /* a2-charset-40.png */, + B67B3CE412B6FA040033AE07 /* a2-charset-80.png */, ); path = images; sourceTree = ""; @@ -311,6 +317,8 @@ 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, B676065111DEBAE900D6B66C /* TermWindow.xib in Resources */, B61D0D5D125B740C001C713B /* NewTerminal.xib in Resources */, + B67B3CE512B6FA040033AE07 /* a2-charset-40.png in Resources */, + B67B3CE612B6FA040033AE07 /* a2-charset-80.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/CurveView.h b/CurveView.h index 151195e..ee8dfbb 100644 --- a/CurveView.h +++ b/CurveView.h @@ -16,4 +16,6 @@ @property (nonatomic, retain) NSColor *color; +-(void)initScanLines; + @end diff --git a/CurveView.m b/CurveView.m index ea803d4..636c2c4 100644 --- a/CurveView.m +++ b/CurveView.m @@ -7,7 +7,7 @@ // #import "CurveView.h" - +#import "ScanLineFilter.h" @implementation CurveView @@ -21,6 +21,34 @@ return self; } +-(void)initScanLines +{ + NSMutableArray *filters; + CIFilter *filter; + + [self setWantsLayer: YES]; + + filters = [NSMutableArray arrayWithCapacity: 3]; + + + + //add the scanlines (which are vertical and must therfore be rotated + + filter = [[ScanLineFilter new] autorelease]; + [filter setValue: [NSNumber numberWithFloat: 0.75] forKey: @"inputOpacity"]; + [filters addObject: filter]; + + //blur it a bit... + + filter = [CIFilter filterWithName: @"CIGaussianBlur"]; + [filter setDefaults]; + [filter setValue: [NSNumber numberWithFloat: 0.33] forKey: @"inputRadius"]; + + [filters addObject: filter]; + + [self setContentFilters: filters]; +} + #define curveSize 4 - (void)drawRect:(NSRect)dirtyRect { diff --git a/EmulatorView.mm b/EmulatorView.mm index 43434d9..49fd191 100644 --- a/EmulatorView.mm +++ b/EmulatorView.mm @@ -40,19 +40,21 @@ -(void)awakeFromNib { - CIFilter *filter; - NSMutableArray *filters; + //CIFilter *filter; + //NSMutableArray *filters; _charWidth = 7; _charHeight = 16; - _foregroundColor = [[NSColor greenColor] retain]; - _backgroundColor = [[NSColor blackColor] retain]; + //_foregroundColor = [[NSColor greenColor] retain]; + //_backgroundColor = [[NSColor blackColor] retain]; _boldColor = [[NSColor redColor] retain]; + _foregroundColor = [[NSColor whiteColor] retain]; + _backgroundColor = [[NSColor blueColor] retain]; - + /* [self setWantsLayer: YES]; filters = [NSMutableArray arrayWithCapacity: 3]; @@ -74,13 +76,14 @@ [filters addObject: filter]; [self setContentFilters: filters]; + */ _screen.setFD(_fd); _screen.setView(self); _charGen = [[CharacterGenerator generator] retain]; - _cursorImg = [[_charGen imageForCharacter: '_'] retain]; + _cursorImg = [[_charGen imageForCharacter: 0x7f] retain]; //_emulator = [VT52 new]; @@ -192,7 +195,7 @@ if (flag & Screen::FlagBold) currentFront = _boldColor; - + img = [_charGen imageForCharacter: ci.c]; if (flag & Screen::FlagInverse) @@ -222,7 +225,8 @@ if (setFront) [currentFront setFill]; [img drawInRect: charRect - fromRect: NSZeroRect operation: NSCompositeCopy + fromRect: NSZeroRect + operation: NSCompositeCopy fraction: 1.0 respectFlipped: YES hints: nil]; diff --git a/English.lproj/NewTerminal.xib b/English.lproj/NewTerminal.xib index e542f04..f9263b2 100644 --- a/English.lproj/NewTerminal.xib +++ b/English.lproj/NewTerminal.xib @@ -2,22 +2,17 @@ 1060 - 10F569 - 1197 - 1038.29 - + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + YES - NSView - NSMenu - NSWindowTemplate - NSMenuItem - NSTextField - NSTextFieldCell - NSPopUpButton - NSPopUpButtonCell - NSButtonCell - NSButton - NSCustomObject + YES @@ -51,6 +46,7 @@ New Terminal NSWindow + {1.79769e+308, 1.79769e+308} 256 @@ -69,10 +65,10 @@ LucidaGrande 13 - 1040 + 1044 - -2038284033 + -2035269377 163 @@ -133,11 +129,11 @@ YES 68288064 - 272630784 + 71304192 Terminal Type: - + 6 System controlColor @@ -146,17 +142,33 @@ MC42NjY2NjY2NjY3AA - + 6 System controlTextColor - + 3 MAA + + + 268 + {{17, 104}, {99, 17}} + + YES + + 68288064 + 71304192 + Foreground: + + + + + + 289 @@ -198,17 +210,71 @@ 75 + + + 268 + + YES + + YES + NSColor pasteboard type + + + {{121, 101}, {44, 23}} + + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 268 + {{17, 76}, {99, 17}} + + YES + + 68288064 + 71304192 + Background: + + + + + + + + + 268 + + YES + + YES + NSColor pasteboard type + + + {{121, 73}, {44, 23}} + + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + - {{7, 11}, {400, 175}} + {400, 175} {{0, 0}, {1920, 1178}} - {1e+13, 1e+13} + {1.79769e+308, 1.79769e+308} - + YES @@ -296,6 +362,10 @@ + + + + @@ -379,6 +449,44 @@ + + 49 + + + + + 50 + + + YES + + + + + + 51 + + + + + 52 + + + YES + + + + + + 53 + + + + + 54 + + + @@ -388,6 +496,7 @@ -1.IBPluginDependency -2.IBPluginDependency -3.IBPluginDependency + 1.IBEditorWindowLastContentRect 1.IBPluginDependency 1.IBWindowTemplateEditedContentRect 1.NSWindowTemplate.visibleAtLaunch @@ -401,15 +510,31 @@ 20.IBPluginDependency 3.IBPluginDependency 4.IBPluginDependency + 49.IBPluginDependency + 49.IBViewBoundsToFrameTransform + 50.IBPluginDependency + 50.IBViewBoundsToFrameTransform + 50.IBViewIntegration.shadowBlurRadius + 50.IBViewIntegration.shadowColor + 50.IBViewIntegration.shadowOffsetHeight + 50.IBViewIntegration.shadowOffsetWidth + 51.IBPluginDependency + 52.IBPluginDependency + 52.IBViewBoundsToFrameTransform + 53.IBPluginDependency + 53.IBViewBoundsToFrameTransform + 54.IBPluginDependency 9.IBPluginDependency + 9.IBViewBoundsToFrameTransform YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{107, 494}, {400, 175}} com.apple.InterfaceBuilder.CocoaPlugin - {{357, 418}, {480, 270}} + {{107, 494}, {400, 175}} {196, 240} {{357, 418}, {480, 270}} @@ -422,6 +547,31 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + AULyAABCygAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBuAAAwu4AAA + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBuAAAwrYAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUL8AABCwAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBiAAAwxYAAA + @@ -440,17 +590,591 @@ - 48 + 54 + + + + YES + + NewTerminalWindowController + NSWindowController + + YES + + YES + cancelButton: + connectButton: + + + YES + id + id + + + + YES + + YES + cancelButton: + connectButton: + + + YES + + cancelButton: + id + + + connectButton: + id + + + + + _terminalTypeButton + NSPopUpButton + + + _terminalTypeButton + + _terminalTypeButton + NSPopUpButton + + + + IBProjectSource + NewTerminalWindowController.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSColorWell + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSColorWell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMenuItemCell + NSButtonCell + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItemCell.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CIImageProvider.h + + + + NSPopUpButton + NSButton + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButton.h + + + + NSPopUpButtonCell + NSMenuItemCell + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButtonCell.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + showWindow: + + showWindow: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + - 0 IBCocoaFramework - + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 YES - + ../2Term.xcodeproj 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + diff --git a/English.lproj/TermWindow.xib b/English.lproj/TermWindow.xib index 5f5fc3b..dd96360 100644 --- a/English.lproj/TermWindow.xib +++ b/English.lproj/TermWindow.xib @@ -2,15 +2,17 @@ 1060 - 10F569 - 1197 - 1038.29 - + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + YES - NSCustomView - NSWindowTemplate - NSView - NSCustomObject + YES @@ -44,6 +46,7 @@ Two Term [VT52] NSWindow + {1.79769e+308, 1.79769e+308} {620, 444} @@ -60,7 +63,6 @@ 274 {{10, 10}, {560, 384}} - EmulatorView @@ -70,17 +72,17 @@ CurveView - {{7, 11}, {620, 444}} + {620, 444} {{0, 0}, {1920, 1178}} {620, 466} - {1e+13, 1e+13} + {1.79769e+308, 1.79769e+308} - + YES @@ -98,14 +100,6 @@ 4 - - - _emulatorView - - - - 6 - displayPatternTitle1: emulator.name @@ -126,6 +120,22 @@ 12 + + + curveView + + + + 13 + + + + emulatorView + + + + 14 + @@ -199,18 +209,22 @@ 1.NSWindowTemplate.visibleAtLaunch 1.WindowOrigin 1.editorWindowContentRectSynchronizationRect + 1.windowTemplate.hasMinSize + 1.windowTemplate.minSize 2.IBPluginDependency 5.IBPluginDependency 9.IBPluginDependency YES - {{431, 524}, {620, 444}} + {{428, 414}, {620, 444}} com.apple.InterfaceBuilder.CocoaPlugin - {{431, 524}, {620, 444}} + {{428, 414}, {620, 444}} {196, 240} {{202, 428}, {480, 270}} + + {620, 444} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -232,16 +246,512 @@ - 12 + 14 + + + + YES + + CurveView + NSView + + IBProjectSource + CurveView.h + + + + EmulatorView + NSView + + YES + + YES + copy: + paste: + + + YES + id + id + + + + YES + + YES + copy: + paste: + + + YES + + copy: + id + + + paste: + id + + + + + IBProjectSource + EmulatorView.h + + + + TermWindowController + NSWindowController + + YES + + YES + curveView + emulatorView + + + YES + CurveView + EmulatorView + + + + YES + + YES + curveView + emulatorView + + + YES + + curveView + CurveView + + + emulatorView + EmulatorView + + + + + IBProjectSource + TermWindowController.h + + + + + YES + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CIImageProvider.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + showWindow: + + showWindow: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + - 0 IBCocoaFramework - + com.apple.InterfaceBuilder.CocoaPlugin.macosx - + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 diff --git a/PTSE.mm b/PTSE.mm index e1218bf..25deb5d 100644 --- a/PTSE.mm +++ b/PTSE.mm @@ -111,7 +111,7 @@ enum { break; case CTRL('I'): //Move cursor to next tab stop (every 8 chars). - screen->setX((screen->x() + 8) & 0x07); + screen->setX((screen->x() + 8) & ~0x07); break; case CTRL('A'): //Move cursor to beginning of line. @@ -139,6 +139,7 @@ enum { case CTRL('D'): //Delete current character (under cursor). + // TODO -- does this shift the rest of the row? break; case CTRL('F'): //Insert space at cursor. @@ -209,6 +210,12 @@ enum { _state = StateTone1; break; + default: + if (c >= 0x20 && c < 0x7f) + { + screen->putc(c); + } + break; } @@ -272,9 +279,20 @@ enum { switch (uc) { case NSLeftArrowFunctionKey: + output->write(CTRL('H')); + break; + case NSRightArrowFunctionKey: + output->write(CTRL('U')); + break; + case NSUpArrowFunctionKey: + output->write(CTRL('K')); + break; + case NSDownArrowFunctionKey: + output->write(CTRL('J')); + break; default: if (uc <= 0x7f) diff --git a/TermWindowController.h b/TermWindowController.h index 86e71f8..330d9d8 100644 --- a/TermWindowController.h +++ b/TermWindowController.h @@ -10,18 +10,24 @@ @class EmulatorView; +@class CurveView; + @protocol Emulator; @interface TermWindowController : NSWindowController { - IBOutlet EmulatorView *_emulatorView; - + EmulatorView *_emulatorView; + CurveView *_curveView; + NSObject *_emulator; int _child; } +@property (nonatomic, retain) IBOutlet EmulatorView *emulatorView; +@property (nonatomic, retain) IBOutlet CurveView *curveView; + @property (nonatomic, retain) NSObject *emulator; -(void)initPTY; diff --git a/TermWindowController.mm b/TermWindowController.mm index 0ef537b..dd0ea5b 100644 --- a/TermWindowController.mm +++ b/TermWindowController.mm @@ -8,8 +8,10 @@ #import "TermWindowController.h" #import "EmulatorView.h" -#import "VT52.h" +#import "CurveView.h" +#import "VT52.h" +#import "PTSE.h" #define TTYDEFCHARS @@ -25,6 +27,8 @@ @implementation TermWindowController @synthesize emulator = _emulator; +@synthesize emulatorView = _emulatorView; +@synthesize curveView = _curveView; +(id)new { @@ -34,7 +38,9 @@ -(void)dealloc { [_emulator release]; - //[_emulatorView release]; + [_emulatorView release]; + [_curveView release]; + [super dealloc]; } @@ -159,10 +165,19 @@ { [super windowDidLoad]; - if (!_emulator) [self setEmulator: [[VT52 new] autorelease]]; + if (!_emulator) + { + // window title is bound to _emulator + [self willChangeValueForKey: @"emulator"]; + _emulator = [PTSE new]; + [self didChangeValueForKey: @"emulator"]; + } [_emulatorView setEmulator: _emulator]; + [_curveView initScanLines]; + [_curveView setColor: [NSColor blueColor]]; + [self initPTY]; }