#4875 "Web Seeds" field should allow copying

This commit is contained in:
Mitchell Livingston
2012-04-29 00:53:34 +00:00
parent 4332e45f23
commit 491a98cf87
7 changed files with 242 additions and 89 deletions

View File

@@ -279,6 +279,9 @@
A2D307A40D9EC6870051FD27 /* BlocklistDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D307A30D9EC6870051FD27 /* BlocklistDownloader.m */; }; A2D307A40D9EC6870051FD27 /* BlocklistDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D307A30D9EC6870051FD27 /* BlocklistDownloader.m */; };
A2D307B10D9EC9F50051FD27 /* BlocklistStatusWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = A2D307B00D9EC9F50051FD27 /* BlocklistStatusWindow.xib */; }; A2D307B10D9EC9F50051FD27 /* BlocklistStatusWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = A2D307B00D9EC9F50051FD27 /* BlocklistStatusWindow.xib */; };
A2D5972A0F5AE49E0001AB3C /* watch.c in Sources */ = {isa = PBXBuildFile; fileRef = A2D597280F5AE49E0001AB3C /* watch.c */; }; A2D5972A0F5AE49E0001AB3C /* watch.c in Sources */ = {isa = PBXBuildFile; fileRef = A2D597280F5AE49E0001AB3C /* watch.c */; };
A2D77451154CC25700A62B93 /* WebSeedTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D7744F154CC25700A62B93 /* WebSeedTableView.h */; };
A2D77452154CC25700A62B93 /* WebSeedTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D77450154CC25700A62B93 /* WebSeedTableView.m */; };
A2D77453154CC72B00A62B93 /* WebSeedTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D77450154CC25700A62B93 /* WebSeedTableView.m */; };
A2DA362A0CBC674900C2ED41 /* InfoActivity.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36270CBC674900C2ED41 /* InfoActivity.png */; }; A2DA362A0CBC674900C2ED41 /* InfoActivity.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36270CBC674900C2ED41 /* InfoActivity.png */; };
A2DA362B0CBC674900C2ED41 /* InfoFiles.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36280CBC674900C2ED41 /* InfoFiles.png */; }; A2DA362B0CBC674900C2ED41 /* InfoFiles.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36280CBC674900C2ED41 /* InfoFiles.png */; };
A2DA362C0CBC674900C2ED41 /* InfoPeers.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36290CBC674900C2ED41 /* InfoPeers.png */; }; A2DA362C0CBC674900C2ED41 /* InfoPeers.png in Resources */ = {isa = PBXBuildFile; fileRef = A2DA36290CBC674900C2ED41 /* InfoPeers.png */; };
@@ -874,6 +877,8 @@
A2D307B00D9EC9F50051FD27 /* BlocklistStatusWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = BlocklistStatusWindow.xib; path = macosx/BlocklistStatusWindow.xib; sourceTree = "<group>"; }; A2D307B00D9EC9F50051FD27 /* BlocklistStatusWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = BlocklistStatusWindow.xib; path = macosx/BlocklistStatusWindow.xib; sourceTree = "<group>"; };
A2D597280F5AE49E0001AB3C /* watch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = watch.c; path = daemon/watch.c; sourceTree = "<group>"; }; A2D597280F5AE49E0001AB3C /* watch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = watch.c; path = daemon/watch.c; sourceTree = "<group>"; };
A2D597290F5AE49E0001AB3C /* watch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = watch.h; path = daemon/watch.h; sourceTree = "<group>"; }; A2D597290F5AE49E0001AB3C /* watch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = watch.h; path = daemon/watch.h; sourceTree = "<group>"; };
A2D7744F154CC25700A62B93 /* WebSeedTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSeedTableView.h; path = macosx/WebSeedTableView.h; sourceTree = "<group>"; };
A2D77450154CC25700A62B93 /* WebSeedTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WebSeedTableView.m; path = macosx/WebSeedTableView.m; sourceTree = "<group>"; };
A2DA36270CBC674900C2ED41 /* InfoActivity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoActivity.png; path = macosx/Images/InfoActivity.png; sourceTree = "<group>"; }; A2DA36270CBC674900C2ED41 /* InfoActivity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoActivity.png; path = macosx/Images/InfoActivity.png; sourceTree = "<group>"; };
A2DA36280CBC674900C2ED41 /* InfoFiles.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoFiles.png; path = macosx/Images/InfoFiles.png; sourceTree = "<group>"; }; A2DA36280CBC674900C2ED41 /* InfoFiles.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoFiles.png; path = macosx/Images/InfoFiles.png; sourceTree = "<group>"; };
A2DA36290CBC674900C2ED41 /* InfoPeers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoPeers.png; path = macosx/Images/InfoPeers.png; sourceTree = "<group>"; }; A2DA36290CBC674900C2ED41 /* InfoPeers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = InfoPeers.png; path = macosx/Images/InfoPeers.png; sourceTree = "<group>"; };
@@ -1660,6 +1665,8 @@
A2725D5C0DE7507C003445E7 /* TrackerTableView.m */, A2725D5C0DE7507C003445E7 /* TrackerTableView.m */,
A21A9D3F106EC2E800F1C3C1 /* TrackerCell.h */, A21A9D3F106EC2E800F1C3C1 /* TrackerCell.h */,
A21A9D40106EC2E800F1C3C1 /* TrackerCell.m */, A21A9D40106EC2E800F1C3C1 /* TrackerCell.m */,
A2D7744F154CC25700A62B93 /* WebSeedTableView.h */,
A2D77450154CC25700A62B93 /* WebSeedTableView.m */,
A263CFBE10DD67670038DE27 /* InfoTextField.h */, A263CFBE10DD67670038DE27 /* InfoTextField.h */,
A263CFBF10DD67670038DE27 /* InfoTextField.m */, A263CFBF10DD67670038DE27 /* InfoTextField.m */,
); );
@@ -1756,6 +1763,7 @@
A2679295130E00A000CB7464 /* tr-utp.h in Headers */, A2679295130E00A000CB7464 /* tr-utp.h in Headers */,
A23F29A1132A447400E9A83B /* announcer-common.h in Headers */, A23F29A1132A447400E9A83B /* announcer-common.h in Headers */,
A2EE726F14DCCC950093C99A /* natpmp_local.h in Headers */, A2EE726F14DCCC950093C99A /* natpmp_local.h in Headers */,
A2D77451154CC25700A62B93 /* WebSeedTableView.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -2263,6 +2271,7 @@
A2679294130E00A000CB7464 /* tr-utp.c in Sources */, A2679294130E00A000CB7464 /* tr-utp.c in Sources */,
A23F29A2132A447400E9A83B /* announcer-http.c in Sources */, A23F29A2132A447400E9A83B /* announcer-http.c in Sources */,
A2AA9BE1132CAC8E00FA131E /* announcer-udp.c in Sources */, A2AA9BE1132CAC8E00FA131E /* announcer-udp.c in Sources */,
A2D77452154CC25700A62B93 /* WebSeedTableView.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -2278,6 +2287,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
A2D77453154CC72B00A62B93 /* WebSeedTableView.m in Sources */,
8D11072D0486CEB800E47090 /* main.m in Sources */, 8D11072D0486CEB800E47090 /* main.m in Sources */,
4DF0C5AB0899190500DD8943 /* Controller.m in Sources */, 4DF0C5AB0899190500DD8943 /* Controller.m in Sources */,
4D118E1A08CB46B20033958F /* PrefsController.m in Sources */, 4D118E1A08CB46B20033958F /* PrefsController.m in Sources */,
@@ -2737,7 +2747,6 @@
"$(inherited)", "$(inherited)",
"\"$(SRCROOT)/third-party/curl/lib\"", "\"$(SRCROOT)/third-party/curl/lib\"",
); );
MACOSX_DEPLOYMENT_TARGET = 10.6;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"$(inherited)", "$(inherited)",
"-DSYS_DARWIN", "-DSYS_DARWIN",
@@ -2895,7 +2904,6 @@
"$(inherited)", "$(inherited)",
"\"$(SRCROOT)/third-party/curl/lib\"", "\"$(SRCROOT)/third-party/curl/lib\"",
); );
MACOSX_DEPLOYMENT_TARGET = 10.6;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"$(inherited)", "$(inherited)",
"-DSYS_DARWIN", "-DSYS_DARWIN",
@@ -3004,7 +3012,6 @@
"$(inherited)", "$(inherited)",
"\"$(SRCROOT)/third-party/curl/lib\"", "\"$(SRCROOT)/third-party/curl/lib\"",
); );
MACOSX_DEPLOYMENT_TARGET = 10.6;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"$(inherited)", "$(inherited)",
"-DSYS_DARWIN", "-DSYS_DARWIN",

