First go at #2560 "inactive seeding time limit". libtransmission and Mac support are currently implemented.
This commit is contained in:
parent
69a9df0270
commit
fd0dd10419
|
@ -107,7 +107,7 @@ static inline double tr_cpPercentDone( const tr_completion * cp )
|
|||
{
|
||||
const double ratio = tr_getRatio( cp->sizeNow, tr_cpSizeWhenDone( cp ) );
|
||||
const int iratio = (int)ratio;
|
||||
return ((iratio == TR_RATIO_NA) || (iratio == TR_RATIO_INF)) ? 0.0f : ratio;
|
||||
return ((iratio == TR_RATIO_NA) || (iratio == TR_RATIO_INF)) ? 0.0 : ratio;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3165,7 +3165,7 @@ bandwidthPulse( int foo UNUSED, short bar UNUSED, void * vmgr )
|
|||
/* possibly stop torrents that have seeded enough */
|
||||
tor = NULL;
|
||||
while(( tor = tr_torrentNext( mgr->session, tor )))
|
||||
tr_torrentCheckSeedRatio( tor );
|
||||
tr_torrentCheckSeedLimit( tor );
|
||||
|
||||
/* run the completeness check for any torrents that need it */
|
||||
tor = NULL;
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#define KEY_SPEEDLIMIT_UP "speed-limit-up"
|
||||
#define KEY_SPEEDLIMIT_DOWN "speed-limit-down"
|
||||
#define KEY_RATIOLIMIT "ratio-limit"
|
||||
#define KEY_INACTIVELIMIT "inactivity-limit"
|
||||
#define KEY_UPLOADED "uploaded"
|
||||
|
||||
#define KEY_SPEED_KiBps "speed"
|
||||
|
@ -56,6 +57,8 @@
|
|||
#define KEY_SPEEDLIMIT_UP_MODE "up-mode"
|
||||
#define KEY_RATIOLIMIT_RATIO "ratio-limit"
|
||||
#define KEY_RATIOLIMIT_MODE "ratio-mode"
|
||||
#define KEY_INACTIVELIMIT_MINS "inactivity-limit"
|
||||
#define KEY_INACTIVELIMIT_MODE "inactivity-mode"
|
||||
|
||||
#define KEY_PROGRESS_MTIMES "mtimes"
|
||||
#define KEY_PROGRESS_BITFIELD "bitfield"
|
||||
|
@ -290,6 +293,14 @@ saveRatioLimits( tr_benc * dict, const tr_torrent * tor )
|
|||
tr_bencDictAddInt( d, KEY_RATIOLIMIT_MODE, tr_torrentGetRatioMode( tor ) );
|
||||
}
|
||||
|
||||
static void
|
||||
saveInactivityLimits( tr_benc * dict, const tr_torrent * tor )
|
||||
{
|
||||
tr_benc * d = tr_bencDictAddDict( dict, KEY_INACTIVELIMIT, 2 );
|
||||
tr_bencDictAddInt( d, KEY_INACTIVELIMIT_MINS, tr_torrentGetInactiveLimit( tor ) );
|
||||
tr_bencDictAddInt( d, KEY_INACTIVELIMIT_MODE, tr_torrentGetInactiveMode( tor ) );
|
||||
}
|
||||
|
||||
static void
|
||||
loadSingleSpeedLimit( tr_benc * d, tr_direction dir, tr_torrent * tor )
|
||||
{
|
||||
|
@ -374,6 +385,27 @@ loadRatioLimits( tr_benc * dict,
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
loadInactivityLimits( tr_benc * dict,
|
||||
tr_torrent * tor )
|
||||
{
|
||||
uint64_t ret = 0;
|
||||
tr_benc * d;
|
||||
|
||||
if( tr_bencDictFindDict( dict, KEY_INACTIVELIMIT, &d ) )
|
||||
{
|
||||
int64_t i;
|
||||
int64_t imin;
|
||||
if( tr_bencDictFindInt( d, KEY_INACTIVELIMIT_MINS, &imin ) )
|
||||
tr_torrentSetInactiveLimit( tor, imin );
|
||||
if( tr_bencDictFindInt( d, KEY_INACTIVELIMIT_MODE, &i ) )
|
||||
tr_torrentSetInactiveMode( tor, i );
|
||||
ret = TR_FR_INACTIVELIMIT;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
@ -538,6 +570,7 @@ tr_torrentSaveResume( tr_torrent * tor )
|
|||
}
|
||||
saveSpeedLimits( &top, tor );
|
||||
saveRatioLimits( &top, tor );
|
||||
saveInactivityLimits( &top, tor );
|
||||
|
||||
filename = getResumeFilename( tor );
|
||||
if(( err = tr_bencToFile( &top, TR_FMT_BENC, filename )))
|
||||
|
@ -673,6 +706,9 @@ loadFromFile( tr_torrent * tor,
|
|||
if( fieldsToLoad & TR_FR_RATIOLIMIT )
|
||||
fieldsLoaded |= loadRatioLimits( &top, tor );
|
||||
|
||||
if( fieldsToLoad & TR_FR_INACTIVELIMIT )
|
||||
fieldsLoaded |= loadInactivityLimits( &top, tor );
|
||||
|
||||
/* loading the resume file triggers of a lot of changes,
|
||||
* but none of them needs to trigger a re-saving of the
|
||||
* same resume information... */
|
||||
|
|
|
@ -35,7 +35,8 @@ enum
|
|||
TR_FR_ADDED_DATE = ( 1 << 13 ),
|
||||
TR_FR_DONE_DATE = ( 1 << 14 ),
|
||||
TR_FR_ACTIVITY_DATE = ( 1 << 15 ),
|
||||
TR_FR_RATIOLIMIT = ( 1 << 16 )
|
||||
TR_FR_RATIOLIMIT = ( 1 << 16 ),
|
||||
TR_FR_INACTIVELIMIT = ( 1 << 17 )
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -574,6 +574,10 @@ addField( const tr_torrent * tor, tr_benc * d, const char * key )
|
|||
tr_bencDictAddReal( d, key, st->pieceUploadSpeed_KBps );
|
||||
else if( tr_streq( key, keylen, "recheckProgress" ) )
|
||||
tr_bencDictAddReal( d, key, st->recheckProgress );
|
||||
else if( tr_streq( key, keylen, "seedInactiveLimit" ) )
|
||||
tr_bencDictAddInt( d, key, tr_torrentGetInactiveLimit( tor ) );
|
||||
else if( tr_streq( key, keylen, "seedInactiveMode" ) )
|
||||
tr_bencDictAddInt( d, key, tr_torrentGetInactiveMode( tor ) );
|
||||
else if( tr_streq( key, keylen, "seedRatioLimit" ) )
|
||||
tr_bencDictAddReal( d, key, tr_torrentGetRatioLimit( tor ) );
|
||||
else if( tr_streq( key, keylen, "seedRatioMode" ) )
|
||||
|
@ -1013,6 +1017,10 @@ torrentSet( tr_session * session,
|
|||
tr_torrentSetSpeedLimit_KBps( tor, TR_UP, tmp );
|
||||
if( tr_bencDictFindBool( args_in, "uploadLimited", &boolVal ) )
|
||||
tr_torrentUseSpeedLimit( tor, TR_UP, boolVal );
|
||||
if( tr_bencDictFindInt( args_in, "seedInactiveLimit", &tmp ) )
|
||||
tr_torrentSetInactiveLimit( tor, tmp );
|
||||
if( tr_bencDictFindInt( args_in, "seedInactiveMode", &tmp ) )
|
||||
tr_torrentSetInactiveMode( tor, tmp );
|
||||
if( tr_bencDictFindReal( args_in, "seedRatioLimit", &d ) )
|
||||
tr_torrentSetRatioLimit( tor, d );
|
||||
if( tr_bencDictFindInt( args_in, "seedRatioMode", &tmp ) )
|
||||
|
@ -1453,6 +1461,10 @@ sessionSet( tr_session * session,
|
|||
tr_sessionSetRatioLimit( session, d );
|
||||
if( tr_bencDictFindBool( args_in, "seedRatioLimited", &boolVal ) )
|
||||
tr_sessionSetRatioLimited( session, boolVal );
|
||||
if( tr_bencDictFindInt( args_in, TR_PREFS_KEY_INACTIVE_LIMIT, &i ) )
|
||||
tr_sessionSetInactiveLimit( session, i );
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, &boolVal ) )
|
||||
tr_sessionSetInactivityLimited( session, boolVal );
|
||||
if( tr_bencDictFindBool( args_in, TR_PREFS_KEY_START, &boolVal ) )
|
||||
tr_sessionSetPaused( session, !boolVal );
|
||||
if( tr_bencDictFindStr( args_in, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_FILENAME, &str ) )
|
||||
|
@ -1567,6 +1579,8 @@ sessionGet( tr_session * s,
|
|||
tr_bencDictAddInt ( d, "rpc-version-minimum", RPC_VERSION_MIN );
|
||||
tr_bencDictAddReal( d, "seedRatioLimit", tr_sessionGetRatioLimit( s ) );
|
||||
tr_bencDictAddBool( d, "seedRatioLimited", tr_sessionIsRatioLimited( s ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_INACTIVE_LIMIT, tr_sessionGetInactiveLimit( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, tr_sessionIsInactivityLimited( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_START, !tr_sessionGetPaused( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_TRASH_ORIGINAL, tr_sessionGetDeleteSource( s ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_USPEED_KBps, tr_sessionGetSpeedLimit_KBps( s, TR_UP ) );
|
||||
|
|
|
@ -255,6 +255,8 @@ tr_sessionGetDefaultSettings( const char * configDir UNUSED, tr_benc * d )
|
|||
tr_bencDictAddInt ( d, TR_PREFS_KEY_DSPEED_KBps, 100 );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_DSPEED_ENABLED, FALSE );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_ENCRYPTION, TR_DEFAULT_ENCRYPTION );
|
||||
tr_bencDictAddReal( d, TR_PREFS_KEY_INACTIVE_LIMIT, 30 );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, FALSE );
|
||||
tr_bencDictAddStr ( d, TR_PREFS_KEY_INCOMPLETE_DIR, tr_getDefaultDownloadDir( ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_INCOMPLETE_DIR_ENABLED, FALSE );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_LAZY_BITFIELD, TRUE );
|
||||
|
@ -321,6 +323,8 @@ tr_sessionGetSettings( tr_session * s, struct tr_benc * d )
|
|||
tr_bencDictAddInt ( d, TR_PREFS_KEY_DSPEED_KBps, tr_sessionGetSpeedLimit_KBps( s, TR_DOWN ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_DSPEED_ENABLED, tr_sessionIsSpeedLimited( s, TR_DOWN ) );
|
||||
tr_bencDictAddInt ( d, TR_PREFS_KEY_ENCRYPTION, s->encryptionMode );
|
||||
tr_bencDictAddInt( d, TR_PREFS_KEY_INACTIVE_LIMIT, s->inactiveLimitMinutes );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, s->isInactivityLimited );
|
||||
tr_bencDictAddStr ( d, TR_PREFS_KEY_INCOMPLETE_DIR, tr_sessionGetIncompleteDir( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_INCOMPLETE_DIR_ENABLED, tr_sessionIsIncompleteDirEnabled( s ) );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_LAZY_BITFIELD, s->useLazyBitfield );
|
||||
|
@ -797,6 +801,11 @@ sessionSetImpl( void * vdata )
|
|||
if( tr_bencDictFindBool( settings, TR_PREFS_KEY_RATIO_ENABLED, &boolVal ) )
|
||||
tr_sessionSetRatioLimited( session, boolVal );
|
||||
|
||||
if( tr_bencDictFindInt( settings, TR_PREFS_KEY_INACTIVE_LIMIT, &i ) )
|
||||
tr_sessionSetInactiveLimit( session, i );
|
||||
if( tr_bencDictFindBool( settings, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, &boolVal ) )
|
||||
tr_sessionSetInactivityLimited( session, boolVal );
|
||||
|
||||
/**
|
||||
*** Turtle Mode
|
||||
**/
|
||||
|
@ -1094,6 +1103,42 @@ tr_sessionGetRatioLimit( const tr_session * session )
|
|||
return session->desiredRatio;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
void
|
||||
tr_sessionSetInactivityLimited( tr_session * session, tr_bool isLimited )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->isInactivityLimited = isLimited;
|
||||
}
|
||||
|
||||
void
|
||||
tr_sessionSetInactiveLimit( tr_session * session, uint64_t inactivityMinutes )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
session->inactiveLimitMinutes = inactivityMinutes;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_sessionIsInactivityLimited( const tr_session * session )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
return session->isInactivityLimited;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
tr_sessionGetInactiveLimit( const tr_session * session )
|
||||
{
|
||||
assert( tr_isSession( session ) );
|
||||
|
||||
return session->inactiveLimitMinutes;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
**** SPEED LIMITS
|
||||
|
|
|
@ -95,6 +95,7 @@ struct tr_session
|
|||
tr_bool useLazyBitfield;
|
||||
tr_bool isIncompleteFileNamingEnabled;
|
||||
tr_bool isRatioLimited;
|
||||
tr_bool isInactivityLimited;
|
||||
tr_bool isIncompleteDirEnabled;
|
||||
tr_bool pauseAddedTorrent;
|
||||
tr_bool deleteSourceTorrent;
|
||||
|
@ -184,6 +185,8 @@ struct tr_session
|
|||
struct tr_bandwidth * bandwidth;
|
||||
|
||||
double desiredRatio;
|
||||
|
||||
uint64_t inactiveLimitMinutes;
|
||||
|
||||
struct tr_bindinfo * public_ipv4;
|
||||
struct tr_bindinfo * public_ipv6;
|
||||
|
|
|
@ -124,6 +124,25 @@ tr_torrentFindFromObfuscatedHash( tr_session * session,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_torrentIsPieceTransferAllowed( const tr_torrent * tor,
|
||||
tr_direction direction )
|
||||
{
|
||||
int limit;
|
||||
tr_bool allowed = TRUE;
|
||||
|
||||
if( tr_torrentUsesSpeedLimit( tor, direction ) )
|
||||
if( tr_torrentGetSpeedLimit_Bps( tor, direction ) <= 0 )
|
||||
allowed = FALSE;
|
||||
|
||||
if( tr_torrentUsesSessionLimits( tor ) )
|
||||
if( tr_sessionGetActiveSpeedLimit_Bps( tor->session, direction, &limit ) )
|
||||
if( limit <= 0 )
|
||||
allowed = FALSE;
|
||||
|
||||
return allowed;
|
||||
}
|
||||
|
||||
/***
|
||||
**** PER-TORRENT UL / DL SPEEDS
|
||||
***/
|
||||
|
@ -246,25 +265,6 @@ tr_torrentGetRatioLimit( const tr_torrent * tor )
|
|||
return tor->desiredRatio;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_torrentIsPieceTransferAllowed( const tr_torrent * tor,
|
||||
tr_direction direction )
|
||||
{
|
||||
int limit;
|
||||
tr_bool allowed = TRUE;
|
||||
|
||||
if( tr_torrentUsesSpeedLimit( tor, direction ) )
|
||||
if( tr_torrentGetSpeedLimit_Bps( tor, direction ) <= 0 )
|
||||
allowed = FALSE;
|
||||
|
||||
if( tr_torrentUsesSessionLimits( tor ) )
|
||||
if( tr_sessionGetActiveSpeedLimit_Bps( tor->session, direction, &limit ) )
|
||||
if( limit <= 0 )
|
||||
allowed = FALSE;
|
||||
|
||||
return allowed;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_torrentGetSeedRatio( const tr_torrent * tor, double * ratio )
|
||||
{
|
||||
|
@ -323,13 +323,103 @@ tr_torrentIsSeedRatioDone( tr_torrent * tor )
|
|||
return tr_torrentGetSeedRatioBytes( tor, &bytesLeft, NULL ) && !bytesLeft;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
void
|
||||
tr_torrentCheckSeedRatio( tr_torrent * tor )
|
||||
tr_torrentSetInactiveMode( tr_torrent * tor, tr_inactvelimit mode )
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
assert( mode==TR_INACTIVELIMIT_GLOBAL || mode==TR_INACTIVELIMIT_SINGLE || mode==TR_INACTIVELIMIT_UNLIMITED );
|
||||
|
||||
if( mode != tor->inactiveLimitMode )
|
||||
{
|
||||
tor->inactiveLimitMode = mode;
|
||||
|
||||
tr_torrentSetDirty( tor );
|
||||
}
|
||||
}
|
||||
|
||||
tr_ratiolimit
|
||||
tr_torrentGetInactiveMode( const tr_torrent * tor )
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
|
||||
return tor->inactiveLimitMode;
|
||||
}
|
||||
|
||||
void
|
||||
tr_torrentSetInactiveLimit( tr_torrent * tor, uint64_t inactiveMinutes)
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
|
||||
if( inactiveMinutes > 0 )
|
||||
{
|
||||
tor->inactiveLimitMinutes = inactiveMinutes;
|
||||
|
||||
tr_torrentSetDirty( tor );
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t
|
||||
tr_torrentGetInactiveLimit( const tr_torrent * tor )
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
|
||||
return tor->inactiveLimitMinutes;
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_torrentGetSeedInactive( const tr_torrent * tor, uint64_t * inactiveMinutes )
|
||||
{
|
||||
tr_bool isLimited;
|
||||
|
||||
switch( tr_torrentGetInactiveMode( tor ) )
|
||||
{
|
||||
case TR_INACTIVELIMIT_SINGLE:
|
||||
isLimited = TRUE;
|
||||
if( inactiveMinutes )
|
||||
*inactiveMinutes = tr_torrentGetInactiveLimit( tor );
|
||||
break;
|
||||
|
||||
case TR_INACTIVELIMIT_GLOBAL:
|
||||
isLimited = tr_sessionIsInactivityLimited( tor->session );
|
||||
if( isLimited && inactiveMinutes )
|
||||
*inactiveMinutes = tr_sessionGetInactiveLimit( tor->session );
|
||||
break;
|
||||
|
||||
default: /* TR_INACTIVELIMIT_UNLIMITED */
|
||||
isLimited = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return isLimited;
|
||||
}
|
||||
|
||||
static tr_bool
|
||||
tr_torrentIsSeedInactiveLimitDone( tr_torrent * tor )
|
||||
{
|
||||
uint64_t inactiveMinutes;
|
||||
#warning can this use the idleSecs from tr_stat?
|
||||
return tr_torrentGetSeedInactive( tor, &inactiveMinutes )
|
||||
&& difftime(tr_time(), MAX(tor->startDate, tor->activityDate)) >= inactiveMinutes * 60;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
void
|
||||
tr_torrentCheckSeedLimit( tr_torrent * tor )
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
|
||||
if( !tor->isRunning )
|
||||
return;
|
||||
|
||||
/* if we're seeding and reach our seed ratio limit, stop the torrent */
|
||||
if( tor->isRunning && tr_torrentIsSeedRatioDone( tor ) )
|
||||
if( tr_torrentIsSeedRatioDone( tor ) )
|
||||
{
|
||||
tr_torinf( tor, "Seed ratio reached; pausing torrent" );
|
||||
|
||||
|
@ -339,8 +429,18 @@ tr_torrentCheckSeedRatio( tr_torrent * tor )
|
|||
if( tor->ratio_limit_hit_func != NULL )
|
||||
tor->ratio_limit_hit_func( tor, tor->ratio_limit_hit_func_user_data );
|
||||
}
|
||||
}
|
||||
/* if we're seeding and reach our inactiviy limit, stop the torrent */
|
||||
else if( tr_torrentIsSeedInactiveLimitDone( tor ) )
|
||||
{
|
||||
tr_torinf( tor, "Seeding inactivity limit reached; pausing torrent" );
|
||||
|
||||
tor->isStopping = TRUE;
|
||||
|
||||
/* maybe notify the client */
|
||||
if( tor->inactive_limit_hit_func != NULL )
|
||||
tor->inactive_limit_hit_func( tor, tor->inactive_limit_hit_func_user_data );
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
|
@ -708,6 +808,12 @@ torrentInit( tr_torrent * tor, const tr_ctor * ctor )
|
|||
tr_torrentSetRatioLimit( tor, tr_sessionGetRatioLimit( tor->session ) );
|
||||
}
|
||||
|
||||
if( !( loaded & TR_FR_INACTIVELIMIT ) )
|
||||
{
|
||||
tr_torrentSetInactiveMode( tor, TR_INACTIVELIMIT_GLOBAL );
|
||||
tr_torrentSetInactiveLimit( tor, tr_sessionGetInactiveLimit( tor->session ) );
|
||||
}
|
||||
|
||||
{
|
||||
tr_torrent * it = NULL;
|
||||
tr_torrent * last = NULL;
|
||||
|
@ -1002,7 +1108,7 @@ tr_torrentStat( tr_torrent * tor )
|
|||
s->startDate = tor->startDate;
|
||||
|
||||
if (s->activity == TR_STATUS_DOWNLOAD || s->activity == TR_STATUS_SEED)
|
||||
s->idleSecs = difftime(tr_time(), tor->anyDate);
|
||||
s->idleSecs = difftime(tr_time(), MAX(s->startDate, s->activityDate));
|
||||
else
|
||||
s->idleSecs = -1;
|
||||
|
||||
|
@ -1035,6 +1141,7 @@ tr_torrentStat( tr_torrent * tor )
|
|||
s->ratio = tr_getRatio( s->uploadedEver,
|
||||
s->downloadedEver ? s->downloadedEver : s->haveValid );
|
||||
|
||||
#warning account for inactivity limit?
|
||||
seedRatioApplies = tr_torrentGetSeedRatioBytes( tor, &seedRatioBytesLeft,
|
||||
&seedRatioBytesGoal );
|
||||
|
||||
|
@ -1062,6 +1169,7 @@ tr_torrentStat( tr_torrent * tor )
|
|||
break;
|
||||
|
||||
case TR_STATUS_SEED: {
|
||||
#warning do something for inactivity?
|
||||
if( !seedRatioApplies )
|
||||
s->eta = TR_ETA_NOT_AVAIL;
|
||||
else {
|
||||
|
@ -1084,6 +1192,7 @@ tr_torrentStat( tr_torrent * tor )
|
|||
break;
|
||||
}
|
||||
|
||||
#warning (maybe) do something for inactivity?
|
||||
/* s->haveValid is here to make sure a torrent isn't marked 'finished'
|
||||
* when the user hits "uncheck all" prior to starting the torrent... */
|
||||
s->finished = seedRatioApplies && !seedRatioBytesLeft && s->haveValid;
|
||||
|
@ -1673,6 +1782,23 @@ tr_torrentClearRatioLimitHitCallback( tr_torrent * torrent )
|
|||
tr_torrentSetRatioLimitHitCallback( torrent, NULL, NULL );
|
||||
}
|
||||
|
||||
void
|
||||
tr_torrentSetInactiveLimitHitCallback( tr_torrent * tor,
|
||||
tr_torrent_inactive_limit_hit_func func,
|
||||
void * user_data )
|
||||
{
|
||||
assert( tr_isTorrent( tor ) );
|
||||
|
||||
tor->inactive_limit_hit_func = func;
|
||||
tor->inactive_limit_hit_func_user_data = user_data;
|
||||
}
|
||||
|
||||
void
|
||||
tr_torrentClearInactivityLimitHitCallback( tr_torrent * torrent )
|
||||
{
|
||||
tr_torrentSetInactiveLimitHitCallback( torrent, NULL, NULL );
|
||||
}
|
||||
|
||||
static void
|
||||
tr_setenv( const char * name, const char * value, tr_bool override )
|
||||
{
|
||||
|
|
|
@ -107,7 +107,7 @@ time_t* tr_torrentGetMTimes( const tr_torrent * tor,
|
|||
tr_torrent* tr_torrentNext( tr_session * session,
|
||||
tr_torrent * current );
|
||||
|
||||
void tr_torrentCheckSeedRatio( tr_torrent * tor );
|
||||
void tr_torrentCheckSeedLimit( tr_torrent * tor );
|
||||
|
||||
/** save a torrent's .resume file if it's changed since the last time it was saved */
|
||||
void tr_torrentSave( tr_torrent * tor );
|
||||
|
@ -229,6 +229,9 @@ struct tr_torrent
|
|||
tr_torrent_ratio_limit_hit_func * ratio_limit_hit_func;
|
||||
void * ratio_limit_hit_func_user_data;
|
||||
|
||||
tr_torrent_inactive_limit_hit_func * inactive_limit_hit_func;
|
||||
void * inactive_limit_hit_func_user_data;
|
||||
|
||||
tr_bool isRunning;
|
||||
tr_bool isStopping;
|
||||
tr_bool isDeleting;
|
||||
|
@ -255,6 +258,9 @@ struct tr_torrent
|
|||
double desiredRatio;
|
||||
tr_ratiolimit ratioLimitMode;
|
||||
|
||||
uint64_t inactiveLimitMinutes;
|
||||
tr_inactvelimit inactiveLimitMode;
|
||||
|
||||
uint64_t preVerifyTotal;
|
||||
};
|
||||
|
||||
|
|
|
@ -170,6 +170,8 @@ const char* tr_getDefaultDownloadDir( void );
|
|||
#define TR_PREFS_KEY_LPD_ENABLED "lpd-enabled"
|
||||
#define TR_PREFS_KEY_DOWNLOAD_DIR "download-dir"
|
||||
#define TR_PREFS_KEY_ENCRYPTION "encryption"
|
||||
#define TR_PREFS_KEY_INACTIVE_LIMIT "inactive-limit"
|
||||
#define TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED "inactive-limit-enabled"
|
||||
#define TR_PREFS_KEY_INCOMPLETE_DIR "incomplete-dir"
|
||||
#define TR_PREFS_KEY_INCOMPLETE_DIR_ENABLED "incomplete-dir-enabled"
|
||||
#define TR_PREFS_KEY_LAZY_BITFIELD "lazy-bitfield-enabled"
|
||||
|
@ -723,6 +725,12 @@ tr_bool tr_sessionIsRatioLimited ( const tr_session * );
|
|||
void tr_sessionSetRatioLimit ( tr_session *, double desiredRatio );
|
||||
double tr_sessionGetRatioLimit ( const tr_session * );
|
||||
|
||||
void tr_sessionSetInactivityLimited ( tr_session *, tr_bool isLimited );
|
||||
tr_bool tr_sessionIsInactivityLimited ( const tr_session * );
|
||||
|
||||
void tr_sessionSetInactiveLimit ( tr_session *, uint64_t inactivityMinutes );
|
||||
uint64_t tr_sessionGetInactiveLimit ( const tr_session * );
|
||||
|
||||
void tr_sessionSetPeerLimit( tr_session *, uint16_t maxGlobalPeers );
|
||||
uint16_t tr_sessionGetPeerLimit( const tr_session * );
|
||||
|
||||
|
@ -1159,6 +1167,32 @@ double tr_torrentGetRatioLimit( const tr_torrent * tor );
|
|||
|
||||
tr_bool tr_torrentGetSeedRatio( const tr_torrent *, double * ratio );
|
||||
|
||||
|
||||
/****
|
||||
***** Inactive Time Limits
|
||||
****/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TR_INACTIVELIMIT_GLOBAL = 0, /* follow the global settings */
|
||||
TR_INACTIVELIMIT_SINGLE = 1, /* override the global settings, seeding until a certain inactive time */
|
||||
TR_INACTIVELIMIT_UNLIMITED = 2 /* override the global settings, seeding regardless of activity */
|
||||
}
|
||||
tr_inactvelimit;
|
||||
|
||||
void tr_torrentSetInactiveMode( tr_torrent * tor,
|
||||
tr_inactvelimit mode );
|
||||
|
||||
tr_ratiolimit tr_torrentGetInactiveMode( const tr_torrent * tor );
|
||||
|
||||
void tr_torrentSetInactiveLimit( tr_torrent * tor,
|
||||
uint64_t inactiveMinutes );
|
||||
|
||||
uint64_t tr_torrentGetInactiveLimit( const tr_torrent * tor );
|
||||
|
||||
|
||||
tr_bool tr_torrentGetSeedInactive( const tr_torrent *, uint64_t * inactiveMinutes );
|
||||
|
||||
/****
|
||||
***** Peer Limits
|
||||
****/
|
||||
|
@ -1288,6 +1322,10 @@ typedef void ( tr_torrent_completeness_func )( tr_torrent * torrent,
|
|||
typedef void ( tr_torrent_ratio_limit_hit_func )( tr_torrent * torrent,
|
||||
void * user_data );
|
||||
|
||||
typedef void ( tr_torrent_inactive_limit_hit_func )( tr_torrent * torrent,
|
||||
void * user_data );
|
||||
|
||||
|
||||
/**
|
||||
* Register to be notified whenever a torrent's "completeness"
|
||||
* changes. This will be called, for example, when a torrent
|
||||
|
@ -1337,6 +1375,20 @@ void tr_torrentSetRatioLimitHitCallback(
|
|||
|
||||
void tr_torrentClearRatioLimitHitCallback( tr_torrent * torrent );
|
||||
|
||||
/**
|
||||
* Register to be notified whenever a torrent's inactivity limit
|
||||
* has been hit. This will be called when the seeding torrent's
|
||||
* idle time has met or exceeded the designated inactivity limit.
|
||||
*
|
||||
* Has the same restrictions as tr_torrentSetCompletenessCallback
|
||||
*/
|
||||
void tr_torrentSetInactivityLimitHitCallback(
|
||||
tr_torrent * torrent,
|
||||
tr_torrent_inactive_limit_hit_func func,
|
||||
void * user_data );
|
||||
|
||||
void tr_torrentClearInactiveLimitHitCallback( tr_torrent * torrent );
|
||||
|
||||
|
||||
/**
|
||||
* MANUAL ANNOUNCE
|
||||
|
@ -1846,7 +1898,7 @@ typedef struct tr_stat
|
|||
/** Number of seconds since the last activity (or since started).
|
||||
-1 if activity is not seeding or downloading. */
|
||||
int idleSecs;
|
||||
|
||||
|
||||
/** A torrent is considered finished if it has met its seed ratio.
|
||||
As a result, only paused torrents can be finished. */
|
||||
tr_bool finished;
|
||||
|
|
|
@ -283,8 +283,6 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
|||
[fDefaults objectForKey: @"SpeedLimitAutoOffDate"]]);
|
||||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_ALT_SPEED_TIME_DAY, [fDefaults integerForKey: @"SpeedLimitAutoDay"]);
|
||||
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_START, [fDefaults boolForKey: @"AutoStartDownload"]);
|
||||
|
||||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_DSPEED_KBps, [fDefaults integerForKey: @"DownloadLimit"]);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_DSPEED_ENABLED, [fDefaults boolForKey: @"CheckDownload"]);
|
||||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_USPEED_KBps, [fDefaults integerForKey: @"UploadLimit"]);
|
||||
|
@ -300,6 +298,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
|||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_DHT_ENABLED, [fDefaults boolForKey: @"DHTGlobal"]);
|
||||
tr_bencDictAddStr(&settings, TR_PREFS_KEY_DOWNLOAD_DIR, [[[fDefaults stringForKey: @"DownloadFolder"]
|
||||
stringByExpandingTildeInPath] UTF8String]);
|
||||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_INACTIVE_LIMIT, [fDefaults integerForKey: @"InactiveLimitMinutes"]);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_INACTIVE_LIMIT_ENABLED, [fDefaults boolForKey: @"InactiveLimitCheck"]);
|
||||
tr_bencDictAddStr(&settings, TR_PREFS_KEY_INCOMPLETE_DIR, [[[fDefaults stringForKey: @"IncompleteDownloadFolder"]
|
||||
stringByExpandingTildeInPath] UTF8String]);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_INCOMPLETE_DIR_ENABLED, [fDefaults boolForKey: @"UseIncompleteDownloadFolder"]);
|
||||
|
@ -332,6 +332,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
|||
tr_bencDictAddInt(&settings, TR_PREFS_KEY_RPC_PORT, [fDefaults integerForKey: @"RPCPort"]);
|
||||
tr_bencDictAddStr(&settings, TR_PREFS_KEY_RPC_USERNAME, [[fDefaults stringForKey: @"RPCUsername"] UTF8String]);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_RPC_WHITELIST_ENABLED, [fDefaults boolForKey: @"RPCUseWhitelist"]);
|
||||
tr_bencDictAddBool(&settings, TR_PREFS_KEY_START, [fDefaults boolForKey: @"AutoStartDownload"]);
|
||||
|
||||
tr_formatter_size_init(1024, [NSLocalizedString(@"KB", "File size - kilobytes") UTF8String],
|
||||
[NSLocalizedString(@"MB", "File size - megabytes") UTF8String],
|
||||
|
|
|
@ -76,6 +76,10 @@
|
|||
<integer>-2</integer>
|
||||
<key>FilterSearchType</key>
|
||||
<string>Name</string>
|
||||
<key>InactiveLimitCheck</key>
|
||||
<false/>
|
||||
<key>InactiveLimitMinutes</key>
|
||||
<integer>30</integer>
|
||||
<key>IncompleteDownloadFolder</key>
|
||||
<string>~/Downloads</string>
|
||||
<key>InfoVisible</key>
|
||||
|
|
|
@ -31,11 +31,10 @@
|
|||
|
||||
BOOL fSet;
|
||||
|
||||
IBOutlet NSPopUpButton * fPriorityPopUp, * fRatioPopUp;
|
||||
IBOutlet NSPopUpButton * fPriorityPopUp, * fRatioPopUp, * fInactivePopUp;
|
||||
IBOutlet NSButton * fUploadLimitCheck, * fDownloadLimitCheck, * fGlobalLimitCheck;
|
||||
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField,
|
||||
* fUploadLimitLabel, * fDownloadLimitLabel, * fPeersConnectLabel,
|
||||
* fPeersConnectField;
|
||||
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField, * fInactiveLimitField,
|
||||
* fUploadLimitLabel, * fDownloadLimitLabel, * fInactiveLimitLabel, * fPeersConnectLabel, * fPeersConnectField;
|
||||
|
||||
NSString * fInitialString;
|
||||
}
|
||||
|
@ -51,6 +50,9 @@
|
|||
- (void) setRatioSetting: (id) sender;
|
||||
- (void) setRatioLimit: (id) sender;
|
||||
|
||||
- (void) setInactiveSetting: (id) sender;
|
||||
- (void) setInactiveLimit: (id) sender;
|
||||
|
||||
- (void) setPriority: (id) sender;
|
||||
|
||||
- (void) setPeersConnectLimit: (id) sender;
|
||||
|
|
|
@ -139,20 +139,28 @@
|
|||
[fGlobalLimitCheck setState: globalUseSpeedLimit];
|
||||
[fGlobalLimitCheck setEnabled: YES];
|
||||
|
||||
//get ratio info
|
||||
//get ratio and inactive info
|
||||
enumerator = [fTorrents objectEnumerator];
|
||||
torrent = [enumerator nextObject]; //first torrent
|
||||
|
||||
NSInteger checkRatio = [torrent ratioSetting];
|
||||
NSInteger checkRatio = [torrent ratioSetting], checkInactive = [torrent inactiveSetting];
|
||||
CGFloat ratioLimit = [torrent ratioLimit];
|
||||
NSUInteger inactiveLimit = [torrent inactiveLimitMinutes];
|
||||
|
||||
while ((torrent = [enumerator nextObject]) && (checkRatio != INVALID || ratioLimit != INVALID))
|
||||
while ((torrent = [enumerator nextObject])
|
||||
&& (checkRatio != INVALID || ratioLimit != INVALID || checkInactive != INVALID || inactiveLimit != INVALID))
|
||||
{
|
||||
if (checkRatio != INVALID && checkRatio != [torrent ratioSetting])
|
||||
checkRatio = INVALID;
|
||||
|
||||
if (ratioLimit != INVALID && ratioLimit != [torrent ratioLimit])
|
||||
ratioLimit = INVALID;
|
||||
|
||||
if (checkInactive != INVALID && checkInactive != [torrent inactiveSetting])
|
||||
checkInactive = INVALID;
|
||||
|
||||
if (inactiveLimit != INVALID && inactiveLimit != [torrent inactiveLimitMinutes])
|
||||
inactiveLimit = INVALID;
|
||||
}
|
||||
|
||||
//set ratio view
|
||||
|
@ -174,6 +182,25 @@
|
|||
else
|
||||
[fRatioLimitField setStringValue: @""];
|
||||
|
||||
//set inactive view
|
||||
if (checkInactive == TR_INACTIVELIMIT_SINGLE)
|
||||
index = OPTION_POPUP_LIMIT;
|
||||
else if (checkInactive == TR_INACTIVELIMIT_UNLIMITED)
|
||||
index = OPTION_POPUP_NO_LIMIT;
|
||||
else if (checkInactive == TR_INACTIVELIMIT_GLOBAL)
|
||||
index = OPTION_POPUP_GLOBAL;
|
||||
else
|
||||
index = -1;
|
||||
[fInactivePopUp selectItemAtIndex: index];
|
||||
[fInactivePopUp setEnabled: YES];
|
||||
|
||||
[fInactiveLimitField setHidden: checkInactive != TR_INACTIVELIMIT_SINGLE];
|
||||
if (inactiveLimit != INVALID)
|
||||
[fInactiveLimitField setIntegerValue: inactiveLimit];
|
||||
else
|
||||
[fInactiveLimitField setStringValue: @""];
|
||||
[fInactiveLimitLabel setHidden: checkInactive != TR_INACTIVELIMIT_SINGLE];
|
||||
|
||||
//get priority info
|
||||
enumerator = [fTorrents objectEnumerator];
|
||||
torrent = [enumerator nextObject]; //first torrent
|
||||
|
@ -298,12 +325,53 @@
|
|||
|
||||
- (void) setRatioLimit: (id) sender
|
||||
{
|
||||
CGFloat limit = [sender floatValue];
|
||||
const CGFloat limit = [sender floatValue];
|
||||
|
||||
for (Torrent * torrent in fTorrents)
|
||||
[torrent setRatioLimit: limit];
|
||||
}
|
||||
|
||||
- (void) setInactiveSetting: (id) sender
|
||||
{
|
||||
NSInteger setting;
|
||||
bool single = NO;
|
||||
switch ([sender indexOfSelectedItem])
|
||||
{
|
||||
case OPTION_POPUP_LIMIT:
|
||||
setting = TR_INACTIVELIMIT_SINGLE;
|
||||
single = YES;
|
||||
break;
|
||||
case OPTION_POPUP_NO_LIMIT:
|
||||
setting = TR_INACTIVELIMIT_UNLIMITED;
|
||||
break;
|
||||
case OPTION_POPUP_GLOBAL:
|
||||
setting = TR_INACTIVELIMIT_GLOBAL;
|
||||
break;
|
||||
default:
|
||||
NSAssert1(NO, @"Unknown option selected in inactive popup: %d", [sender indexOfSelectedItem]);
|
||||
return;
|
||||
}
|
||||
|
||||
for (Torrent * torrent in fTorrents)
|
||||
[torrent setInactiveSetting: setting];
|
||||
|
||||
[fInactiveLimitField setHidden: !single];
|
||||
[fInactiveLimitLabel setHidden: !single];
|
||||
if (single)
|
||||
{
|
||||
[fInactiveLimitField selectText: self];
|
||||
[[[self view] window] makeKeyAndOrderFront: self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setInactiveLimit: (id) sender
|
||||
{
|
||||
const NSUInteger limit = [sender integerValue];
|
||||
|
||||
for (Torrent * torrent in fTorrents)
|
||||
[torrent setInactiveLimitMinutes: limit];
|
||||
}
|
||||
|
||||
- (void) setPriority: (id) sender
|
||||
{
|
||||
tr_priority_t priority;
|
||||
|
@ -388,6 +456,12 @@
|
|||
[fRatioLimitField setHidden: YES];
|
||||
[fRatioLimitField setStringValue: @""];
|
||||
|
||||
[fInactivePopUp setEnabled: NO];
|
||||
[fInactivePopUp selectItemAtIndex: -1];
|
||||
[fInactiveLimitField setHidden: YES];
|
||||
[fInactiveLimitField setStringValue: @""];
|
||||
[fInactiveLimitLabel setHidden: YES];
|
||||
|
||||
[fPeersConnectField setEnabled: NO];
|
||||
[fPeersConnectField setStringValue: @""];
|
||||
[fPeersConnectLabel setEnabled: NO];
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
NSString * fInitialString;
|
||||
|
||||
IBOutlet NSPopUpButton * fFolderPopUp, * fIncompleteFolderPopUp, * fImportFolderPopUp;
|
||||
IBOutlet NSTextField * fRatioStopField, * fQueueDownloadField, * fQueueSeedField, * fStalledField;
|
||||
IBOutlet NSTextField * fRatioStopField, * fInactiveStopField, * fQueueDownloadField, * fQueueSeedField, * fStalledField;
|
||||
|
||||
IBOutlet NSTextField * fUploadField, * fDownloadField,
|
||||
* fSpeedLimitUploadField, * fSpeedLimitDownloadField;
|
||||
|
@ -115,8 +115,11 @@
|
|||
- (void) setRenamePartialFiles: (id) sender;
|
||||
|
||||
- (void) applyRatioSetting: (id) sender;
|
||||
- (void) updateRatioStopField;
|
||||
- (void) setRatioStop: (id) sender;
|
||||
- (void) updateRatioStopField;
|
||||
|
||||
- (void) applyInactiveStopSetting: (id) sender;
|
||||
- (void) setInactiveStop: (id) sender;
|
||||
|
||||
- (void) applySpeedSettings: (id) sender;
|
||||
- (void) applyAltSpeedSettings;
|
||||
|
|
|
@ -183,6 +183,9 @@ tr_session * fHandle;
|
|||
//set stop ratio
|
||||
[fRatioStopField setFloatValue: [fDefaults floatForKey: @"RatioLimit"]];
|
||||
|
||||
//set inactive seeding minutes
|
||||
[fInactiveStopField setIntegerValue: [fDefaults integerForKey: @"InactiveLimitMinutes"]];
|
||||
|
||||
//set limits
|
||||
[self updateLimitFields];
|
||||
|
||||
|
@ -589,11 +592,17 @@ tr_session * fHandle;
|
|||
|
||||
- (void) applyRatioSetting: (id) sender
|
||||
{
|
||||
//[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateUI" object: nil];
|
||||
tr_sessionSetRatioLimited(fHandle, [fDefaults boolForKey: @"RatioCheck"]);
|
||||
tr_sessionSetRatioLimit(fHandle, [fDefaults floatForKey: @"RatioLimit"]);
|
||||
}
|
||||
|
||||
- (void) setRatioStop: (id) sender
|
||||
{
|
||||
[fDefaults setFloat: [sender floatValue] forKey: @"RatioLimit"];
|
||||
|
||||
[self applyRatioSetting: nil];
|
||||
}
|
||||
|
||||
- (void) updateRatioStopField
|
||||
{
|
||||
if (fHasLoaded)
|
||||
|
@ -602,11 +611,17 @@ tr_session * fHandle;
|
|||
[self applyRatioSetting: nil];
|
||||
}
|
||||
|
||||
- (void) setRatioStop: (id) sender
|
||||
- (void) applyInactiveStopSetting: (id) sender
|
||||
{
|
||||
[fDefaults setFloat: [sender floatValue] forKey: @"RatioLimit"];
|
||||
tr_sessionSetInactivityLimited(fHandle, [fDefaults boolForKey: @"InactiveLimitCheck"]);
|
||||
tr_sessionSetInactiveLimit(fHandle, [fDefaults integerForKey: @"InactiveLimitMinutes"]);
|
||||
}
|
||||
|
||||
- (void) setInactiveStop: (id) sender
|
||||
{
|
||||
[fDefaults setInteger: [sender integerValue] forKey: @"InactiveLimitMinutes"];
|
||||
|
||||
[self applyRatioSetting: nil];
|
||||
[self applyInactiveStopSetting: nil];
|
||||
}
|
||||
|
||||
- (void) updateLimitFields
|
||||
|
@ -1226,6 +1241,13 @@ tr_session * fHandle;
|
|||
const float ratioLimit = tr_sessionGetRatioLimit(fHandle);
|
||||
[fDefaults setFloat: ratioLimit forKey: @"RatioLimit"];
|
||||
|
||||
//inactive seed limit
|
||||
const BOOL inactivityLimited = tr_sessionIsInactivityLimited(fHandle);
|
||||
[fDefaults setBool: inactivityLimited forKey: @"InactiveLimitCheck"];
|
||||
|
||||
const NSUInteger inactiveLimitMin = tr_sessionGetInactiveLimit(fHandle);
|
||||
[fDefaults setInteger: inactiveLimitMin forKey: @"InactiveLimitMinutes"];
|
||||
|
||||
//update gui if loaded
|
||||
if (fHasLoaded)
|
||||
{
|
||||
|
@ -1264,6 +1286,9 @@ tr_session * fHandle;
|
|||
|
||||
//ratio limit enabled handled by bindings
|
||||
[fRatioStopField setFloatValue: ratioLimit];
|
||||
|
||||
//inactivity limit enabled handled by bindings
|
||||
[fInactiveStopField setIntegerValue: inactiveLimitMin];
|
||||
}
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"SpeedLimitUpdate" object: nil];
|
||||
|
|
|
@ -98,6 +98,12 @@
|
|||
- (BOOL) seedRatioSet;
|
||||
- (CGFloat) progressStopRatio;
|
||||
|
||||
- (tr_inactvelimit) inactiveSetting;
|
||||
- (void) setInactiveSetting: (tr_inactvelimit) setting;
|
||||
- (NSUInteger) inactiveLimitMinutes;
|
||||
- (void) setInactiveLimitMinutes: (NSUInteger) limit;
|
||||
- (BOOL) seedInactiveLimitSet;
|
||||
|
||||
- (BOOL) usesSpeedLimit: (BOOL) upload;
|
||||
- (void) setUseSpeedLimit: (BOOL) use upload: (BOOL) upload;
|
||||
- (NSInteger) speedLimit: (BOOL) upload;
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
|
||||
- (void) completenessChange: (NSDictionary *) statusInfo;
|
||||
- (void) ratioLimitHit;
|
||||
- (void) inactiveLimitHit;
|
||||
- (void) metadataRetrieved;
|
||||
|
||||
- (NSString *) etaString;
|
||||
|
@ -65,6 +66,11 @@ void ratioLimitHitCallback(tr_torrent * torrent, void * torrentData)
|
|||
[(Torrent *)torrentData performSelectorOnMainThread: @selector(ratioLimitHit) withObject: nil waitUntilDone: NO];
|
||||
}
|
||||
|
||||
void inactiveLimitHitCallback(tr_torrent * torrent, void * torrentData)
|
||||
{
|
||||
[(Torrent *)torrentData performSelectorOnMainThread: @selector(inactiveLimitHit) withObject: nil waitUntilDone: NO];
|
||||
}
|
||||
|
||||
void metadataCallback(tr_torrent * torrent, void * torrentData)
|
||||
{
|
||||
[(Torrent *)torrentData performSelectorOnMainThread: @selector(metadataRetrieved) withObject: nil waitUntilDone: NO];
|
||||
|
@ -292,7 +298,7 @@ int trashDataFile(const char * filename)
|
|||
tr_torrentStart(fHandle);
|
||||
[self update];
|
||||
|
||||
//capture, specifically, ratio setting changing to unlimited
|
||||
//capture, specifically, stop-seeding settings changing to unlimited
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateOptions" object: nil];
|
||||
}
|
||||
}
|
||||
|
@ -387,6 +393,32 @@ int trashDataFile(const char * filename)
|
|||
return fStat->seedRatioPercentDone;
|
||||
}
|
||||
|
||||
- (tr_inactvelimit) inactiveSetting
|
||||
{
|
||||
return tr_torrentGetInactiveMode(fHandle);
|
||||
}
|
||||
|
||||
- (void) setInactiveSetting: (tr_inactvelimit) setting
|
||||
{
|
||||
tr_torrentSetInactiveMode(fHandle, setting);
|
||||
}
|
||||
|
||||
- (NSUInteger) inactiveLimitMinutes
|
||||
{
|
||||
return tr_torrentGetInactiveLimit(fHandle);
|
||||
}
|
||||
|
||||
- (void) setInactiveLimitMinutes: (NSUInteger) limit
|
||||
{
|
||||
NSAssert(limit > 0, @"Inactive limit must be greater than zero");
|
||||
tr_torrentSetInactiveLimit(fHandle, limit);
|
||||
}
|
||||
|
||||
- (BOOL) seedInactiveLimitSet
|
||||
{
|
||||
return tr_torrentGetSeedInactive(fHandle, NULL);
|
||||
}
|
||||
|
||||
- (BOOL) usesSpeedLimit: (BOOL) upload
|
||||
{
|
||||
return tr_torrentUsesSpeedLimit(fHandle, upload ? TR_UP : TR_DOWN);
|
||||
|
@ -980,7 +1012,7 @@ int trashDataFile(const char * filename)
|
|||
string = [downloadString stringByAppendingFormat: @", %@", uploadString];
|
||||
}
|
||||
|
||||
//add time when downloading
|
||||
//add time when downloading or seed limit set
|
||||
if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedRatioSet]))
|
||||
string = [string stringByAppendingFormat: @" - %@", [self etaString]];
|
||||
|
||||
|
@ -1129,6 +1161,7 @@ int trashDataFile(const char * filename)
|
|||
|
||||
- (NSString *) remainingTimeString
|
||||
{
|
||||
#warning update?
|
||||
if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedRatioSet]))
|
||||
return [self etaString];
|
||||
else
|
||||
|
@ -1613,6 +1646,7 @@ int trashDataFile(const char * filename)
|
|||
|
||||
tr_torrentSetCompletenessCallback(fHandle, completenessChangeCallback, self);
|
||||
tr_torrentSetRatioLimitHitCallback(fHandle, ratioLimitHitCallback, self);
|
||||
tr_torrentSetInactiveLimitHitCallback(fHandle, inactiveLimitHitCallback, self);
|
||||
tr_torrentSetMetadataCallback(fHandle, metadataCallback, self);
|
||||
|
||||
fHashString = [[NSString alloc] initWithUTF8String: fInfo->hashString];
|
||||
|
@ -1768,6 +1802,14 @@ int trashDataFile(const char * filename)
|
|||
[[NSNotificationCenter defaultCenter] postNotificationName: @"TorrentStoppedForRatio" object: self];
|
||||
}
|
||||
|
||||
- (void) inactiveLimitHit
|
||||
{
|
||||
fStat = tr_torrentStat(fHandle);
|
||||
|
||||
#warning fix
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"TorrentStoppedForRatio" object: self];
|
||||
}
|
||||
|
||||
- (void) metadataRetrieved
|
||||
{
|
||||
fStat = tr_torrentStat(fHandle);
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">10C540</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">740</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.25</string>
|
||||
<string key="IBDocument.HIToolboxVersion">458.00</string>
|
||||
<string key="IBDocument.SystemVersion">10F569</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">762</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">740</string>
|
||||
<string key="NS.object.0">762</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -43,13 +43,13 @@
|
|||
<int key="NSvFlags">258</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTextField" id="787858145">
|
||||
<object class="NSTextField" id="317277208">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{207, 54}, {45, 20}}</string>
|
||||
<string key="NSFrame">{{218, 54}, {45, 20}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="156964320">
|
||||
<object class="NSTextFieldCell" key="NSCell" id="517007757">
|
||||
<int key="NSCellFlags">-1804468671</int>
|
||||
<int key="NSCellFlags2">272761856</int>
|
||||
<object class="NSFont" key="NSSupport" id="26">
|
||||
|
@ -57,6 +57,208 @@
|
|||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">3100</int>
|
||||
</object>
|
||||
<object class="NSNumberFormatter" key="NSFormatter" id="285060614">
|
||||
<object class="NSMutableDictionary" key="NS.attributes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>allowsFloats</string>
|
||||
<string>formatterBehavior</string>
|
||||
<string>lenient</string>
|
||||
<string>maximum</string>
|
||||
<string>minimum</string>
|
||||
<string>negativeInfinitySymbol</string>
|
||||
<string>nilSymbol</string>
|
||||
<string>numberStyle</string>
|
||||
<string>positiveInfinitySymbol</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<boolean value="YES"/>
|
||||
<integer value="1040"/>
|
||||
<boolean value="NO"/>
|
||||
<real value="10000"/>
|
||||
<real value="1"/>
|
||||
<string>-∞</string>
|
||||
<string/>
|
||||
<integer value="0"/>
|
||||
<string>+∞</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NS.positiveformat">#</string>
|
||||
<string key="NS.negativeformat">#</string>
|
||||
<nil key="NS.positiveattrs"/>
|
||||
<nil key="NS.negativeattrs"/>
|
||||
<nil key="NS.zero"/>
|
||||
<object class="NSAttributedString" key="NS.nil">
|
||||
<string key="NSString"/>
|
||||
</object>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<object class="NSDictionary" key="NSAttributes" id="1014964092">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<real value="1" key="NS.min"/>
|
||||
<real value="10000" key="NS.max"/>
|
||||
<object class="NSDecimalNumberHandler" key="NS.rounding">
|
||||
<int key="NS.roundingmode">3</int>
|
||||
<bool key="NS.raise.overflow">YES</bool>
|
||||
<bool key="NS.raise.underflow">YES</bool>
|
||||
<bool key="NS.raise.dividebyzero">YES</bool>
|
||||
</object>
|
||||
<string key="NS.decimal">.</string>
|
||||
<string key="NS.thousand">,</string>
|
||||
<bool key="NS.hasthousands">NO</bool>
|
||||
<bool key="NS.localized">YES</bool>
|
||||
<bool key="NS.allowsfloats">YES</bool>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="317277208"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="246996512">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="648134242">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textColor</string>
|
||||
<object class="NSColor" key="NSColor" id="644997769">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSPopUpButton" id="110760088">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{69, 52}, {144, 22}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="669284794">
|
||||
<int key="NSCellFlags">-2076049856</int>
|
||||
<int key="NSCellFlags2">133120</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="110760088"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">1</int>
|
||||
<object class="NSFont" key="NSAlternateImage" id="292875478">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<object class="NSMutableString" key="NSKeyEquivalent">
|
||||
<characters key="NS.bytes"/>
|
||||
</object>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
<object class="NSMenuItem" key="NSMenuItem" id="424536198">
|
||||
<reference key="NSMenu" ref="719019509"/>
|
||||
<string key="NSTitle">Stop When Inactive</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="662512792">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="999867276">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="669284794"/>
|
||||
</object>
|
||||
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||
<object class="NSMenu" key="NSMenu" id="719019509">
|
||||
<object class="NSMutableString" key="NSTitle">
|
||||
<characters key="NS.bytes">OtherViews</characters>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="NSMenuItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSMenuItem" id="271264514">
|
||||
<reference key="NSMenu" ref="719019509"/>
|
||||
<string key="NSTitle">Global Setting</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="669284794"/>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="408933788">
|
||||
<reference key="NSMenu" ref="719019509"/>
|
||||
<string key="NSTitle">Unlimited</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="669284794"/>
|
||||
</object>
|
||||
<reference ref="424536198"/>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSSelectedIndex">2</int>
|
||||
<int key="NSPreferredEdge">3</int>
|
||||
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||
<bool key="NSAltersState">YES</bool>
|
||||
<int key="NSArrowPosition">1</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="919278636">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{11, 57}, {56, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="563562657">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Inactivity:</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="919278636"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="874092629">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="90083712">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<reference key="NSColor" ref="644997769"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="787858145">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{218, 76}, {45, 20}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="156964320">
|
||||
<int key="NSCellFlags">-1804468671</int>
|
||||
<int key="NSCellFlags2">272761856</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<object class="NSNumberFormatter" key="NSFormatter" id="180699713">
|
||||
<object class="NSMutableDictionary" key="NS.attributes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -95,13 +297,7 @@
|
|||
<nil key="NS.nil"/>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<object class="NSDictionary" key="NSAttributes" id="136839943">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="NSAttributes" ref="1014964092"/>
|
||||
</object>
|
||||
<integer value="0" key="NS.min"/>
|
||||
<real value="10000" key="NS.max"/>
|
||||
|
@ -119,63 +315,34 @@
|
|||
</object>
|
||||
<reference key="NSControlView" ref="787858145"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="246996512">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="648134242">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textColor</string>
|
||||
<object class="NSColor" key="NSColor" id="644997769">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="NSBackgroundColor" ref="246996512"/>
|
||||
<reference key="NSTextColor" ref="648134242"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="275413408">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 73}, {49, 17}}</string>
|
||||
<string key="NSFrame">{{9, 95}, {88, 17}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="960257683">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Seeding</string>
|
||||
<string key="NSContents">Seeding Limits</string>
|
||||
<object class="NSFont" key="NSSupport" id="27">
|
||||
<string key="NSName">LucidaGrande-Bold</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">3357</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="275413408"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="874092629">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="90083712">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<reference key="NSColor" ref="644997769"/>
|
||||
</object>
|
||||
<reference key="NSBackgroundColor" ref="874092629"/>
|
||||
<reference key="NSTextColor" ref="90083712"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="1004759797">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 159}, {117, 14}}</string>
|
||||
<string key="NSFrame">{{9, 181}, {117, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="51582947">
|
||||
|
@ -191,7 +358,7 @@
|
|||
<object class="NSTextField" id="234468111">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 197}, {46, 17}}</string>
|
||||
<string key="NSFrame">{{9, 219}, {46, 17}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="235794164">
|
||||
|
@ -207,7 +374,7 @@
|
|||
<object class="NSTextField" id="38678337">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{123, 115}, {35, 20}}</string>
|
||||
<string key="NSFrame">{{123, 137}, {35, 20}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="886515737">
|
||||
|
@ -244,7 +411,7 @@
|
|||
<nil key="NS.nil"/>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<reference key="NSAttributes" ref="136839943"/>
|
||||
<reference key="NSAttributes" ref="1014964092"/>
|
||||
</object>
|
||||
<integer value="0" key="NS.min"/>
|
||||
<real value="10000" key="NS.max"/>
|
||||
|
@ -269,7 +436,7 @@
|
|||
<object class="NSTextField" id="531478243">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{163, 118}, {29, 14}}</string>
|
||||
<string key="NSFrame">{{163, 140}, {29, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="619733085">
|
||||
|
@ -285,7 +452,7 @@
|
|||
<object class="NSTextField" id="520423397">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{123, 137}, {35, 20}}</string>
|
||||
<string key="NSFrame">{{123, 159}, {35, 20}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="668169900">
|
||||
|
@ -322,7 +489,7 @@
|
|||
<nil key="NS.nil"/>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<reference key="NSAttributes" ref="136839943"/>
|
||||
<reference key="NSAttributes" ref="1014964092"/>
|
||||
</object>
|
||||
<integer value="0" key="NS.min"/>
|
||||
<real value="10000" key="NS.max"/>
|
||||
|
@ -344,10 +511,26 @@
|
|||
<reference key="NSTextColor" ref="648134242"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="706967535">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{268, 57}, {47, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="38211108">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">minutes</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="706967535"/>
|
||||
<reference key="NSBackgroundColor" ref="874092629"/>
|
||||
<reference key="NSTextColor" ref="90083712"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="1027547097">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{163, 140}, {29, 14}}</string>
|
||||
<string key="NSFrame">{{163, 162}, {29, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1042346107">
|
||||
|
@ -363,7 +546,7 @@
|
|||
<object class="NSPopUpButton" id="705594185">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{89, 52}, {116, 22}}</string>
|
||||
<string key="NSFrame">{{69, 74}, {144, 22}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="931579513">
|
||||
|
@ -373,11 +556,7 @@
|
|||
<reference key="NSControlView" ref="705594185"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">1</int>
|
||||
<object class="NSFont" key="NSAlternateImage">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<reference key="NSAlternateImage" ref="292875478"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<object class="NSMutableString" key="NSKeyEquivalent">
|
||||
<characters key="NS.bytes"/>
|
||||
|
@ -391,14 +570,8 @@
|
|||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="632268411">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="917913453">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="931579513"/>
|
||||
</object>
|
||||
|
@ -412,12 +585,12 @@
|
|||
<reference ref="759858272"/>
|
||||
<object class="NSMenuItem" id="100083644">
|
||||
<reference key="NSMenu" ref="57997422"/>
|
||||
<string key="NSTitle">Seed Forever</string>
|
||||
<string key="NSTitle">Unlimited</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="632268411"/>
|
||||
<reference key="NSMixedImage" ref="917913453"/>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="931579513"/>
|
||||
</object>
|
||||
|
@ -427,8 +600,8 @@
|
|||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="632268411"/>
|
||||
<reference key="NSMixedImage" ref="917913453"/>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="931579513"/>
|
||||
</object>
|
||||
|
@ -443,13 +616,13 @@
|
|||
<object class="NSTextField" id="457156870">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{10, 57}, {77, 14}}</string>
|
||||
<string key="NSFrame">{{10, 79}, {35, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1061208496">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Stop Seeding:</string>
|
||||
<string key="NSContents">Ratio:</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="457156870"/>
|
||||
<reference key="NSBackgroundColor" ref="874092629"/>
|
||||
|
@ -459,7 +632,7 @@
|
|||
<object class="NSTextField" id="340525598">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 182}, {95, 14}}</string>
|
||||
<string key="NSFrame">{{9, 204}, {95, 14}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="780052505">
|
||||
|
@ -542,7 +715,7 @@
|
|||
<nil key="NS.nil"/>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<reference key="NSAttributes" ref="136839943"/>
|
||||
<reference key="NSAttributes" ref="1014964092"/>
|
||||
</object>
|
||||
<integer value="1" key="NS.min"/>
|
||||
<real value="3000" key="NS.max"/>
|
||||
|
@ -583,7 +756,7 @@
|
|||
<object class="NSButton" id="166572511">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{11, 116}, {90, 18}}</string>
|
||||
<string key="NSFrame">{{11, 138}, {90, 18}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="482789677">
|
||||
|
@ -610,7 +783,7 @@
|
|||
<object class="NSButton" id="900455097">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{11, 96}, {230, 18}}</string>
|
||||
<string key="NSFrame">{{11, 118}, {230, 18}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="582573900">
|
||||
|
@ -632,7 +805,7 @@
|
|||
<object class="NSButton" id="614569420">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{11, 138}, {106, 18}}</string>
|
||||
<string key="NSFrame">{{11, 160}, {106, 18}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="818727845">
|
||||
|
@ -654,7 +827,7 @@
|
|||
<object class="NSPopUpButton" id="529271757">
|
||||
<reference key="NSNextResponder" ref="617828785"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{106, 177}, {101, 22}}</string>
|
||||
<string key="NSFrame">{{106, 199}, {101, 22}}</string>
|
||||
<reference key="NSSuperview" ref="617828785"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="545585394">
|
||||
|
@ -679,8 +852,8 @@
|
|||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">PriorityNormal</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="632268411"/>
|
||||
<reference key="NSMixedImage" ref="917913453"/>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<int key="NSTag">1</int>
|
||||
<reference key="NSTarget" ref="545585394"/>
|
||||
|
@ -700,8 +873,8 @@
|
|||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">PriorityHigh</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="632268411"/>
|
||||
<reference key="NSMixedImage" ref="917913453"/>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="545585394"/>
|
||||
</object>
|
||||
|
@ -716,8 +889,8 @@
|
|||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">PriorityLow</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="632268411"/>
|
||||
<reference key="NSMixedImage" ref="917913453"/>
|
||||
<reference key="NSOnImage" ref="662512792"/>
|
||||
<reference key="NSMixedImage" ref="999867276"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<int key="NSTag">2</int>
|
||||
<reference key="NSTarget" ref="545585394"/>
|
||||
|
@ -732,7 +905,7 @@
|
|||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{351, 219}</string>
|
||||
<string key="NSFrameSize">{351, 241}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSMutableString" key="NSClassName">
|
||||
<characters key="NS.bytes">NSView</characters>
|
||||
|
@ -951,6 +1124,54 @@
|
|||
</object>
|
||||
<int key="connectionID">78</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="317277208"/>
|
||||
<reference key="destination" ref="1001"/>
|
||||
</object>
|
||||
<int key="connectionID">90</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">fInactivePopUp</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="110760088"/>
|
||||
</object>
|
||||
<int key="connectionID">93</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">fInactiveLimitField</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="317277208"/>
|
||||
</object>
|
||||
<int key="connectionID">94</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">setInactiveLimit:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="317277208"/>
|
||||
</object>
|
||||
<int key="connectionID">95</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">setInactiveSetting:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="110760088"/>
|
||||
</object>
|
||||
<int key="connectionID">96</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">fInactiveLimitLabel</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="706967535"/>
|
||||
</object>
|
||||
<int key="connectionID">101</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
|
@ -1003,6 +1224,10 @@
|
|||
<reference ref="38678337"/>
|
||||
<reference ref="1004759797"/>
|
||||
<reference ref="275413408"/>
|
||||
<reference ref="919278636"/>
|
||||
<reference ref="110760088"/>
|
||||
<reference ref="317277208"/>
|
||||
<reference ref="706967535"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Options</string>
|
||||
|
@ -1369,6 +1594,101 @@
|
|||
<reference key="object" ref="884480943"/>
|
||||
<reference key="parent" ref="355652245"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">79</int>
|
||||
<reference key="object" ref="919278636"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="563562657"/>
|
||||
</object>
|
||||
<reference key="parent" ref="617828785"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">80</int>
|
||||
<reference key="object" ref="110760088"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="669284794"/>
|
||||
</object>
|
||||
<reference key="parent" ref="617828785"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">81</int>
|
||||
<reference key="object" ref="317277208"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="517007757"/>
|
||||
</object>
|
||||
<reference key="parent" ref="617828785"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">82</int>
|
||||
<reference key="object" ref="517007757"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="285060614"/>
|
||||
</object>
|
||||
<reference key="parent" ref="317277208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">83</int>
|
||||
<reference key="object" ref="285060614"/>
|
||||
<reference key="parent" ref="517007757"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">84</int>
|
||||
<reference key="object" ref="669284794"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="719019509"/>
|
||||
</object>
|
||||
<reference key="parent" ref="110760088"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">85</int>
|
||||
<reference key="object" ref="719019509"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="424536198"/>
|
||||
<reference ref="271264514"/>
|
||||
<reference ref="408933788"/>
|
||||
</object>
|
||||
<reference key="parent" ref="669284794"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">86</int>
|
||||
<reference key="object" ref="424536198"/>
|
||||
<reference key="parent" ref="719019509"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">87</int>
|
||||
<reference key="object" ref="271264514"/>
|
||||
<reference key="parent" ref="719019509"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">88</int>
|
||||
<reference key="object" ref="408933788"/>
|
||||
<reference key="parent" ref="719019509"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">89</int>
|
||||
<reference key="object" ref="563562657"/>
|
||||
<reference key="parent" ref="919278636"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">97</int>
|
||||
<reference key="object" ref="706967535"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="38211108"/>
|
||||
</object>
|
||||
<reference key="parent" ref="617828785"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">98</int>
|
||||
<reference key="object" ref="38211108"/>
|
||||
<reference key="parent" ref="706967535"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
|
@ -1455,9 +1775,33 @@
|
|||
<string>52.IBPluginDependency</string>
|
||||
<string>6.IBPluginDependency</string>
|
||||
<string>7.IBPluginDependency</string>
|
||||
<string>79.IBPluginDependency</string>
|
||||
<string>79.ImportedFromIB2</string>
|
||||
<string>8.IBPluginDependency</string>
|
||||
<string>80.IBPluginDependency</string>
|
||||
<string>80.ImportedFromIB2</string>
|
||||
<string>81.IBPluginDependency</string>
|
||||
<string>81.ImportedFromIB2</string>
|
||||
<string>82.IBPluginDependency</string>
|
||||
<string>83.IBNumberFormatterBehaviorMetadataKey</string>
|
||||
<string>83.IBNumberFormatterLocalizesFormatMetadataKey</string>
|
||||
<string>83.IBPluginDependency</string>
|
||||
<string>84.IBPluginDependency</string>
|
||||
<string>85.IBEditorWindowLastContentRect</string>
|
||||
<string>85.IBPluginDependency</string>
|
||||
<string>85.ImportedFromIB2</string>
|
||||
<string>86.IBPluginDependency</string>
|
||||
<string>86.ImportedFromIB2</string>
|
||||
<string>87.IBPluginDependency</string>
|
||||
<string>87.ImportedFromIB2</string>
|
||||
<string>88.IBPluginDependency</string>
|
||||
<string>88.ImportedFromIB2</string>
|
||||
<string>89.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
<string>9.ImportedFromIB2</string>
|
||||
<string>97.IBPluginDependency</string>
|
||||
<string>97.ImportedFromIB2</string>
|
||||
<string>98.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -1485,7 +1829,7 @@
|
|||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>{{256, 611}, {351, 219}}</string>
|
||||
<string>{{256, 589}, {351, 241}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>{{519, 803}, {351, 160}}</string>
|
||||
|
@ -1515,7 +1859,7 @@
|
|||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{334, 634}, {138, 54}}</string>
|
||||
<string>{{314, 631}, {143, 54}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -1542,8 +1886,32 @@
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1041"/>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{314, 609}, {161, 54}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
|
@ -1562,7 +1930,7 @@
|
|||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">78</int>
|
||||
<int key="maxID">101</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
@ -1582,6 +1950,8 @@
|
|||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>setInactiveLimit:</string>
|
||||
<string>setInactiveSetting:</string>
|
||||
<string>setPeersConnectLimit:</string>
|
||||
<string>setPriority:</string>
|
||||
<string>setRatioLimit:</string>
|
||||
|
@ -1599,6 +1969,8 @@
|
|||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
|
@ -1609,8 +1981,10 @@
|
|||
<string>fDownloadLimitField</string>
|
||||
<string>fDownloadLimitLabel</string>
|
||||
<string>fGlobalLimitCheck</string>
|
||||
<string>fInactiveLimitField</string>
|
||||
<string>fInactiveLimitLabel</string>
|
||||
<string>fInactivePopUp</string>
|
||||
<string>fPeersConnectField</string>
|
||||
<string>fPeersConnectLabel</string>
|
||||
<string>fPriorityPopUp</string>
|
||||
<string>fRatioLimitField</string>
|
||||
<string>fRatioPopUp</string>
|
||||
|
@ -1629,6 +2003,8 @@
|
|||
<string>NSPopUpButton</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSPopUpButton</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSPopUpButton</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSTextField</string>
|
||||
|
@ -2206,6 +2582,7 @@
|
|||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1060" key="NS.object.0"/>
|
||||
|
@ -2217,5 +2594,26 @@
|
|||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../../Transmission.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSMenuCheckmark</string>
|
||||
<string>NSMenuMixedState</string>
|
||||
<string>NSSwitch</string>
|
||||
<string>PriorityHigh</string>
|
||||
<string>PriorityLow</string>
|
||||
<string>PriorityNormal</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{9, 8}</string>
|
||||
<string>{7, 2}</string>
|
||||
<string>{15, 15}</string>
|
||||
<string>{14, 14}</string>
|
||||
<string>{14, 14}</string>
|
||||
<string>{14, 14}</string>
|
||||
</object>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10D573</string>
|
||||
<string key="IBDocument.SystemVersion">10F569</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">762</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">460.00</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">762</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="1361"/>
|
||||
<integer value="256"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -433,7 +433,7 @@
|
|||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="314557528">
|
||||
<nil key="NSNextResponder"/>
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -446,7 +446,7 @@
|
|||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTabViewItem" id="73412354">
|
||||
<object class="NSView" key="NSView" id="833882848">
|
||||
<reference key="NSNextResponder" ref="463462813"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -961,7 +961,6 @@
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {496, 272}}</string>
|
||||
<reference key="NSSuperview" ref="463462813"/>
|
||||
</object>
|
||||
<string key="NSLabel">Adding</string>
|
||||
<reference key="NSColor" ref="977951849"/>
|
||||
|
@ -969,14 +968,14 @@
|
|||
</object>
|
||||
<object class="NSTabViewItem" id="298493360">
|
||||
<object class="NSView" key="NSView" id="159788047">
|
||||
<nil key="NSNextResponder"/>
|
||||
<reference key="NSNextResponder" ref="463462813"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTextField" id="192996348">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{311, 180}, {35, 22}}</string>
|
||||
<string key="NSFrame">{{311, 154}, {35, 22}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="283641828">
|
||||
|
@ -1059,7 +1058,7 @@
|
|||
<object class="NSTextField" id="977701368">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{41, 182}, {56, 17}}</string>
|
||||
<string key="NSFrame">{{41, 156}, {56, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1040746680">
|
||||
|
@ -1075,7 +1074,7 @@
|
|||
<object class="NSTextField" id="271336507">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{351, 182}, {101, 17}}</string>
|
||||
<string key="NSFrame">{{351, 156}, {101, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="506158787">
|
||||
|
@ -1176,16 +1175,110 @@
|
|||
<reference key="NSTextColor" ref="430340990"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="457261886">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{105, 197}, {220, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="1020157033">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Stop seeding when inactive for:</string>
|
||||
<reference key="NSSupport" ref="86725571"/>
|
||||
<reference key="NSControlView" ref="457261886"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="1001726176"/>
|
||||
<reference key="NSAlternateImage" ref="764913887"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="430240209">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{331, 196}, {41, 22}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="279439304">
|
||||
<int key="NSCellFlags">-1804468671</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<reference key="NSSupport" ref="86725571"/>
|
||||
<object class="NSNumberFormatter" key="NSFormatter" id="840222534">
|
||||
<object class="NSMutableDictionary" key="NS.attributes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>allowsFloats</string>
|
||||
<string>formatterBehavior</string>
|
||||
<string>lenient</string>
|
||||
<string>locale</string>
|
||||
<string>maximum</string>
|
||||
<string>minimum</string>
|
||||
<string>negativeInfinitySymbol</string>
|
||||
<string>nilSymbol</string>
|
||||
<string>numberStyle</string>
|
||||
<string>positiveInfinitySymbol</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<boolean value="YES"/>
|
||||
<integer value="1040"/>
|
||||
<boolean value="YES"/>
|
||||
<reference ref="260779128"/>
|
||||
<real value="10000"/>
|
||||
<real value="1"/>
|
||||
<string>-∞</string>
|
||||
<string/>
|
||||
<integer value="0"/>
|
||||
<string>+∞</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NS.positiveformat">#</string>
|
||||
<string key="NS.negativeformat">#</string>
|
||||
<nil key="NS.positiveattrs"/>
|
||||
<nil key="NS.negativeattrs"/>
|
||||
<nil key="NS.zero"/>
|
||||
<object class="NSAttributedString" key="NS.nil">
|
||||
<string key="NSString"/>
|
||||
</object>
|
||||
<object class="NSAttributedString" key="NS.nan">
|
||||
<string key="NSString">NaN</string>
|
||||
<reference key="NSAttributes" ref="72222796"/>
|
||||
</object>
|
||||
<real value="1" key="NS.min"/>
|
||||
<real value="10000" key="NS.max"/>
|
||||
<object class="NSDecimalNumberHandler" key="NS.rounding">
|
||||
<int key="NS.roundingmode">3</int>
|
||||
<bool key="NS.raise.overflow">YES</bool>
|
||||
<bool key="NS.raise.underflow">YES</bool>
|
||||
<bool key="NS.raise.dividebyzero">YES</bool>
|
||||
</object>
|
||||
<string key="NS.decimal">.</string>
|
||||
<string key="NS.thousand">,</string>
|
||||
<bool key="NS.hasthousands">NO</bool>
|
||||
<bool key="NS.localized">NO</bool>
|
||||
<bool key="NS.allowsfloats">YES</bool>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="430240209"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<reference key="NSBackgroundColor" ref="317620196"/>
|
||||
<reference key="NSTextColor" ref="430340990"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="926230950">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{24, 242}, {73, 17}}</string>
|
||||
<string key="NSFrame">{{50, 242}, {47, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1052593840">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">4194304</int>
|
||||
<string key="NSContents">Automatic:</string>
|
||||
<string key="NSContents">Limits:</string>
|
||||
<reference key="NSSupport" ref="86725571"/>
|
||||
<reference key="NSControlView" ref="926230950"/>
|
||||
<reference key="NSBackgroundColor" ref="977951849"/>
|
||||
|
@ -1223,7 +1316,7 @@
|
|||
<object class="NSButton" id="959697936">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{100, 181}, {205, 18}}</string>
|
||||
<string key="NSFrame">{{100, 155}, {205, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="415355814">
|
||||
|
@ -1245,7 +1338,7 @@
|
|||
<object class="NSTextField" id="642835928">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{297, 154}, {35, 22}}</string>
|
||||
<string key="NSFrame">{{297, 128}, {35, 22}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="440983450">
|
||||
|
@ -1308,7 +1401,7 @@
|
|||
<object class="NSTextField" id="929631251">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{337, 156}, {101, 17}}</string>
|
||||
<string key="NSFrame">{{337, 130}, {101, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="153425121">
|
||||
|
@ -1324,7 +1417,7 @@
|
|||
<object class="NSButton" id="802622975">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{100, 155}, {191, 18}}</string>
|
||||
<string key="NSFrame">{{100, 129}, {191, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="265029926">
|
||||
|
@ -1346,7 +1439,7 @@
|
|||
<object class="NSTextField" id="805721613">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{374, 128}, {41, 22}}</string>
|
||||
<string key="NSFrame">{{374, 102}, {41, 22}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="997390601">
|
||||
|
@ -1359,20 +1452,30 @@
|
|||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>allowsFloats</string>
|
||||
<string>currencySymbol</string>
|
||||
<string>formatterBehavior</string>
|
||||
<string>locale</string>
|
||||
<string>internationalCurrencySymbol</string>
|
||||
<string>lenient</string>
|
||||
<string>maximum</string>
|
||||
<string>minimum</string>
|
||||
<string>minimumIntegerDigits</string>
|
||||
<string>negativeFormat</string>
|
||||
<string>numberStyle</string>
|
||||
<string>positiveFormat</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="0"/>
|
||||
<boolean value="NO"/>
|
||||
<string>¤</string>
|
||||
<integer value="1040"/>
|
||||
<reference ref="260779128"/>
|
||||
<string>¤¤</string>
|
||||
<boolean value="NO"/>
|
||||
<real value="10000"/>
|
||||
<real value="1"/>
|
||||
<real value="1"/>
|
||||
<integer value="1"/>
|
||||
<string>#0</string>
|
||||
<integer value="0"/>
|
||||
<string>#0</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NS.positiveformat">#0</string>
|
||||
|
@ -1396,7 +1499,7 @@
|
|||
<string key="NS.decimal">.</string>
|
||||
<string key="NS.thousand">,</string>
|
||||
<bool key="NS.hasthousands">NO</bool>
|
||||
<bool key="NS.localized">NO</bool>
|
||||
<bool key="NS.localized">YES</bool>
|
||||
<bool key="NS.allowsfloats">NO</bool>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="805721613"/>
|
||||
|
@ -1408,7 +1511,7 @@
|
|||
<object class="NSTextField" id="452040825">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{420, 130}, {55, 17}}</string>
|
||||
<string key="NSFrame">{{420, 104}, {55, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="416442895">
|
||||
|
@ -1424,7 +1527,7 @@
|
|||
<object class="NSButton" id="605552642">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{100, 129}, {268, 18}}</string>
|
||||
<string key="NSFrame">{{100, 103}, {268, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="983632896">
|
||||
|
@ -1446,7 +1549,7 @@
|
|||
<object class="NSTextField" id="489294512">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{20, 90}, {77, 17}}</string>
|
||||
<string key="NSFrame">{{20, 64}, {77, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="146274476">
|
||||
|
@ -1462,7 +1565,7 @@
|
|||
<object class="NSPopUpButton" id="986412145">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{298, 84}, {130, 26}}</string>
|
||||
<string key="NSFrame">{{298, 58}, {130, 26}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="705215561">
|
||||
|
@ -1514,7 +1617,7 @@
|
|||
<object class="NSButton" id="144778876">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{100, 64}, {183, 18}}</string>
|
||||
<string key="NSFrame">{{100, 38}, {183, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="665924860">
|
||||
|
@ -1536,7 +1639,7 @@
|
|||
<object class="NSPopUpButton" id="1042395974">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{298, 59}, {130, 26}}</string>
|
||||
<string key="NSFrame">{{298, 33}, {130, 26}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="301407755">
|
||||
|
@ -1584,7 +1687,7 @@
|
|||
<object class="NSButton" id="630340288">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{100, 89}, {195, 18}}</string>
|
||||
<string key="NSFrame">{{100, 63}, {195, 18}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="1000733872">
|
||||
|
@ -1603,26 +1706,44 @@
|
|||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="654576556">
|
||||
<reference key="NSNextResponder" ref="159788047"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{377, 198}, {55, 17}}</string>
|
||||
<reference key="NSSuperview" ref="159788047"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="517021610">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">minutes</string>
|
||||
<reference key="NSSupport" ref="86725571"/>
|
||||
<reference key="NSControlView" ref="654576556"/>
|
||||
<reference key="NSBackgroundColor" ref="977951849"/>
|
||||
<reference key="NSTextColor" ref="400627124"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {496, 272}}</string>
|
||||
<reference key="NSSuperview" ref="463462813"/>
|
||||
</object>
|
||||
<string key="NSLabel">Management</string>
|
||||
<reference key="NSColor" ref="977951849"/>
|
||||
<reference key="NSTabView" ref="463462813"/>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="NSSelectedTabViewItem" ref="73412354"/>
|
||||
<reference key="NSSelectedTabViewItem" ref="298493360"/>
|
||||
<reference key="NSFont" ref="86725571"/>
|
||||
<int key="NSTvFlags">0</int>
|
||||
<bool key="NSAllowTruncatedLabels">YES</bool>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="833882848"/>
|
||||
<reference ref="159788047"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{542, 331}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
|
@ -1712,7 +1833,7 @@ eNcdg+B/jfSiABDBAmGkCTGQKN5CVjECL6QolJAi7kCNMQJgBAn+ECM7HokZCCAgAA8BAAADAAAAAQAS
|
|||
AAABAQADAAAAAQASAAABAgADAAAABAAABSIBAwADAAAAAQAFAAABBgADAAAAAQACAAABEQAEAAAAAQAA
|
||||
AAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQASAAABFwAEAAAAAQAABGABHAADAAAAAQAB
|
||||
AAABPQADAAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAABSqHcwAHAAAYmAAABTIAAAAAAAgACAAI
|
||||
AAgAAQABAAEAAQAAGJhhcHBsAhAAAG1udHJSR0IgWFlaIAfaAAMAHQAXABYADWFjc3BBUFBMAAAAAAAA
|
||||
AAgAAQABAAEAAQAAGJhhcHBsAhAAAG1udHJSR0IgWFlaIAfaAAYAGgAKAB0ANWFjc3BBUFBMAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAAYmRzY20AAAG0AAAA8GNwcnQAAAKkAAAA0Hd0
|
||||
cHQAAAN0AAAAFHJYWVoAAAOIAAAAFGdYWVoAAAOcAAAAFGJYWVoAAAOwAAAAFHJUUkMAAAPEAAAIDGFh
|
||||
|
@ -2948,7 +3069,7 @@ AAABAAAAAQ</bytes>
|
|||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="538122014">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -3442,7 +3563,6 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{542, 342}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
<string key="NSExtension">NSResponder</string>
|
||||
</object>
|
||||
|
@ -7904,6 +8024,94 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
<int key="connectionID">1957</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">nextKeyView</string>
|
||||
<reference key="source" ref="430240209"/>
|
||||
<reference key="destination" ref="192996348"/>
|
||||
</object>
|
||||
<int key="connectionID">1963</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="430240209"/>
|
||||
<reference key="destination" ref="511492310"/>
|
||||
</object>
|
||||
<int key="connectionID">1964</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.CheckStalled</string>
|
||||
<reference key="source" ref="654576556"/>
|
||||
<reference key="destination" ref="356871564"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="654576556"/>
|
||||
<reference key="NSDestination" ref="356871564"/>
|
||||
<string key="NSLabel">enabled: values.CheckStalled</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.CheckStalled</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">1971</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">applyInactiveStopSetting:</string>
|
||||
<reference key="source" ref="511492310"/>
|
||||
<reference key="destination" ref="457261886"/>
|
||||
</object>
|
||||
<int key="connectionID">1972</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.InactiveLimitCheck</string>
|
||||
<reference key="source" ref="457261886"/>
|
||||
<reference key="destination" ref="356871564"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="457261886"/>
|
||||
<reference key="NSDestination" ref="356871564"/>
|
||||
<string key="NSLabel">value: values.InactiveLimitCheck</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.InactiveLimitCheck</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">1973</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.InactiveLimitCheck</string>
|
||||
<reference key="source" ref="430240209"/>
|
||||
<reference key="destination" ref="356871564"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="430240209"/>
|
||||
<reference key="NSDestination" ref="356871564"/>
|
||||
<string key="NSLabel">enabled: values.InactiveLimitCheck</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.InactiveLimitCheck</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">1974</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">setInactiveStop:</string>
|
||||
<reference key="source" ref="511492310"/>
|
||||
<reference key="destination" ref="430240209"/>
|
||||
</object>
|
||||
<int key="connectionID">1975</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">fInactiveStopField</string>
|
||||
<reference key="source" ref="511492310"/>
|
||||
<reference key="destination" ref="430240209"/>
|
||||
</object>
|
||||
<int key="connectionID">1976</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
|
@ -8257,6 +8465,9 @@ AAABAAAAAQ</bytes>
|
|||
<reference ref="144778876"/>
|
||||
<reference ref="1042395974"/>
|
||||
<reference ref="630340288"/>
|
||||
<reference ref="457261886"/>
|
||||
<reference ref="430240209"/>
|
||||
<reference ref="654576556"/>
|
||||
</object>
|
||||
<reference key="parent" ref="298493360"/>
|
||||
</object>
|
||||
|
@ -10721,6 +10932,57 @@ AAABAAAAAQ</bytes>
|
|||
<reference key="object" ref="548071836"/>
|
||||
<reference key="parent" ref="1042006550"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1958</int>
|
||||
<reference key="object" ref="457261886"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1020157033"/>
|
||||
</object>
|
||||
<reference key="parent" ref="159788047"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1959</int>
|
||||
<reference key="object" ref="430240209"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="279439304"/>
|
||||
</object>
|
||||
<reference key="parent" ref="159788047"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1960</int>
|
||||
<reference key="object" ref="279439304"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="840222534"/>
|
||||
</object>
|
||||
<reference key="parent" ref="430240209"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1961</int>
|
||||
<reference key="object" ref="840222534"/>
|
||||
<reference key="parent" ref="279439304"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1962</int>
|
||||
<reference key="object" ref="1020157033"/>
|
||||
<reference key="parent" ref="457261886"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1969</int>
|
||||
<reference key="object" ref="654576556"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="517021610"/>
|
||||
</object>
|
||||
<reference key="parent" ref="159788047"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1970</int>
|
||||
<reference key="object" ref="517021610"/>
|
||||
<reference key="parent" ref="654576556"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
|
@ -11127,8 +11389,23 @@ AAABAAAAAQ</bytes>
|
|||
<string>1951.IBPluginDependency</string>
|
||||
<string>1951.ImportedFromIB2</string>
|
||||
<string>1952.IBPluginDependency</string>
|
||||
<string>1958.IBPluginDependency</string>
|
||||
<string>1958.ImportedFromIB2</string>
|
||||
<string>1959.IBPluginDependency</string>
|
||||
<string>1959.ImportedFromIB2</string>
|
||||
<string>196.IBPluginDependency</string>
|
||||
<string>196.ImportedFromIB2</string>
|
||||
<string>1960.IBPluginDependency</string>
|
||||
<string>1961.IBNumberFormatterBehaviorMetadataKey</string>
|
||||
<string>1961.IBNumberFormatterLocalizesFormatMetadataKey</string>
|
||||
<string>1961.IBNumberFormatterSampleNumberKey</string>
|
||||
<string>1961.IBPluginDependency</string>
|
||||
<string>1961.ImportedFromIB2</string>
|
||||
<string>1962.IBPluginDependency</string>
|
||||
<string>1969.CustomClassName</string>
|
||||
<string>1969.IBPluginDependency</string>
|
||||
<string>1969.ImportedFromIB2</string>
|
||||
<string>1970.IBPluginDependency</string>
|
||||
<string>198.IBPluginDependency</string>
|
||||
<string>198.ImportedFromIB2</string>
|
||||
<string>199.IBPluginDependency</string>
|
||||
|
@ -11312,6 +11589,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>921.IBNumberFormatterLocalizesFormatMetadataKey</string>
|
||||
<string>921.IBPluginDependency</string>
|
||||
<string>921.ImportedFromIB2</string>
|
||||
<string>922.IBNumberFormatterBehaviorMetadataKey</string>
|
||||
<string>922.IBNumberFormatterLocalizesFormatMetadataKey</string>
|
||||
<string>922.IBPluginDependency</string>
|
||||
<string>922.ImportedFromIB2</string>
|
||||
|
@ -11740,6 +12018,21 @@ AAABAAAAAQ</bytes>
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1041"/>
|
||||
<boolean value="YES"/>
|
||||
<real value="5"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>ColorTextField</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
|
@ -11925,6 +12218,7 @@ AAABAAAAAQ</bytes>
|
|||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
<integer value="1040"/>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<real value="1"/>
|
||||
|
@ -11961,7 +12255,7 @@ AAABAAAAAQ</bytes>
|
|||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">1957</int>
|
||||
<int key="maxID">1976</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
@ -12109,6 +12403,7 @@ AAABAAAAAQ</bytes>
|
|||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>addRemoveRPCIP:</string>
|
||||
<string>applyInactiveStopSetting:</string>
|
||||
<string>applyRatioSetting:</string>
|
||||
<string>applySpeedSettings:</string>
|
||||
<string>folderSheetShow:</string>
|
||||
|
@ -12135,6 +12430,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>setDownloadLocation:</string>
|
||||
<string>setEncryptionMode:</string>
|
||||
<string>setGlobalLimit:</string>
|
||||
<string>setInactiveStop:</string>
|
||||
<string>setLPD:</string>
|
||||
<string>setNat:</string>
|
||||
<string>setPEX:</string>
|
||||
|
@ -12227,6 +12523,8 @@ AAABAAAAAQ</bytes>
|
|||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
|
@ -12243,6 +12541,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>fGeneralView</string>
|
||||
<string>fGroupsView</string>
|
||||
<string>fImportFolderPopUp</string>
|
||||
<string>fInactiveStopField</string>
|
||||
<string>fIncompleteFolderPopUp</string>
|
||||
<string>fNatCheck</string>
|
||||
<string>fNetworkView</string>
|
||||
|
@ -12283,6 +12582,7 @@ AAABAAAAAQ</bytes>
|
|||
<string>NSView</string>
|
||||
<string>NSView</string>
|
||||
<string>NSPopUpButton</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSPopUpButton</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSView</string>
|
||||
|
|
Loading…
Reference in New Issue