View File

@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data> <data>
<int key="IBDocument.SystemTarget">1060</int> <int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">11B26</string> <string key="IBDocument.SystemVersion">11D50</string>
<string key="IBDocument.InterfaceBuilderVersion">1617</string> <string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138</string> <string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">566.00</string> <string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">1617</string> <string key="NS.object.0">2182</string>
</object> </object>
<array key="IBDocument.IntegratedClassDependencies"> <array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string> <string>NSTextField</string>
@@ -26,7 +26,10 @@
<array key="IBDocument.PluginDependencies"> <array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array> </array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/> <object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001"> <object class="NSCustomObject" id="1001">
<string key="NSClassName">InfoPeersViewController</string> <string key="NSClassName">InfoPeersViewController</string>
@@ -38,7 +41,7 @@
<string key="NSClassName">NSApplication</string> <string key="NSClassName">NSApplication</string>
</object> </object>
<object class="NSCustomView" id="360777202"> <object class="NSCustomView" id="360777202">
<nil key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">274</int> <int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews"> <array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="456525247"> <object class="NSTextField" id="456525247">
@@ -46,6 +49,8 @@
<int key="NSvFlags">290</int> <int key="NSvFlags">290</int>
<string key="NSFrame">{{7, 10}, {340, 28}}</string> <string key="NSFrame">{{7, 10}, {340, 28}}</string>
<reference key="NSSuperview" ref="360777202"/> <reference key="NSSuperview" ref="360777202"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="524548358"> <object class="NSTextFieldCell" key="NSCell" id="524548358">
<int key="NSCellFlags">67239488</int> <int key="NSCellFlags">67239488</int>
@@ -91,13 +96,15 @@
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{332, 209}</string> <string key="NSFrameSize">{332, 209}</string>
<reference key="NSSuperview" ref="91099094"/> <reference key="NSSuperview" ref="91099094"/>
<reference key="NSNextKeyView" ref="805572887"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="290419194"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="491528206"> <object class="NSTableHeaderView" key="NSHeaderView" id="491528206">
<reference key="NSNextResponder" ref="805572887"/> <reference key="NSNextResponder" ref="805572887"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{332, 17}</string> <string key="NSFrameSize">{332, 17}</string>
<reference key="NSSuperview" ref="805572887"/> <reference key="NSSuperview" ref="805572887"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="91099094"/> <reference key="NSNextKeyView" ref="91099094"/>
<reference key="NSTableView" ref="298614287"/> <reference key="NSTableView" ref="298614287"/>
</object> </object>
@@ -229,60 +236,61 @@ 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 AAABeHJvUk8AAAAIAAABeHN2U0UAAAAIAAABeHpoQ04AAAAIAAABeGphSlAAAAAIAAABeGFyAAAAAAAI
AAABGGZpRkkAAAAIAAABGHBsUEwAAAAIAAABGHJ1UlUAAAAIAAABGGVuVVMAAAAIAAABGGRhREsAAAAI AAABeGVsR1IAAAAIAAABeHB0UFQAAAAIAAABeG5sTkwAAAAIAAABeGZyRlIAAAAIAAABeGVzRVMAAAAI
AAABGABpAE0AYQBjdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTEAWFlaIAAAAAAAAPMW AAABeHRoVEgAAAAIAAABeHRyVFIAAAAIAAABeGZpRkkAAAAIAAABeGhySFIAAAAIAAABeHBsUEwAAAAI
AAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAAueYAABP2WFlaIAAAAAAAACPy AAABeHJ1UlUAAAAIAAABeGVuVVMAAAAIAAABeGRhREsAAAAIAAABeABpAE0AYQBjdGV4dAAAAABDb3B5
AAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBe cmlnaHQgQXBwbGUsIEluYy4sIDIwMTIAWFlaIAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmK
AGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2 AAABZ1hZWiAAAAAAAABhIwAAueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAF
APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB AAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCa
AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV AJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+
AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7 AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQIm
BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2 Ai8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNa
BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgL A2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wTh
CB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqB BPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbA
CpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1a BtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7
DXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY
ELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJ C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6b
FGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl DrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIH
GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1 EiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXg
HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7 FgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoq
IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6 GlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p
J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12 HxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQf
Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPx JE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ
NCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrv KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
Oy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau
QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9 Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3g
SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT PiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa
U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1 Rd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03c
XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn TiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFap
Zj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr VvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AF
cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsE YFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnx
e2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZy akhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRw
hteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 dMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+E
kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8d f+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
n4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1
rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRW
urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8 pMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW
yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1
2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62
6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c
+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoO 3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o
dmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2 7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c
AACnQAAAVYAAAEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAA /23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAA
AAEMcgAABfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgBwAAAADJJx4A AAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzAAACewAAAJYAAAAzA
AAAAAAAAAAAAAAAAAAAAAA</bytes> AABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud
///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgBwAAAADJJx4AAAAAAAAAAAAAAAAAAAAAAA</bytes>
</object> </object>
<string key="NSCacheWindowColorSpace">NSCalibratedRGBColorSpace</string> <string key="NSCacheWindowColorSpace">NSCalibratedRGBColorSpace</string>
<int key="NSCacheWindowBPS">8</int> <int key="NSCacheWindowBPS">8</int>
@@ -433,6 +441,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{1, 17}, {332, 209}}</string> <string key="NSFrame">{{1, 17}, {332, 209}}</string>
<reference key="NSSuperview" ref="902227095"/> <reference key="NSSuperview" ref="902227095"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="298614287"/> <reference key="NSNextKeyView" ref="298614287"/>
<reference key="NSDocView" ref="298614287"/> <reference key="NSDocView" ref="298614287"/>
<reference key="NSBGColor" ref="907173649"/> <reference key="NSBGColor" ref="907173649"/>
@@ -443,6 +452,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{328, 17}, {11, 117}}</string> <string key="NSFrame">{{328, 17}, {11, 117}}</string>
<reference key="NSSuperview" ref="902227095"/> <reference key="NSSuperview" ref="902227095"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1026901693"/> <reference key="NSNextKeyView" ref="1026901693"/>
<int key="NSsFlags">256</int> <int key="NSsFlags">256</int>
<reference key="NSTarget" ref="902227095"/> <reference key="NSTarget" ref="902227095"/>
@@ -454,6 +464,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 215}, {335, 11}}</string> <string key="NSFrame">{{1, 215}, {335, 11}}</string>
<reference key="NSSuperview" ref="902227095"/> <reference key="NSSuperview" ref="902227095"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="456525247"/> <reference key="NSNextKeyView" ref="456525247"/>
<int key="NSsFlags">257</int> <int key="NSsFlags">257</int>
<reference key="NSTarget" ref="902227095"/> <reference key="NSTarget" ref="902227095"/>
@@ -468,6 +479,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{1, 0}, {332, 17}}</string> <string key="NSFrame">{{1, 0}, {332, 17}}</string>
<reference key="NSSuperview" ref="902227095"/> <reference key="NSSuperview" ref="902227095"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="491528206"/> <reference key="NSNextKeyView" ref="491528206"/>
<reference key="NSDocView" ref="491528206"/> <reference key="NSDocView" ref="491528206"/>
<reference key="NSBGColor" ref="907173649"/> <reference key="NSBGColor" ref="907173649"/>
@@ -476,7 +488,8 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{10, 44}, {334, 227}}</string> <string key="NSFrame">{{10, 44}, {334, 227}}</string>
<reference key="NSSuperview" ref="360777202"/> <reference key="NSSuperview" ref="360777202"/>
<reference key="NSNextKeyView" ref="91099094"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="805572887"/>
<int key="NSsFlags">133682</int> <int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="290419194"/> <reference key="NSVScroller" ref="290419194"/>
<reference key="NSHScroller" ref="1026901693"/> <reference key="NSHScroller" ref="1026901693"/>
@@ -497,13 +510,15 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{332, 48}</string> <string key="NSFrameSize">{332, 48}</string>
<reference key="NSSuperview" ref="810248708"/> <reference key="NSSuperview" ref="810248708"/>
<reference key="NSNextKeyView" ref="649295662"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="163772156"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="496895863"> <object class="NSTableHeaderView" key="NSHeaderView" id="496895863">
<reference key="NSNextResponder" ref="649295662"/> <reference key="NSNextResponder" ref="649295662"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{332, 17}</string> <string key="NSFrameSize">{332, 17}</string>
<reference key="NSSuperview" ref="649295662"/> <reference key="NSSuperview" ref="649295662"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="810248708"/> <reference key="NSNextKeyView" ref="810248708"/>
<reference key="NSTableView" ref="804988141"/> <reference key="NSTableView" ref="804988141"/>
</object> </object>
@@ -585,7 +600,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<reference key="NSBackgroundColor" ref="388713163"/> <reference key="NSBackgroundColor" ref="388713163"/>
<reference key="NSGridColor" ref="603390146"/> <reference key="NSGridColor" ref="603390146"/>
<double key="NSRowHeight">14</double> <double key="NSRowHeight">14</double>
<int key="NSTvFlags">-742359040</int> <int key="NSTvFlags">-608141312</int>
<reference key="NSDelegate"/> <reference key="NSDelegate"/>
<reference key="NSDataSource"/> <reference key="NSDataSource"/>
<string key="NSAutosaveName">InspectorTableWebSeeds</string> <string key="NSAutosaveName">InspectorTableWebSeeds</string>
@@ -602,6 +617,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{1, 17}, {332, 48}}</string> <string key="NSFrame">{{1, 17}, {332, 48}}</string>
<reference key="NSSuperview" ref="19947409"/> <reference key="NSSuperview" ref="19947409"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="804988141"/> <reference key="NSNextKeyView" ref="804988141"/>
<reference key="NSDocView" ref="804988141"/> <reference key="NSDocView" ref="804988141"/>
<reference key="NSBGColor" ref="907173649"/> <reference key="NSBGColor" ref="907173649"/>
@@ -612,6 +628,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{328, 17}, {11, 37}}</string> <string key="NSFrame">{{328, 17}, {11, 37}}</string>
<reference key="NSSuperview" ref="19947409"/> <reference key="NSSuperview" ref="19947409"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="981295629"/> <reference key="NSNextKeyView" ref="981295629"/>
<int key="NSsFlags">256</int> <int key="NSsFlags">256</int>
<reference key="NSTarget" ref="19947409"/> <reference key="NSTarget" ref="19947409"/>
@@ -623,6 +640,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 54}, {327, 11}}</string> <string key="NSFrame">{{1, 54}, {327, 11}}</string>
<reference key="NSSuperview" ref="19947409"/> <reference key="NSSuperview" ref="19947409"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="902227095"/> <reference key="NSNextKeyView" ref="902227095"/>
<int key="NSsFlags">257</int> <int key="NSsFlags">257</int>
<reference key="NSTarget" ref="19947409"/> <reference key="NSTarget" ref="19947409"/>
@@ -637,6 +655,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{1, 0}, {332, 17}}</string> <string key="NSFrame">{{1, 0}, {332, 17}}</string>
<reference key="NSSuperview" ref="19947409"/> <reference key="NSSuperview" ref="19947409"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="496895863"/> <reference key="NSNextKeyView" ref="496895863"/>
<reference key="NSDocView" ref="496895863"/> <reference key="NSDocView" ref="496895863"/>
<reference key="NSBGColor" ref="907173649"/> <reference key="NSBGColor" ref="907173649"/>
@@ -645,7 +664,8 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</array> </array>
<string key="NSFrame">{{10, 275}, {334, 66}}</string> <string key="NSFrame">{{10, 275}, {334, 66}}</string>
<reference key="NSSuperview" ref="360777202"/> <reference key="NSSuperview" ref="360777202"/>
<reference key="NSNextKeyView" ref="810248708"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="649295662"/>
<int key="NSsFlags">133682</int> <int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="163772156"/> <reference key="NSVScroller" ref="163772156"/>
<reference key="NSHScroller" ref="981295629"/> <reference key="NSHScroller" ref="981295629"/>
@@ -655,6 +675,8 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</object> </object>
</array> </array>
<string key="NSFrameSize">{354, 346}</string> <string key="NSFrameSize">{354, 346}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="19947409"/> <reference key="NSNextKeyView" ref="19947409"/>
<string key="NSClassName">NSView</string> <string key="NSClassName">NSView</string>
<string key="NSExtension">NSResponder</string> <string key="NSExtension">NSResponder</string>
@@ -678,6 +700,22 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</object> </object>
<int key="connectionID">32</int> <int key="connectionID">32</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fPeerTable</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="298614287"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fWebSeedTable</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="804988141"/>
</object>
<int key="connectionID">38</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBOutletConnection" key="connection">
<string key="label">dataSource</string> <string key="label">dataSource</string>
@@ -710,22 +748,6 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</object> </object>
<int key="connectionID">36</int> <int key="connectionID">36</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fPeerTable</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="298614287"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fWebSeedTable</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="804988141"/>
</object>
<int key="connectionID">38</int>
</object>
</array> </array>
<object class="IBMutableOrderedSet" key="objectRecords"> <object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects"> <array key="orderedObjects">
@@ -979,6 +1001,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<integer value="1" key="20.IBShouldRemoveOnLegacySave"/> <integer value="1" key="20.IBShouldRemoveOnLegacySave"/>
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1" key="21.IBShouldRemoveOnLegacySave"/> <integer value="1" key="21.IBShouldRemoveOnLegacySave"/>
<string key="22.CustomClassName">WebSeedTableView</string>
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1" key="23.IBShouldRemoveOnLegacySave"/> <integer value="1" key="23.IBShouldRemoveOnLegacySave"/>
@@ -1055,6 +1078,14 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
<string key="minorKey">./Classes/PeerTableView.h</string> <string key="minorKey">./Classes/PeerTableView.h</string>
</object> </object>
</object> </object>
<object class="IBPartialClassDescription">
<string key="className">WebSeedTableView</string>
<string key="superclassName">NSTableView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/WebSeedTableView.h</string>
</object>
</object>
</array> </array>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
@@ -1065,7 +1096,7 @@ AAAAAAAAAAAAAAAAAAAAAA</bytes>
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1060" key="NS.object.0"/> <real value="1070" key="NS.object.0"/>
</object> </object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>

View File

@@ -25,6 +25,8 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "InfoViewController.h" #import "InfoViewController.h"
@class WebSeedTableView;
@interface InfoPeersViewController : NSViewController <InfoViewController, NSAnimationDelegate> @interface InfoPeersViewController : NSViewController <InfoViewController, NSAnimationDelegate>
{ {
NSArray * fTorrents; NSArray * fTorrents;
@@ -33,7 +35,8 @@
NSMutableArray * fPeers, * fWebSeeds; NSMutableArray * fPeers, * fWebSeeds;
IBOutlet NSTableView * fPeerTable, * fWebSeedTable; IBOutlet NSTableView * fPeerTable;
IBOutlet WebSeedTableView * fWebSeedTable;
CGFloat fWebSeedTableHeight, fSpaceBetweenWebSeedAndPeer; CGFloat fWebSeedTableHeight, fSpaceBetweenWebSeedAndPeer;
NSViewAnimation * fWebSeedTableAnimation; NSViewAnimation * fWebSeedTableAnimation;

View File

@@ -27,6 +27,7 @@
#import "NSStringAdditions.h" #import "NSStringAdditions.h"
#import "PeerProgressIndicatorCell.h" #import "PeerProgressIndicatorCell.h"
#import "Torrent.h" #import "Torrent.h"
#import "WebSeedTableView.h"
#import "transmission.h" // required by utils.h #import "transmission.h" // required by utils.h
#import "utils.h" #import "utils.h"
@@ -174,6 +175,7 @@
[fWebSeeds sortUsingDescriptors: [fWebSeedTable sortDescriptors]]; [fWebSeeds sortUsingDescriptors: [fWebSeedTable sortDescriptors]];
[fWebSeedTable reloadData]; [fWebSeedTable reloadData];
[fWebSeedTable setWebSeeds: fWebSeeds];
if (anyActive) if (anyActive)
{ {
@@ -335,7 +337,7 @@
- (BOOL) tableView: (NSTableView *) tableView shouldSelectRow: (NSInteger) row - (BOOL) tableView: (NSTableView *) tableView shouldSelectRow: (NSInteger) row
{ {
return NO; return tableView != fPeerTable;
} }
- (NSString *) tableView: (NSTableView *) tableView toolTipForCell: (NSCell *) cell rect: (NSRectPointer) rect - (NSString *) tableView: (NSTableView *) tableView toolTipForCell: (NSCell *) cell rect: (NSRectPointer) rect
@@ -471,7 +473,7 @@
- (void) setupInfo - (void) setupInfo
{ {
BOOL hasWebSeeds = NO; __block BOOL hasWebSeeds = NO;
if ([fTorrents count] == 0) if ([fTorrents count] == 0)
{ {
@@ -483,12 +485,13 @@
} }
else else
{ {
for (Torrent * torrent in fTorrents) [fTorrents enumerateObjectsWithOptions: NSEnumerationConcurrent usingBlock: ^(Torrent * torrent, NSUInteger idx, BOOL *stop) {
if ([torrent webSeedCount] > 0) if ([torrent webSeedCount] > 0)
{ {
hasWebSeeds = YES; hasWebSeeds = YES;
break; *stop = YES;
} }
}];
} }
if (!hasWebSeeds) if (!hasWebSeeds)
@@ -497,6 +500,8 @@
fWebSeeds = nil; fWebSeeds = nil;
[fWebSeedTable reloadData]; [fWebSeedTable reloadData];
} }
else
[fWebSeedTable deselectAll: self];
[self setWebSeedTableHidden: !hasWebSeeds animate: YES]; [self setWebSeedTableHidden: !hasWebSeeds animate: YES];
fSet = YES; fSet = YES;

View File

@@ -26,6 +26,11 @@
@implementation NSMutableArray (NSMutableArrayAdditions) @implementation NSMutableArray (NSMutableArrayAdditions)
/*
Note: This assumes Apple implemented this as an array under the hood.
If the underlying data structure is a linked-list, for example, then this might be less
efficient than simply removing the object and re-adding it.
*/
- (void) moveObjectAtIndex: (NSUInteger) fromIndex toIndex: (NSUInteger) toIndex - (void) moveObjectAtIndex: (NSUInteger) fromIndex toIndex: (NSUInteger) toIndex
{ {
if (fromIndex == toIndex) if (fromIndex == toIndex)

37
macosx/WebSeedTableView.h Normal file
View File

@@ -0,0 +1,37 @@
/******************************************************************************
* $Id$
*
* Copyright (c) 2012 Transmission authors and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@interface WebSeedTableView : NSTableView
{
//weak references
NSArray * fWebSeeds;
}
- (void) setWebSeeds: (NSArray *) webSeeds;
- (void) copy: (id) sender;
@end

65
macosx/WebSeedTableView.m Normal file
View File

@@ -0,0 +1,65 @@
/******************************************************************************
* $Id$
*
* Copyright (c) 2012 Transmission authors and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
#import "WebSeedTableView.h"
@implementation WebSeedTableView
- (void) mouseDown: (NSEvent *) event
{
[[self window] makeKeyWindow];
[super mouseDown: event];
}
- (void) setWebSeeds: (NSArray *) webSeeds
{
fWebSeeds = webSeeds;
}
- (void) copy: (id) sender
{
NSIndexSet * indexes = [self selectedRowIndexes];
NSMutableArray * addresses = [NSMutableArray arrayWithCapacity: [indexes count]];
[fWebSeeds enumerateObjectsAtIndexes: indexes options: 0 usingBlock: ^(NSDictionary * webSeed, NSUInteger idx, BOOL * stop) {
[addresses addObject: [webSeed objectForKey: @"Address"]];
}];
NSString * text = [addresses componentsJoinedByString: @"\n"];
NSPasteboard * pb = [NSPasteboard generalPasteboard];
[pb clearContents];
[pb writeObjects: [NSArray arrayWithObject: text]];
}
- (BOOL) validateMenuItem: (NSMenuItem *) menuItem
{
const SEL action = [menuItem action];
if (action == @selector(copy:))
return [self numberOfSelectedRows] > 0;
return YES;
}
@end